首页 > 代码库 > [练习]使用dx.bat、dexdump.exe、javap、Baksmali
[练习]使用dx.bat、dexdump.exe、javap、Baksmali
这几个工具的关系可以这样描述:
用例:
public class Hello{ public int foo(int a , int b ) { return (a+b) * (a-b); } public static void main(String args[]) { Hello hello = new Hello(); System.out.println(hello.foo(5,3)); }}
dx.bat、dexdump.exe可以在\sdk\build-tools\android-4.4W下找到。
把Hello.class复制到这个目录下,输入:
可以生成Hello.dex。
然后用dexdump弄成Dalvik字节码:
能得到这样的东西:
对应函数:
public int foo(int a , int b ) { return (a+b) * (a-b); }
Javap可以反编译class得到Java字节码,命令是:
javap -c -classpath . Hello
就不使用了。
DEX反汇编工具Baksmali:
用法是:
java -jar baksmali.jar -o baksmaliout Hello.dex
可以在baksmaliout目录下生成Hello.smali文件,然后用文本编辑器打开可以看到foo()函数的代码,也有上面的add-int,sub-int等等。
谷歌被墙了,GoogleCode上不去。不搞了。
注意Smali是Dalvik虚拟机指令语言,所以dexdump.exe搞出来的Dalvik字节码跟Baksmali反汇编出来的smali语言是一样的。
dexdump比较简易所以一般用Baksmali吧。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。