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)、枚举、可序列化成员和 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,自动保留主类、Velocity 和 BungeeCord 的 main、Fabric 的入口点和 mixin、服务提供者、事件处理器和枚举。这个检查器会列出留给你处理的部分,例如 Paper 的 bootstrapper。

SunLicense 用哪些混淆器?

ProGuard(默认)、yGuard 和 Skidfuscator(加入控制流混淆和字符串加密),或“最强”模式:先运行 ProGuard 再运行 Skidfuscator。你会得到映射文件,用来读懂自己的堆栈跟踪。

我的描述文件会被上传吗?

不会。检查器在你的浏览器中读取它,不会发送任何内容。

费用是多少?

Free 套餐每月含 3 次混淆,同一个插件还可使用许可证密钥和设备上限。Lite 和 Standard 包含更多次数。

阅读混淆指南

更多免费工具