反编译混淆的java字节码
我在一个运行 Java 应用程序的平台上工作。这些应用程序经常被混淆,其中大多数使用 ProGuard,这使得我们平台的调试问题变得非常困难。
目前我正在使用 JD (http://java.decompiler.free.fr/ ) 进行反编译就是那些应用程序。 JD 做得不错,但有时生成的代码太难理解。
发生这种情况的主要原因是混淆工具利用 JVM 字节码的约束较少的规范来生成有效的字节码,而该字节码不会映射回有效的 Java 代码(例如:激进的重载)。
所以,我的问题是:是否有一个专门用于处理混淆字节码的反编译器?
I work on a platform which runs Java apps. Those apps are often obfuscated, most of them using ProGuard, which makes debugging issues with our platform very difficult.
Currently I'm using JD (http://java.decompiler.free.fr/ ) to decompile it those apps. JD does a decent job, but sometimes the generated code is too difficult to understand.
This appears to happen mainly because obfuscation tools exploit the less constrained spec of JVM Bytecode to produce valid bytecode which doesn't map back to valid Java code (example: aggressive overloading).
So, my question is: is there a decompiler built especially to deal with obfuscated bytecode?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我怀疑任何反编译器都会这样做。但是,您可以使用 ASM 等实现自定义字节码转换并重命名重载方法和变量名称。
I doubt any decompilers do that. However you could implement custom bytecode transformation and rename overloaded method and variable names using something like ASM.
这里有一个成员开发的名为 Fernflower 的反编译器。它号称是专门为反编译代码而设计的反编译器,但您可能需要对它的说法持保留态度。
已上传至此处:
https://github.com/Zidonuke/Bukkit -MinecraftServer/blob/master/tools/fernflower.jar?raw=true
There is a decompiler known as Fernflower developed by a member here. It boasts being a decompiler specifically made for decompiled code, however you may want to take its claim with a grain of salt.
It's uploaded here:
https://github.com/Zidonuke/Bukkit-MinecraftServer/blob/master/tools/fernflower.jar?raw=true