反編譯工具可以幫助我們將APK文件反編譯為一些Java代碼,也可以查看一些APK的布局信息及項目注冊清單信息等。
常用的反編譯工具有apktool、dex2jar和jd-gui.exe。
其中,apktool用來反編譯獲取APK中的資源文件、布局文件和項目注冊清單文件;
dex2jar用來將APK的dex核心文件反編譯為jar文件;
jd-gui.exe用來查看反編譯后的jar文件內容,可以查看到jar文件里的包目錄結構和代碼信息等。
所以想要反編譯一個APK,通常需要這3個小工具搭配使用。
也可以使用更加高效、方便的反編譯工具——jadx。
jadx是一個開源的反編譯工具,功能非常強大,並且簡單易用,其優點如下:
①圖形化操作界面,所見即所得,支持拖曳操作;
②支持更多的文件格式:.apk、.dex、.jar、.class、.smali、.zip、.aar和.arsc;
③可以直接反編譯出Java源碼、項目注冊清單和布局文件等;
④支持反編譯信息的全局搜索功能;
⑤反混淆;
⑥支持導出為gradle項目。
詳情可以參考:https://github.com/skylot/jadx
鏈接:https://pan.baidu.com/s/1YqAW9vhd0wfbZT5h6UCFlA
提取碼:cyx6
下載並解壓后,找到bin目錄下的jadx-gui.bat文件,雙擊,程序即可運行
jadx工具支持jadx、apk、dex、jar、class、smali、zip、aar和arsc類型文件的反編譯,非常強大,Java虛擬機能夠識別的字節碼類型文件基本上都可以進行反編譯。這里以APK文件為例。
可以自己找個apk文件嘗試,然后選擇“文件”--“打開文件”,然后找到那個apk文件所在的路徑。
可以看到,左側列表中分為了源代碼、資源文件、簽名、證書這幾個層級,通過jadx可以反編譯查看到這部分信息
可以看到APK的一部分簽名信息
jadx還具有強大的搜索功能,打開“導航”--“搜索文本”或者“搜索類”,可以查找類名、方法名、變量名和代碼等信息