哪些类必须保留名称?
混淆 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:ProGuard、yGuard 或 Skidfuscator,并保留这些名称。每月 3 次运行。然后在免费账号中混淆 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 包含更多次数。
SunLicense