(2009) - 去混淆 Java 代码的工具
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/1662766/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
(2009) - Tool to deobfuscate Java codes
提问by Salar
Is there a tool to deobfuscate java obfuscated codes?
是否有工具可以对 Java 混淆代码进行反混淆?
The codes is extracted from a compiled class but they are obfuscated and non-readable.
这些代码是从编译的类中提取的,但它们被混淆且不可读。
采纳答案by Pascal Thivent
Did you try to make the code less obscure with Java Deobfuscator (aka JDO), a kind of smart decompiler?
您是否尝试使用Java Deobfuscator(又名 JDO)(一种智能反编译器)使代码不那么晦涩?
Currently JDO does the following:
- renames obfuscated methods, variables, constants and class names to be unique and more indicative of their type
- propogates changes throughout the entire source tree (beta)
- has an easy to use GUI
- allow you to specify the name for a field, method and class (new feature!)
Currently JDO does not do the following (but it might one day)
- modify method bytecode in any way
目前 JDO 执行以下操作:
- 将混淆的方法、变量、常量和类名重命名为唯一且更能说明其类型
- 在整个源代码树中传播更改(测试版)
- 有一个易于使用的 GUI
- 允许您指定字段、方法和类的名称(新功能!)
目前 JDO 不执行以下操作(但可能有一天)
- 以任何方式修改方法字节码
回答by BalusC
First step would be to learn with which tool it was obfuscated. Maybe there's already a "deobfuscator" around for the particular obfuscator.
第一步是了解它被混淆的工具。也许已经有一个针对特定混淆器的“反混淆器”。
On the other hand, you can also just run an IDE and use its refactoring powers. Rename the class, method and variable names to something sensitive. Use your human logical thinking powers to figure what the code actually represents and name them sensitively. And the picture would slowly but surely grow.
另一方面,您也可以只运行 IDE 并使用其重构能力。将类、方法和变量名称重命名为敏感名称。使用您人类的逻辑思维能力来弄清楚代码实际代表什么,并敏感地命名它们。这幅画会缓慢但肯定地增长。
Good luck.
祝你好运。
回答by Thorbj?rn Ravn Andersen
Most likely only human mindpower to make sense of it. Get the best decompiler available and ponder on its output.
很可能只有人类的智力才能理解它。获得最好的反编译器并考虑其输出。
回答by Salar
I used Java Deobfuscator (aka JDO)but it has a few bugs. It can't work with case sensitive file names. So I've changed the source and uploaded a patch for that in sourceforge. The patch, Download
我使用了Java Deobfuscator(又名 JDO),但它有一些错误。它不能使用区分大小写的文件名。所以我更改了源代码并在 sourceforge 中上传了一个补丁。 补丁,下载
回答by Contra
Not to gravedig but I wrote a tool that works on most commercial obfuscators
不是挖坟,但我写了一个适用于大多数商业混淆器的工具
回答by user unknown
Maybe it will work on Unix/Linux/MacOS?
也许它可以在 Unix/Linux/MacOS 上运行?
If so, you could move one step of your process to a VM, in where you unpack the code, before you rename the too long names. How long is the file name limit on Windows?
如果是这样,您可以在重命名太长的名称之前,将流程的一个步骤移至 VM,在其中解压缩代码。Windows 上的文件名限制是多长时间?