如何将Android DEX(虚拟机字节码)文件反编译成相应的Java源代码?


当前回答

自从这些答案被发布以来,很多事情都发生了变化。现在有很多简单的GUI工具,比如:

APK Easy Tool for Windows (GUI tool, friendly)
Bytecode Viewer - APK/Java Reverse Engineering Suite
URET Android Reverser Toolkit

找到他们最好的地方是在XDA开发者论坛上。

其他回答

很容易

获取这些工具:

Dex2jar将dex文件转换为jar文件 以查看jar中的Java文件

源代码可读性很强,因为dex2jar做了一些优化。

过程:

下面是如何反编译的过程:

步骤1:

将test_apk-debug.apk中的classes.dex转换为test_apk-debug_dex2jar.jar

d2j-dex2jar.sh -f -o output_jar.jar apk_to_decompile.apk
d2j-dex2jar.sh -f -o output_jar.jar dex_to_decompile.dex

注1:在Windows机器中,所有的.sh脚本都被.bat脚本取代

注2:在linux/mac上不要忘记sh或bash。完整的命令应该是:

sh d2j-dex2jar.sh -f -o output_jar.jar apk_to_decompile.apk 

注意3:另外,请记住向dex2jar-X添加执行权限。例如sudo chmod -R + X dex2jar-2.0

dex2jar文档

步骤2:

在JD-GUI中打开罐子

使用Dedexer,您可以将.dex文件分解为dalvik字节码(.ddx)。

据我所知,向Java反编译是不可能的。 你可以在这里阅读dalvik字节码。

自从这些答案被发布以来,很多事情都发生了变化。现在有很多简单的GUI工具,比如:

APK Easy Tool for Windows (GUI tool, friendly)
Bytecode Viewer - APK/Java Reverse Engineering Suite
URET Android Reverser Toolkit

找到他们最好的地方是在XDA开发者论坛上。

反编译android应用程序最简单的方法是从playstore下载一个名为ShowJava的应用程序。只需从应用程序列表中选择需要反编译的应用程序。你可以使用三种不同的反编译器来反编译应用程序,即-

CFR 0.110, JaDX 0.6.1或FernFlower(分析反编译器)。

我建议大家去这里看看: https://github.com/JesusFreke/smali

它提供了BAKSMALI,这是用于DEX文件的最优秀的逆向工程工具。 它是由JesusFreke制作的,他为Android创造了著名的rom。