android 反編譯工具

1、smali-1.2.6.jar

用途:.smali文件 轉成 classes.dex文件

說明:.smali文件,類似於.class文件,可以用普通文本編輯器查看和修改。

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

下載:http://code.google.com/p/smali/downloads/list

 

2、baksmali-1.2.6.jar

用途:classes.dex文件 轉成 .smali文件

說明:classes.dex不便於查看和理解,使用此工具轉成的.smali文件易於閱讀和修改。

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

下載:http://code.google.com/p/smali/downloads/list

 

3、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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章