目前DEX可执行文件主流的反汇编工具有BakSmali与Dedexer。 (注意如果懒得配置路径的话直接把.jar和Hello.java放在同一个目录下) 测试代码采用Hello.java java -jar baksmali.jar -o baksmaliout Hello.dex 命令成功执行后会在baksmali目录下生成Hello.smali 文件,用文本编译器打开,foo()函数代码如下: # virtual methods .method public foo(II)I .registers 5 .prologue .line 3 add-int v0, p1, p2 sub-int v1, p1, p2 mul-int/2addr v0, v1 return v0 .end method java -jar ddx.jar -d ddxout Hello.dex 命令成功执行后会在ddxout目录下生成Hello.smali 文件,用文本编译器打开,foo()函数代码如下: .method public foo(II)I .limit registers 5 ; this: v2 (LHello;) ; parameter[0] : v3 (I) ; parameter[1] : v4 (I) .line 3 add-int v0,v3,v4 sub-int v1,v3,v4 mul-int/2addr v0,v1 return v0 .end method BakSmali 提供反汇编的功能时还支持Smali工具打包反编译代码重新生成dex文件,因而更受青睐
1