Baksmali:https://github.com/JesusFreke/smali
Apktool:https://ibotpeaches.github.io/Apktool/
dex2jar:https://sourceforge.net/projects/dex2jar/
这几个工具,我注意到,大家基本上用的最多的是Baksmali,不过我使用的时候,发现其使用方法有了简单变化,所以简单记录一下。按照第一个链接页面里的介绍,Baksmali的最新版可以在这里下载:https://bitbucket.org/JesusFreke/smali/downloads/。我下载到的最新版本是2.2.2。参考类似这里给出的例子:http://blog.csdn.net/moondroid/article/details/44224111,运行:
java -jar baksmali-2.2.2.jar -o classout/ classes.dex
结果报:Expected a command, got -o
也不知道是怎么回事,运行了一下:
java -jar baksmali-2.2.2.jar -h
按照其帮助提示,直接运行:
java -jar baksmali-2.2.2.jar d classes.dex
发现可以正常输出结果了,就在运行目录下创建一个out文件夹,生成所有对应的smali文件。原来是版本升级过程中,命令行参数格式也发生变化了,话说这样做挺坑人的。
另外,生成的smali文件中都是类似:move-object v2, p1,这样的Opcode和操作数相组合的形式。据其他材料介绍,Android目前共有218种Opcode,具体可以参考这里:
http://blog.csdn.net/jiayanhui2877/article/details/41008985