Dex 檔案是Android上運行於delvik的java二進位檔案,如果你對其中的內容感興趣而開發人員沒有公布原始碼,你可以用如下方法反編譯dex檔案:
1 解壓system.img
用xyaffs2解壓system.img 等你所需要解壓的img檔案:
xyaffs2 img_file output_dir
xyaffs2可以從如下地址下載:
http://limodev.cn/download/xyaffs.tar.gz
2 從輸出目錄找到你感興趣的apk包,用unzip解壓apk檔案包:
unzip ContactsProvider.apk
3 用dex2jar工具將解壓後的檔案夾中的classes.dex轉換成jar檔案:
dex2jar.sh classes.dex
或者
dex2jar.bat classes.dex
dex2jar的如下:
http://code.google.com/p/dex2jar/
非常感謝這個工具的作者 "pxb1988",我不知道作者的全名,就寫了作者的網名了。
4 用unzip解壓jar檔案:
unzip classes.dex.dex2jar.jar
5 用DJ java decompiler 反編譯jar包中的class檔案
DJ一般有圖形化介面,操作很簡單,可以單個檔案反編譯,也可以批量反編譯。DJ的如下:
http://members.fortunecity.com/neshkov/dj.html
在批量反編譯時間,注意將輸出檔案尾碼改為java,預設的輸出檔案尾碼為jad。
6 用AXMLPrinter反編譯xml檔案:
java -jar AXMLPrinter2.jar AndroidManifest.xml AndroidManifest2.xml
AXMLPrinter的如下:
http://android4me.googlecode.com/files/AXMLPrinter2.jar
最後,感謝以上開源軟體的開發人員,他們的努力工作使android的反編譯容易了很多,而且反編譯出來的代碼可讀性很高。再次感謝!
本文章轉載自 http://www.cnitblog.com/houcy/archive/2011/01/27/72731.aspx ,感謝網友的這篇文章,反編譯別人寫的軟體可以學習別人的長處,但是要尊重人家的成果,不要用於商業用途。