SunLicense

Какие классы должны сохранить свои имена?

Вставьте дескриптор вашего плагина или мода перед обфускацией jar. Он читается в вашем браузере; ничего не загружается.

  • В браузере
  • Paper, Spigot, BungeeCord, Velocity, Fabric

Вставьте дескриптор, чтобы увидеть ответ

plugin.yml, paper-plugin.yml, bungee.yml, velocity-plugin.json или fabric.mod.json. Либо выберите один из примеров.

Что сохраняется всегда

Main-Class из манифеста, провайдеры META-INF/services, обработчики событий (@EventHandler, @Subscribe), enum, сериализуемые члены и классы Forge с @Mod.

Что можете знать только вы (рефлексия, имена в файлах конфигурации)

Классы, которые вы загружаете по имени (Class.forName, рефлексия, имена в конфигах), и поля, которые JSON-библиотека сопоставляет по имени.

Затем обфусцируйте jar в бесплатном аккаунте.Загрузить jar

Тот же плагин. Читать гораздо труднее.

Ваш код
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

Переименовывает классы, поля и методы. Вариант по умолчанию; работает почти с любым плагином.

Skidfuscator

Добавляет к переименованию обфускацию потока управления и шифрование строк.

Максимум

Сначала ProGuard, потом Skidfuscator: самый сильный вариант для плагинов, которые стоят лишней проверки.

Вопросы и ответы

Почему некоторые классы должны сохранить имена?

Сервер загружает их по имени из дескриптора: главный класс из plugin.yml, точки входа Fabric, mixin. Переименуйте их — и плагин перестанет загружаться. Всё остальное можно переименовать.

Мне нужно самому писать правила сохранения имён?

Обычно нет. SunLicense читает ваш jar и сам сохраняет главный класс, main у Velocity и BungeeCord, точки входа и mixin Fabric, провайдеры сервисов, обработчики событий и enum. Эта проверка показывает, что остаётся вам, например bootstrapper Paper.

Какие обфускаторы использует SunLicense?

ProGuard (по умолчанию), yGuard и Skidfuscator, который добавляет обфускацию потока управления и шифрование строк, или «Максимум» — сначала ProGuard, потом Skidfuscator. Вы получаете файл сопоставления, чтобы читать свои стектрейсы.

Мой дескриптор куда-то загружается?

Нет. Проверка читает его в вашем браузере; ничего никуда не отправляется.

Сколько это стоит?

Тариф Free включает 3 запуска обфускации в месяц, а также лицензионные ключи и лимиты устройств для того же плагина. В Lite и Standard запусков больше.

Читать руководство по обфускации

Другие бесплатные инструменты