在APK上重新编译.smali文件[重复]

问题

这个问题在这里已有答案:

  • 有没有办法从APK文件中获取源代码? 16个答案

我下载了APK Manager,这让我解压APK文件。

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

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


#1 热门回答(93 赞)

不,APK Manager将the.dex文件反编译为.smali,将binary.xml反编译为人类可读的xml。

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

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

dex2jar:http://code.google.com/p/dex2jar/

JD-GUI:http://jd.benow.ca/

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


#2 热门回答(25 赞)

有一个新的cross plateform(java)和开源工具,使你能够做到这一点,只需checkouthttps://bytecodeviewer.com

enter image description here

=========

编辑:截至2017年4月,谷歌开发了一个新的开源工具,这意味着我们一直在寻找=> http://classyshark.com


#3 热门回答(24 赞)

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