<转>android 反编译工具

一、smali-1.2.6.jar

用途:.smali文件 转成 classes.dex文件html

说明:.smali文件,相似于.class文件,能够用普通文本编辑器查看和修改。java

用法举例:命令行:java -jar smali.jar classout/ -o classes.dexandroid

下载:http://code.google.com/p/smali/downloads/listshell

二、baksmali-1.2.6.jarwindows

用途:classes.dex文件 转成 .smali文件编辑器

说明:classes.dex不便于查看和理解,使用此工具转成的.smali文件易于阅读和修改。工具

用法:命令行:java -jar baksmali.jar -o classout/ classes.dexgoogle

下载:http://code.google.com/p/smali/downloads/listspa

三、AXMLPrinter2.jar命令行

用途:xml文件 转成 普通文本文件(txt)

说明:apk中的xml文件被搞成二进制了,没法阅读,使用此工具转换后,能够查看正常的xml文件。

用法举例:命令行:java -jar AXMLPrinter2.jar main.xml > main.txt

下载:http://code.google.com/p/android4me/downloads/list

http://dohkoos.name/decompile-android-apk-file.html

classes.dex是Java源码编译后生成的字节码文件。因为Android使用的dalvik虚拟机与标准的Java虚拟机是不兼容的,dex文件与class文件相比,不管是文件结构仍是opcode都不同。

目前有下面这几种反编译的工具:
dexdump
Dedexer
AXMLPrinter2
apktool
dex2jar + JD-GUI
smali

Android开发包提供了一个dex的反编译工具dexdump。用法为首先启动Android模拟器,把要反编译的dex文件用adb push上传到模拟器中,而后经过adb shell登陆,找到该dex文件,执行dexdump xxx.dex。总的来讲dexdump功能比较弱,且用起来麻烦,另外反编译的结果可读性也不好。

另外一个dex文件的反编译工具是Dedexer,且反编译的效果比较好。它能够读取dex格式的文件,生成一种相似于汇编语言的输出。这种输出与Jasmin的输出类似,但包含的是Dalvik的字节码。Dedexer与dexdump相比至少有3个优势:
1. 不须要在Android模拟器中运行;
2. 反编译后的文件目录结构和源代码结构相近,每一个class文件对应一个ddx文件。不像dexdump那样把全部的结果都放在一块儿;
3. 能够做为反编译引擎。目前好多强大的反编译工具都是以Jasmin做为反编译引擎的。
能够下载已经编译好的jar文件ddx1.11.jar,对应Java 1.6版本。用法:

  java -jar ddx1.11.jar -o -D -r -d src classes.dex //在src目录下生成ddx文件 在apk中的资源是通过压缩的,用文本工具看都是乱码,能够经过AXMLPrinter2将其转换为可读的xml文件。具体命令为: java -jar AXMLPrinter2.jar xxx.xml output.xml 目前最好的dex反编译工具是apktool。能够帮助咱们把apk文件反编译,输出smali格式的代码和图片和资源等文件,还能够在修改后从新打包。将下载下来的apktool和apktool-install-windows解压到同一目录下,有三个文件:aapt.exe,apktool.bat和apktool.jar。使用方法: apktool d xxx.apk zzz //反编译xxx.apk到zzz目录,获得apk的图片和配置资源文件等 apktool b zzz //从文件夹zzz重建apk,输出到zzz/dist/out.apk dex2jar是一个将Dalvik虚拟机的dex文件转换回标准Java的class文件的工具: dex2jar xxx.apk //生成jar文件,能够用JD GUI工具直接打开查看 smali能够反编译dex文件,也能够把你修改过的代码从新编译成dex: java -jar baksmali.jar classes.dex -o classes java -jar smali.jar classes -o classes.dex

相关文章
相关标签/搜索