SunLicense

Welche Klassen müssen ihre Namen behalten?

Füge den Descriptor deines Plugins oder Mods ein, bevor du das Jar obfuskierst. Er wird in deinem Browser gelesen; es wird nichts hochgeladen.

  • In deinem Browser
  • Paper, Spigot, BungeeCord, Velocity, Fabric

Füge einen Descriptor ein, um die Antwort zu sehen

plugin.yml, paper-plugin.yml, bungee.yml, velocity-plugin.json oder fabric.mod.json. Oder wähle eines aus den Beispielen.

Was ohnehin immer erhalten bleibt

Die Main-Class im Manifest, Provider in META-INF/services, Event-Handler (@EventHandler, @Subscribe), Enums, serialisierbare Member und Forge-@Mod-Klassen.

Was nur du wissen kannst (Reflection, Namen in Konfigurationsdateien)

Klassen, die du per Name lädst (Class.forName, Reflection, Namen in deinen Konfigdateien), und Felder, die eine JSON-Bibliothek per Name zuordnet.

Obfuskiere das Jar dann in einem kostenlosen Konto.Jar hochladen

Dasselbe Plugin. Viel schwerer zu lesen.

Dein Code
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;
    }
}
Nach der Obfuskierung (dekompiliert)
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

Benennt Klassen, Felder und Methoden um. Der Standard; funktioniert mit fast jedem Plugin.

Skidfuscator

Ergänzt das Umbenennen um Kontrollfluss-Obfuskierung und verschlüsselte Strings.

Maximal

Erst ProGuard, dann Skidfuscator: am stärksten, für Plugins, die den zusätzlichen Test wert sind.

Fragen, beantwortet

Warum müssen manche Klassen ihre Namen behalten?

Der Server lädt sie per Name aus deinem Deskriptor: die Hauptklasse aus plugin.yml, Fabric-Einstiegspunkte, Mixins. Benennst du sie um, lädt das Plugin nicht mehr. Alles andere kann umbenannt werden.

Muss ich Keep-Regeln selbst schreiben?

Meistens nicht. SunLicense liest dein JAR und behält von selbst die Hauptklasse, die Mains von Velocity und BungeeCord, Fabric-Einstiegspunkte und Mixins, Service-Provider, Event-Handler und Enums. Dieser Check zeigt, was für dich übrig bleibt, etwa ein Paper-Bootstrapper.

Welche Obfuskatoren nutzt SunLicense?

ProGuard (Standard), yGuard und Skidfuscator, das Kontrollfluss-Obfuskierung und String-Verschlüsselung ergänzt, oder Maximal, das erst ProGuard und dann Skidfuscator ausführt. Du bekommst eine Mapping-Datei, um deine eigenen Stacktraces zu lesen.

Wird mein Deskriptor hochgeladen?

Nein. Der Check liest ihn in deinem Browser; nichts wird irgendwohin gesendet.

Was kostet es?

Der Free-Plan enthält 3 Obfuskierungen im Monat, mit Lizenzschlüsseln und Gerätelimits für dasselbe Plugin. Lite und Standard enthalten mehr Durchläufe.

Zum Obfuskierungs-Guide

Weitere kostenlose Tools