当前位置:   article > 正文

dex转为java_android - 将DEX反编译成Java源代码

dex反编译

android - 将DEX反编译成Java源代码

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

16个解决方案

831 votes

这很简单

获取这些工具:

1)dex2jar将dex文件转换为jar文件

2)jd-gui查看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

注意:在Windows机器中,所有.sh脚本都被.bat脚本替换

dex2jar文档

第2步:

在JD-GUI中打开jar

PWJIX.png

Dheeraj Bhaskar answered 2019-03-27T02:27:34Z

126 votes

为了澄清一点,根据您想要完成的任务,您可以在此处使用两条主要路径:

将Dalvik字节码(dex)反编译为可读的Java源代码。 您可以使用dex2jar和jd-gui轻松完成此操作,正如fred提到的那样。 生成的源可用于阅读和理解应用程序的功能,但可能无法生成100%可用的代码。 换句话说,您可以阅读源代码,但无法真正修改和重新打包它。 请注意,如果使用proguard对源进行了混淆,则生成的源代码将难以解开。

另一个主要的替代方法是将字节码反汇编为smali,这是一种专为此目的而设计的汇编语言。 我发现最简单的方法是使用apktool。 一旦你安装了apktool,你就可以将它指向一个apk文件,你将获得应用程序中包含的每个类的smali文件。 您可以通过从新Java源生成smali来完全读取和修改smali甚至替换类(为此,您可以使用javac将.java源代码编译为.class文件,然后使用Android将.class文件转换为.dex文件 dx编译器,然后使用baksmali(smali反汇编程序)将.dex转换为.smali文件,如本问题所述。这里可能有一个快捷方式)。 完成后,您可以使用apktool轻松打包apk。 请注意&#

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/789773
推荐阅读