关于smali
smali文件是一种非常接近dalvik指令格式的文件,由baksmali反编译dex文件而来,同样baksmali和smali这两个名词和dalvik一样都是来自冰岛语。
使用baksmali和smali
这里使用Helloworld.apk程序作为sample,我们可以使用baksmali反编译dex文件来生成smali文件,如下:
Python代码
-
walfred@ubuntu:reserve$ unzip -q HelloWorld.apk -d HelloWorld
- walfred@ubuntu:reserve$ java -jar baksmali-1.4.2.jar HelloWorld/classes.dex
这样就会在当前目录下生成一个out目录,out目录:
Python/Shell代码
-
walfred@ubuntu:reserve$ ls out/org/ourunix/helloworld/
- BuildConfig.smali R$attr.smali R$id.smali R$menu.smali R$string.smali
-
MainActivity.smali R$drawable.smali R$layout.smali R.smali R$style.smali
当然如果你熟悉smali语法规则的话,你就可以自由的修改这些smali文件,然后在通过smali工具重新生成dex文件:
Python/Shell代码
-
walfred@ubuntu:reserve$ java -jar smali-1.4.2.jar out/ -o classes.dex
当然这个方法已经out了,我们完全可以使用其他工具来完成更多的事情。
项目主页:http://code.google.com/p/smali/