(2009) - 用于反混淆Java代码的工具

11

是否有一种工具可以反混淆Java混淆代码?

这些代码是从编译后的类中提取出来的,但它们被混淆并且无法阅读。


4
不是复制,除非您能找到一个讨论反混淆(而不是混淆)的重复内容。 - Robert Harvey
6个回答

14

第一步是要学习使用哪个工具进行了混淆。也许已经有特定混淆器的“去混淆器”。

另一方面,您也可以运行一个集成开发环境(IDE),并使用其重构功能。将类、方法和变量名重命名为敏感的名称。利用您的人类逻辑思维能力来确定代码实际表示的内容,并敏感地命名它们。这样,整个局面就会渐渐明朗。

祝好运。


我不知道使用了哪种混淆器。 在反编译过程中,一些方法和变量显示为“???”,它们似乎来自于无处! 我正在使用JD-GUI http://java.decompiler.free.fr/ - Salar
1
JDO可以帮助做到这一点。请参见https://dev59.com/t3I-5IYBdhLWcg3w0L_x#1662928。 - Pascal Thivent
1
啊,原来是这样。那么,反编译器不支持原始编译器的版本,比如用1.6编译的代码反编译到1.5版本。这样行不通。请阅读反编译器的文档或尝试其他的反编译器。 - BalusC

9

您是否尝试过使用Java Deobfuscator (又名JDO)这种智能反编译器,使代码变得不那么难懂?

JDO目前可以执行以下操作:

  • 将混淆的方法、变量、常量和类名重命名为唯一且更具指示性的名称
  • 在整个源代码树中传播更改(测试版)
  • 具有易于使用的GUI
  • 允许您指定字段、方法和类的名称(新功能!)

JDO目前无法执行以下操作(但可能会在未来实现)

  • 以任何方式修改方法字节码

2
该应用程序对文件名不区分大小写,这会导致许多问题。 - Salar

6

不是真的哈哈。我只是添加了一个生产构建,所以如果你去下载页面,你可以通过GUI下载它。 - Contra
由于时间不足,JMD已经停止更新,最后更新日期为2010年11月24日。这是在您发布帖子的两个月前。 - Thorbjørn Ravn Andersen

5

我使用了Java反混淆器(JDO),但是它有一些bug。它不能处理区分大小写的文件名。 因此,我修改了源代码并在sourceforge上上传了一个补丁。 该补丁, 下载


1

很可能只有人类的智慧才能理解它。获取最好的反编译器并思考其输出。


1

也许它可以在Unix/Linux/MacOS上运行?

如果是这样,您可以将您的流程中的一步移动到虚拟机中,在那里您可以解压缩代码,然后再将名称重命名为不太长的名称。Windows的文件名限制有多长?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接