0

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

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

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

但是,我不希望这个 java 库的内容是可反编译的。

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

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

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

  1. 有非常弱的控制流混淆,这是我需要的
  2. 由于对不在 jar 本身但仍被引用的 java 库/依赖项的引用而停止。

有什么建议吗?

4

3 回答 3

2

混淆不会阻止反编译。它总是可以被反编译。它只是帮助降低你的代码的可读性。只混淆你的逻辑,保持界面不变。

于 2012-04-06T21:14:04.833 回答
0
  1. 如果没有混淆器具有符合您标准的控制流混淆器,那么您将不得不编写自己的混淆器或向现有供应商提交请求以改进他们的产品。

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

于 2012-04-06T21:40:05.480 回答
0

我赞同 ahanin 的评论。

但是,如果您正在寻找一个混淆器,那么一个具有相当强大规则集的好工具就是Proguard。它在需要尽可能少(小)代码的 Android 空间中大量使用。

链接:Proguard

于 2012-04-06T21:40:43.093 回答