Quelles classes doivent garder leur nom ?
Collez le descripteur de votre plugin ou mod avant d'obfusquer le JAR. Il est lu dans votre navigateur ; rien n'est envoyé.
- Dans votre navigateur
- Paper, Spigot, BungeeCord, Velocity, Fabric
Collez un descripteur pour voir la réponse
plugin.yml, paper-plugin.yml, bungee.yml, velocity-plugin.json ou fabric.mod.json. Ou choisissez-en un dans Exemples.
Ce qui est toujours conservé de toute façon
Le Main-Class du manifeste, les fournisseurs META-INF/services, les gestionnaires d'événements (@EventHandler, @Subscribe), les enums, les membres sérialisables et les classes @Mod de Forge.
Ce que vous seul pouvez savoir (réflexion, noms dans les fichiers de configuration)
Les classes que vous chargez par leur nom (Class.forName, réflexion, noms dans vos fichiers de configuration) et les champs qu'une bibliothèque JSON associe par nom.
Obfusquez ensuite le JAR dans un compte gratuit : ProGuard, yGuard ou Skidfuscator, avec ces noms conservés. 3 exécutions par mois.Obfusquez ensuite le JAR dans un compte gratuit.Importer un JAR
Le même plugin. Bien plus difficile à lire.
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
Renomme classes, champs et méthodes. Par défaut ; fonctionne avec presque tous les plugins.
Skidfuscator
Ajoute l'obfuscation du flux de contrôle et le chiffrement des chaînes au renommage.
Maximal
ProGuard, puis Skidfuscator : le plus fort, pour les plugins qui valent un test de plus.
Vos questions, nos réponses
Pourquoi certaines classes doivent-elles garder leur nom ?
Le serveur les charge par leur nom depuis votre descripteur : la classe principale de plugin.yml, les points d'entrée Fabric, les mixins. Renommez-les et le plugin ne se charge plus. Tout le reste peut être renommé.
Dois-je écrire moi-même les règles de conservation ?
Rarement. SunLicense lit votre jar et conserve de lui-même la classe principale, les mains Velocity et BungeeCord, les points d'entrée et mixins Fabric, les fournisseurs de services, les gestionnaires d'événements et les enums. Ce vérificateur montre ce qu'il vous reste à faire, comme un bootstrapper Paper.
Quels obfuscateurs SunLicense utilise-t-il ?
ProGuard (par défaut), yGuard et Skidfuscator, qui ajoute l'obfuscation du flux de contrôle et le chiffrement des chaînes, ou Maximal, qui exécute ProGuard puis Skidfuscator. Vous recevez un fichier de correspondance pour lire vos propres traces d'appels.
Mon descripteur est-il envoyé ?
Non. Le vérificateur le lit dans votre navigateur ; rien n'est envoyé.
Combien ça coûte
Le forfait Free inclut 3 obfuscations par mois, avec clés de licence et limites d'appareils pour le même plugin. Lite et Standard en incluent davantage.
SunLicense