<轉>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

相關文章
相關標籤/搜索