具有maven插件支持的java混淆器

时间:2011-06-30 12:57:48

标签: java obfuscation

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

3 个答案:

答案 0 :(得分:5)

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

你有什么问题?通常,使用混淆的问题是名称错误 - 遇到其他库无法找到公共类/方法/字段或使用反射问题的问题。这通常可以通过非常小心地允许修改哪些类名和方法名来解决。

上次我在Java项目中使用混淆时,我们对混淆的内容相当保守。我们将我们想要混淆的类放入其原始包的一个名为“internal”的子包中,我们只对 .internal。进行了模糊处理。我们发现这比尝试确定哪些来进行混淆更有用。

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

答案 1 :(得分:3)

Stringer Java Obfuscation Toolkit提供了很多与IDE和构建系统集成的选项,包括Maven

答案 2 :(得分:0)

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

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