APKTool
APKTOOL是解包 APK 文件最常用的工具,許多 APK 工具箱都集成了 apktool。它可以完整解包 APK,解包后你可以看到 APK 里面的聲明文件、布局文件、圖片資源文件、由 dex 解包出來的 smali 文件、語言文件等。如果你要漢化、修改界面、修改代碼的話,apktool 可以幫你一站式完成。
常用命令
需要在 CMD 命令窗口中輸入命令來使用,常用命令如下:
解包 APK:Java -jar apktool.jar d *.apk -o out
其中 *.apk 是被解包的 APK 文件名, out 是輸出目錄名稱
重新打包:java -jar apktool.jar b out
out 就是上面的輸出目錄
導入 framework-res.apk 架構文件:java -jar apktool.jar if frameword-res.apk
需要將 framework-res.apk 文件放在 apktool.jar 的相同目錄下,導入架構文件可以解決一些調用了系統框架資源的 APK 包解包失敗的問題
操作過程
- 下載解壓工具包
- 將需要反編譯的APK文件放到該目錄下,打開命令行界面(運行-CMD) ,定位到apktool文件夾,輸入以下命令:
apktool.bat d -f *.apk out
或者用上邊的命令也可以! - 將要反編譯的APK后綴名改為.rar或則 .zip,並解壓,得到其中的額classes.dex文件(它就是java文件編譯再通過dx工具打包而成的),將獲取到的classes.dex放到之前解壓出來的工具dex2jar-0.0.9.15 文件夾內,在命令行下定位到dex2jar.bat所在目錄,輸入
dex2jar.bat classes.dex
在改目錄下會生成一個classes_dex2jar.jar的文件,然后打開工具jd-gui文件夾里的jd-gui.exe,之后用該工具打開之前生成的classes_dex2jar.jar文件,便可以看到源碼了。
注意:有些APK在打包的時候做過混淆處理,反編譯之后里邊好多都是以abc之類的命名,但是里邊的邏輯還是很清晰的,能給我們提供一個實現的思路。
Smali2Java
我在搜索類似的的這種反編譯的工具時,發現了這個Smali2Java,它不用在命令行輸入命令來進行,直接解壓后打開Smali2JavaUI.exe運行,將要反編譯的APK文件直接打開即可。