但它只能解包文件,不能将 .smali 文件反编译成 .java 文件。
有没有可能将 .smali 文件反编译成 .java 文件呢?
但它只能解包文件,不能将 .smali 文件反编译成 .java 文件。
有没有可能将 .smali 文件反编译成 .java 文件呢?
APK Manager并不会解编译 .dex
文件为人类可读的 xml,而是将其转换成 .smali
和二进制 .xml
的形式。
在 APK Manager 4.9 中,操作步骤为:首先选择要处理的包,然后按下 9 进行反编译。如果按下1,那么只会进行解压(仅在需要交换 .png 图像时有用)。
目前没有可用的工具将反编译回 .java
文件,很可能也不会有这样的工具。不过有一种替代方案,就是使用 dex2jar 将 dex 文件转换成 .class
文件,再使用 jar 反编译器(比如免费的 jd-gui)将其转换成纯文本的 java 代码。虽然该过程远非最佳,生成的代码也不能正常工作,但足以让人阅读。
dex2jar: https://github.com/pxb1988/dex2jar
jd-gui: http://jd.benow.ca/
编辑:我知道在 StackOverflow 上有一个非常相似的问题,也有类似的答案……decompiling DEX into Java sourcecode
有一款新的跨平台(Java)和开源工具,可以帮助您实现这一点,只需查看https://bytecodeviewer.com
=========
编辑: 截至2017年4月,谷歌开发了一个新的开源工具,旨在实现我们一直在寻找的功能=> https://github.com/google/android-classyshark
Java异常
。 - fnc12Java异常
是在命令行中使用jdk7运行:java -jar BytecodeViewer x.y.z.jar
。为了确保您正在使用jdk7,请检查 java -version
的输出。 - denolkdex2jar可以帮助您反编译apk,但不是100%有效。您将在.smali文件上遇到一些问题。Dex2jar无法将其转换为java。我知道有一个应用程序可以反编译您的apk源文件,并且不会出现.smali文件的问题。这是链接 http://www.hensence.com/en/smali2java/
如果您想了解将.apk文件转换为.java文件的实际操作,请查看https://www.youtube.com/watch?v=-AX4NYE-9V8视频。您将受益更多并且能够清楚地理解。它清晰地演示了您在使用mac OS
时所需的步骤。
完成此操作的基本要求:
1. http://code.google.com/p/dex2jar/
2. http://jd.benow.ca/