在APK上反编译.smali文件

时间:2011-04-07 14:36:25

标签: java android apk smali

我下载了APK Manager,可以解压APK文件。

但它只解包它并且不会将.smali文件反编译为.java。

是否可以将.smali反编译为.java?

6 个答案:

答案 0 :(得分:100)

不,APK管理员将.dex文件反编译.smali,将二进制文件.xml反编译为人类可读的xml。

序列(基于APK Manager 4.9) 22 以选择包,然后 9 进行反编译。如果您按1而不是9,那么您只需将其解压缩(仅在您想要交换.png图像时有用)。

没有可用于反编译回.java文件的工具,而且很可能它不会是任何工具。还有一种方法是使用 dex2jar 将dex文件转换为.class文件,然后使用jar反编译器(例如免费的 jd-gui )纯文本java。然而,这个过程远非最佳,并且它不会生成工作代码,但它足以能够读取它。

dex2jar:https://github.com/pxb1988/dex2jar

jd-gui:http://jd.benow.ca/

编辑:我知道这里有一个问题,答案非常相似...... decompiling DEX into Java sourcecode

答案 1 :(得分:26)

有一个新的交叉平台(java)和开源工具,您可以这样做,只需结帐https://bytecodeviewer.com

enter image description here

======

编辑: 截至2017年4月,有一个由谷歌开发的新开源工具,意在完成我们一直在寻找的东西=> http://classyshark.com

答案 2 :(得分:25)

dex2jar有助于反编译你的apk而不是100%。您将遇到.smali文件的一些问题。 Dex2jar无法将其转换为java。我知道一个应用程序可以反编译您的apk源文件,并没有.smali文件的问题。这是一个链接http://www.hensence.com/en/smali2java/

答案 3 :(得分:4)

我的推荐是Virtuous Ten Studio。该工具是免费的,但他们建议捐赠。它将所有必要的步骤(解压APK,baksmaliing,反编译等)组合到一个易于使用的基于UI的导入过程中。在五分钟之内,您应该拥有Java源代码,而不是找出上述工具之一的命令行选项。

将smali反编译为Java是一个不精确的过程,尤其是当smali工件经过混淆器时。您可以在网络上找到几个反编译器,但仍然只保留其中一些反编译器。有些人会比其他人给你更好的反编译代码。阅读"更好"就像在"更容易理解"相对于其它的。不要指望反向工程Java代码可以直接编译。 Virtuous Ten Studio内置了多个免费的Java反编译器,因此您可以轻松地尝试不同的反编译器("生成Java源代码"步骤)以查看哪一个为您提供最佳结果,从而节省您的时间那些反编译器自己并弄清楚如何使用它们。其中包括CFR,它是为数不多的免费且仍在维护的反编译器之一。

作为输出,您将收到包含所有反编译Java源代码的文件夹结构。然后,您可以将其导入IntelliJ IDEA或Eclipse以进行进一步编辑,分析(例如转到定义,查找用法)等。

答案 4 :(得分:1)

我是第二个。

Dex2jar将生成一个WORKING jar,您可以使用从apktool获得的xmls作为项目源添加。

但是,JDGUI会生成.java文件,这些文件通常会出现错误。

我猜这与代码混淆有关。

答案 5 :(得分:-1)

要获得将.apk文件转换为.java文件的实用视图,请查看https://www.youtube.com/watch?v=-AX4NYE-9V8视频。你会得到更多的好处并清楚地理解。它清楚地演示了使用mac OS时所需的步骤。

完成此任务的基本要求。 1. http://code.google.com/p/dex2jar/
2. http://jd.benow.ca/