如何将Android DEX(VM字节码)文件反编译为相应的Java源代码?
It’s easy
获取以下工具:
1)dex2jar将dex文件转换为jar文件
2)jd-gui查看jar中的java文件
由于dex2jar进行了一些优化,因此源代码具有很高的可读性。
Procedure::
这是有关如何反编译的过程:
步骤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.X
目录,例如sudo chmod -R +x dex2jar-2.0
dex2jar文档
第2步:
在JD-GUI中打开jar
我是Android Studio的初学者,我希望主要活动是在java上而不是在kotlin上。我测试了一些可用的堆栈溢出解决方案,例如: Menu->Tools->Kotlin->将kotlin反编译到java 菜单>工具>Kotlin>显示Kotlin字节码 单击“反编译”按钮 复制java代码 并且总是禁用“反编译”按钮。
问题内容: 现在显然,解析器本身并没有什么用(除了静态分析)。我想将转换应用于AST,然后将其编译回源代码。应用转换不是什么大问题,普通的Visitor模式应该可以。 我目前的问题是如何将AST编译回源代码。我基本上看到两种可能性: 使用一些预定义的方案编译代码 保留原始代码的格式,并仅在已更改的节点上应用1.。 现在,我想专注于1.,因为2.似乎很难完成(但是,如果您有关于此的提示,我想听听他们
当我使用ctrl+右键单击打开一个特定的类时,我应该被重定向到一个带有java源代码的窗口,该窗口包含所有行和适当的注释。但相反,我得到了一个带有反编译的。class文件的窗口。
主要内容:本节引言,1.要准备的三个工具,2.使用apktool反编译APK获得图片与XML资源:,3.使用dex2jar将classes.dex转换成jar文件:,4.使用jd-gui查看jar包中的Java代码:,本节小结本节引言 "反编译Apk",看上去好像好像很高端的样子,其实不然,就是通过某些反编译软件,对我们的APK进行反编译,从而获取程序的源代码,图片,XML资源等文件;不知道你有没有这样做过,看到一个别人的一个APP界面做得很精美,或者你看上别人的图片素材,简单点的,我们可以下载
有人能帮我吗?更新: 我打印出了getMethods的输出:[public static void com.tom.labs.main.main(java.lang.String[]),public final void java.lang.object.wait(long,int)抛出java.lang.interruptedexception,public final native void
问题内容: 因此,我刚刚意识到反编译Java代码是多么容易。我一直在网上搜索,但似乎无法弄清楚 为什么 这么容易。每次我在Google上搜索“为什么要反编译文件?”之类的信息时,或“为什么Java这么容易反编译”,我所得到的只是指向可以轻松反编译我的代码的软件的链接。因此,我向您介绍StackOverflow:为什么Java可以转换回容易阅读的源代码,而C ++和其他语言对反编译不是很友好? 谢谢