回答
没有,APK管理器反编译的.dex
文件到.smali
和二进制.xml
人类可读的XML。
序列(基于APK管理器4.9)是选择包,然后反编译它。如果您按1而不是9,那么您只需将其解压缩(仅在需要交换.png图像时才有用)。
有没有工具可用于反编译回.java
文件,并且很可能它不会有任何工具。有一种替代方法,它使用dex2jar将dex文件转换为.class
文件,然后使用jar反编译器(例如免费的jd-gui)将纯文本java。虽然这个过程并不是最优的,但它不会生成工作代码,但它足够体面以便能够读取它。
dex2jar:http://code.google.com/p/dex2jar/
JD-GUI:http://jd.benow.ca/
编辑:我所知道的是这里的某个地方有在SO一个非常相似的答案的问题... decompiling DEX into Java sourcecode
我第二次说。
Dex2jar将生成一个WORKING jar,您可以将其作为项目源添加到您从apktool获得的xmls中。
但是,JDGUI会生成.java文件,这些文件通常具有错误。
我猜测它与代码混淆有关。
dex2jar有助于反编译你的apk,但不是100%。 .smali文件会有一些问题。 Dex2jar无法将其转换为java。我知道一个应用程序,可以反编译你的apk源文件,并没有与.smali文件的问题。这里是链接http://www.hensence.com/en/smali2java/
我的推荐是Virtuous Ten Studio。该工具是免费的,但他们建议捐款。它将所有必要的步骤(解压APK,反编译,反编译等)合并为一个易于使用的基于UI的导入过程。在五分钟之内,您应该拥有Java源代码,比找出上述工具之一的命令行选项要少。
将smali编译为Java是一个不精确的过程,特别是如果smali构件经历了一个混淆器。你可以在网上找到几个反编译器,但其中只有一些仍然保留。有些会比别人给你更好的反编码。阅读“更好”,如“比较容易理解”。不要期望反向工程的Java代码可以直接编译出来。Virtuous Ten Studio附带了多个免费的Java内置反编译器,因此您可以轻松尝试不同的反编译器(“生成Java源代码”步骤),查看哪一个可以为您提供最佳结果,从而节省您自己查找这些反编译器的时间,了解如何使用它们。其中有CFR,它是少数几个免费且仍然保留的反编译器之一。
作为输出,您会收到包含所有已反编译的Java源代码的文件夹结构。然后,您可以将其导入到IntelliJ IDEA或Eclipse中以进行进一步编辑,分析(例如,定义,查找用法)等。
Christoph,Virtuous Ten Studio支持in-smali方法/类重构? – 2015-05-25 14:00:38
你能说出你与善良的关系吗? – Sirens 2015-08-16 16:50:17
Virtous不能正确地将smali转换为java。给出错误,指出.java文件没有找到它自己应该生成的地方。浪费时间 – 2015-08-18 13:50:05
为了获得将.apk文件转换为.java文件的实用视图,请查看https://www.youtube.com/watch?v=-AX4NYE-9V8视频。你会得到更多的好处和清楚的理解。它清楚地展示了您使用mac OS
时所需的步骤。
完成这项工作的基本要求。 1. http://code.google.com/p/dex2jar/
2. http://jd.benow.ca/
有一个新的交叉。平台(JAVA)和开源工具,使您能够做到这一点,只是结账https://bytecodeviewer.com
==== =====
编辑: 截至2017年4月,有一个由谷歌开发的新开源工具,意思是做我们一直在寻找的东西=>http://classyshark.com
**对不起,您的意思是jd-gui _won't_ generate _working code _?**反编译器应该生成工作代码;如果不是,那么我们并不是说反编译器。你不这么认为吗? – 2012-01-09 17:52:33
所以如何将编辑后的文件(.java/.class/.smali/.jar)再次打包成apk文件..请帮助。 – 2012-04-13 12:51:18
JD-GUI变得非常接近,但不够接近。 – 2012-06-05 19:21:36