繁体   English   中英

java 混淆器,带有 maven 插件支持

[英]java obfuscators with maven plugin support

我正在寻找支持 maven-plugin 的 java 混淆器? 我们尝试使用 ProGuard,但遇到了一些运行时问题,如果您不进行混淆,这些问题就不会发生。 是否有任何替代的混淆器。

由于 ProGuard 的运行方式与大多数其他 Java 混淆器(至少是我熟悉的混淆器)类似,因此您很可能会遇到类似的问题。 (事实上,ProGuard 不遗余力地发出合规的字节码,而据传其他一些混淆器对此不太警惕。)

你遇到了什么样的问题? 通常,使用混淆的问题在于名称修改 - 遇到其他库无法找到公共类/方法/字段的问题,或使用反射的问题。 这通常可以通过非常小心您允许损坏的 class 名称和方法名称来解决。

上次我对 Java 项目使用混淆时,我们对混淆的内容相当保守。 我们将想要混淆的类放入其原始 package 的子包中,称为“内部”,并且我们仅对.internal 进行混淆。 . 我们发现这比试图确定什么不要混淆更有用。

混淆器的另一个问题是它们的优化。 虽然我没有在 ProGuard 中看到优化的错误,但这当然不是不可能的。 无论如何,我出于以下几个原因将其关闭:首先,当您获得客户的(混淆的)堆栈跟踪时,很难解开名称以确定出了什么问题。 如果您的混淆器优化了任何东西,那么该堆栈跟踪可能毫无意义。 其次,这是不必要的:JVM 非常非常擅长优化字节码,这会干扰它(因此可能会使情况变得更糟。)

Stringer Java 混淆工具包有一组很棒的选项可用于与 IDE 和构建系统集成,包括Maven

几年前,我和你有类似的问题。 如果我没记错的话,ProGuard 确实错误地优化了短私有方法:它确实消除了内联期间方法的“同步”键世界的影响。

我们通过使用 ProGuard 的-dontoptimize选项来解决这个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM