#1 楼
这不仅可能,而且已经完成,而不仅仅是一次。这是我所知道的三个,而且可能还有更多。Dost by Zost(Androguard项目):
http://code.google.com/p/androguard/wiki/Decompiler
JEB作者:Nicolas Falliere(商业)
http://www.android-decompiler.com/
然后,所有使用
dex2jar
或Dare的Java反编译器都可以使用在Dalvik二进制文件上。#2 楼
我认为,即使是当前的Java反编译器,也可以通过修补其代码来实现。它们至少有一个很大的不同-JVM是基于堆栈的,而Dalvik是基于寄存器的。不用太多代码就可以处理这种差异。第二个区别-字节码格式。因此,您需要使用能够反汇编Dalvik字节码格式的代码。#3 楼
不要忘记http://dexter.dexlabs.org/-Dexter是一个静态android应用程序分析工具。#4 楼
jadx具有CLI和GUI,并且是开源的。#5 楼
另一个工具是字节码查看器:https://github.com/Konloch/bytecode-viewer
字节码查看器是一种先进的轻量级Java字节码查看器,GUI
Java Decompiler,GUI字节码编辑器,GUI Smali,GUI Baksmali,GUI APK
编辑器,GUI Dex编辑器,GUI APK反编译器,GUI DEX Decompiler,GUI
Procyon Java Decompiler,GUI Krakatau,GUI CFR Java反编译器,GUI
FernFlower Java反编译器,GUI DEX2Jar,GUI Jar2DEX,GUI Jar-Jar,Hex
查看器,代码搜索器,调试器等。它完全用Java编写,并且是开源的。 Konloch目前正在维护和开发它。
评论
一个用法的例子将是不受欢迎的! :-)
–恐怖
15年2月23日在10:05
#6 楼
除了Igor列出的软件外,还有诸如apktool之类的工具可用于反编译代码:它将dalvik字节码转换为smali,这是dalvik虚拟机专用的语言(例如,请参见此处的指令/操作码)。 />您还可以编辑应用程序中的资源,然后重新构建应用程序(但是由于您必须使用自己的密钥重新签名,因此它会破坏原始签名)。
评论
抱歉,您要描述的是反汇编,而不是反汇编。 Smali只是表示Dalvik字节码的一种方式,它不是像Java这样的高级语言。
–伊戈尔·斯科钦斯基♦
13年4月10日在2:03
评论
理论上,所有Java反编译器都可以工作,并且Dalvik类文件可以转换(返回)为Java类文件。除了上面的链接之外,您可能还需要查看最近添加了Dalvik支持的Soot。
–user209
13年3月20日在17:20