-
dex2ja:用來反編譯apk
jd-gui:把反編譯生成的jar變成java語言
apktool:反編譯生成xml
將要反編譯的APK后綴名改為.rar或 .zip,並解壓
-
得到其中的classes.dex文件(它就是java文件編譯再通過dx工具打包而成的),將獲取到的classes.dex放到之前解壓出來的工具dex2jar-0.0.9.15 文件夾內
-
在命令行下定位到dex2jar.bat所在目錄,輸入d2j-dex2jar.bat classes.dex。
效果如下:
-
在該目錄下會生成一個classes_dex2jar.jar的文件,然后打開工具jd-gui文件夾里的jd-gui.exe,之后用該工具打開之前生成的classes_dex2jar.jar文件,便可以看到源碼了,效果如下:
-
被混淆過的效果圖(類文件名稱以及里面的方法名稱都會以a,b,c....之類的樣式命名):
-
apktool
作用:主要查看res文件下xml文件、AndroidManifest.xml和圖片。(注意:如果直接解壓.apk文件,xml文件打開全部是亂碼)
dex2jar
作用:將apk反編譯成Java源碼(classes.dex轉化成jar文件)
jd-gui
作用:查看APK中classes.dex轉化成出的jar文件,即源碼文件
新版本apktool用法:

$ apktool d test.apk I: Using Apktool 2.2.1 on test.apk I: Loading resource table... I: Decoding AndroidManifest.xml with resources... I: Loading resource table from file: 1.apk I: Regular manifest package... I: Decoding file-resources... I: Decoding values */* XMLs... I: Baksmaling classes.dex... I: Copying assets and libs... I: Copying unknown files... I: Copying original files... $ apktool b test I: Using Apktool 2.2.1 on test I: Checking whether sources has changed... I: Smaling smali folder into classes.dex... I: Checking whether resources has changed... I: Building resources... I: Building apk file... I: Copying unknown files/dir...
其實就是,運行CMD,進入比如app-release.apk所在目錄,然后運行apktool d app-release.apk就可以了,默認解壓的文件就在app-release.apk所在目錄。

最后,如果我上面的方法不能用了,請看英文的原網頁怎么說。
比如:
http://blog.csdn.net/vipzjyno1/article/details/21039349/#reply
dex2jar
作用:將apk反編譯成Java源碼(classes.dex轉化成jar文件)
jd-gui
作用:查看APK中classes.dex轉化成出的jar文件,即源碼文件