在一个混淆了java库的pickle中

时间:2012-04-06 21:10:40

标签: java obfuscation

好的,我现在有点陷入困境。

我有一个java程序,我已经拆分为核心/外部部分。

我将我的核心整理成一个外部代码(将公开发布)可以引用的java库。

但是,我不希望这个java库的内容可以被分解。

所以我去找一个好的java混淆器。

使我的情况变得复杂的是,我的java库并不完全是模块化的 - 它引用/更改了外部代码的状态(是的,它很可怕,但无论如何)

我已尝试过所有高级混淆器(ZKM,allatori等)和免费混音器的演示,但他们要么

  1. 具有非常弱的控制流混淆,这是我需要的
  2. 暂停,因为对jar库本身没有但仍被引用的java库/依赖项的引用。
  3. 有什么建议吗?

3 个答案:

答案 0 :(得分:2)

混淆不会阻止反编译。它总是可以被反编译。它只会帮助您在以后减少代码的可读性。仅模糊您的逻辑,保持接口不受影响。

答案 1 :(得分:0)

  1. 如果没有符合您标准的控制流混淆的混淆器,则您必须编写自己的混淆器或向现有供应商提交请求以改进其产品。

  2. 同时通过混淆器同时运行程序的外部和内部部分。但是为所有外部代码写exclude rules。您还应该为内部代码的公共API编写排除规则。如果您的内部代码上没有公共API层,那么您将会遇到困难,因为您的外部代码必须通过混淆的名称来引用您的内部代码,这将导致非常难以维护且难以阅读外部源代码。

答案 2 :(得分:0)

我是第二个ahanin的评论。

但是,如果您正在寻找混淆器,那么具有非常强大的规则集的好的是Proguard。它在Android领域大量使用,其中代码需要尽可能小(小)。

链接:Proguard