支持变量重命名的Java deobfuscator?

时间:2016-11-05 20:36:13

标签: java reverse-engineering obfuscation decompiler deobfuscation

我正在尝试对.jar文件(基本上是一组.class文件)进行逆向工程。但是,有两个困难:

  1. 某些变量,方法和类以 unicode characters 命名,无法正确显示。这使得源编辑非常不方便。

  2. 某些类以 Java关键字命名(例如if)。因此,Java编译器会在重新编译反向工程源文件时抱怨。

  3. 是否有可以克服这些困难的Java反混淆器?

2 个答案:

答案 0 :(得分:3)

有几种工具可以重命名Java标识符。例如,您可以在其上运行Proguard来重命名所有内容。

话虽如此,我建议重新考虑你的方法。 Java编译和反编译都是有损进程。反编译对于逆向工程很有用,但通常不能指望能够重新编译反编译代码。如果之前已被混淆,你可能会忘记它。

修改混淆代码的最佳方法是使用Krakatau assembler and disassembler。 Krakatau程序集可以可逆地转换为字节码和从字节码转换,这意味着无论如何对它们进行混淆,您都可以编辑任意类而不会弄乱。唯一的缺点是你必须熟悉Java字节码。

答案 1 :(得分:0)

Cuchaz的Enigma支持重命名局部变量。它不再被更新并在BCEL上运行,BCEL也不再被更新。只要您不反编译BCEL无法处理的任何内容,它应该可以正常工作。