Quais classes precisam manter os nomes?
Cole o descritor do seu plugin ou mod antes de ofuscar o jar. Ele é lido no seu navegador; nada é enviado.
- No seu navegador
- Paper, Spigot, BungeeCord, Velocity, Fabric
Cole um descritor para ver a resposta
plugin.yml, paper-plugin.yml, bungee.yml, velocity-plugin.json ou fabric.mod.json. Ou escolha um em Exemplos.
O que sempre é mantido de qualquer forma
O Main-Class do manifest, provedores em META-INF/services, handlers de eventos (@EventHandler, @Subscribe), enums, membros serializáveis e classes @Mod do Forge.
O que só você pode saber (reflexão, nomes em arquivos de config)
Classes que você carrega pelo nome (Class.forName, reflexão, nomes nos seus arquivos de configuração) e campos que uma biblioteca JSON mapeia pelo nome.
Depois ofusque o jar em uma conta gratuita: ProGuard, yGuard ou Skidfuscator, com estes nomes mantidos. 3 execuções por mês.Depois ofusque o jar em uma conta gratuita.Enviar um jar
O mesmo plugin. Muito mais difícil de ler.
public final class AuctionPlugin extends JavaPlugin {
private final Map<UUID, Listing> listings = new HashMap<>();
@Override
public void onEnable() {
getCommand("ah").setExecutor(new AuctionCommand(this));
}
boolean canAfford(Player player, double price) {
return economy.getBalance(player) >= price;
}
}public final class AuctionPlugin extends JavaPlugin {
private final Map<UUID, a> a = new HashMap<>();
@Override
public void onEnable() {
this.getCommand(b.a("\u0d4f\u0d4a")).setExecutor(new c(this));
}
boolean a(Player var1, double var2) {
return d.a.getBalance(var1) >= var2;
}
}ProGuard
Renomeia classes, campos e métodos. O padrão; funciona com quase todo plugin.
Skidfuscator
Adiciona ofuscação de fluxo de controle e strings criptografadas à renomeação.
Máximo
ProGuard e depois Skidfuscator: o mais forte, para plugins que valem o teste extra.
Perguntas respondidas
Por que algumas classes precisam manter o nome?
O servidor as carrega pelo nome a partir do seu descritor: a classe principal do plugin.yml, os pontos de entrada do Fabric, os mixins. Renomeie-as e o plugin não carrega mais. Todo o resto pode ser renomeado.
Preciso escrever as regras de manutenção de nomes eu mesmo?
Quase nunca. O SunLicense lê seu jar e mantém sozinho a classe principal, os mains do Velocity e do BungeeCord, os pontos de entrada e mixins do Fabric, os provedores de serviço, os handlers de eventos e os enums. Este verificador mostra o que sobra para você, como um bootstrapper do Paper.
Quais ofuscadores o SunLicense usa?
ProGuard (o padrão), yGuard e Skidfuscator, que adiciona ofuscação de fluxo de controle e criptografia de strings, ou Máximo, que roda o ProGuard e depois o Skidfuscator. Você recebe um arquivo de mapeamento para ler seus próprios stack traces.
Meu descritor é enviado?
Não. O verificador lê no seu navegador; nada é enviado.
Quanto custa?
O plano Free inclui 3 ofuscações por mês, com chaves de licença e limites de dispositivos para o mesmo plugin. Lite e Standard incluem mais execuções.
SunLicense