我正在尝试对.jar
文件(基本上是一组.class
文件)进行逆向工程。但是,有两个困难:
某些变量,方法和类以 unicode characters 命名,无法正确显示。这使得源编辑非常不方便。
某些类以 Java关键字命名(例如if
)。因此,Java编译器会在重新编译反向工程源文件时抱怨。
是否有可以克服这些困难的Java反混淆器?
答案 0 :(得分:3)
有几种工具可以重命名Java标识符。例如,您可以在其上运行Proguard来重命名所有内容。
话虽如此,我建议重新考虑你的方法。 Java编译和反编译都是有损进程。反编译对于逆向工程很有用,但通常不能指望能够重新编译反编译代码。如果之前已被混淆,你可能会忘记它。
修改混淆代码的最佳方法是使用Krakatau assembler and disassembler。 Krakatau程序集可以可逆地转换为字节码和从字节码转换,这意味着无论如何对它们进行混淆,您都可以编辑任意类而不会弄乱。唯一的缺点是你必须熟悉Java字节码。
答案 1 :(得分:0)
Cuchaz的Enigma支持重命名局部变量。它不再被更新并在BCEL上运行,BCEL也不再被更新。只要您不反编译BCEL无法处理的任何内容,它应该可以正常工作。