文章目錄
- Android 反編譯
-
- Apk檔案結構圖
- 反編譯相關工具
- 反編譯步驟
-
- 1.ApkTool拆包,得到AndroidManifest和res等資源
- 2.dex2jar反編譯dex檔案,得到java源代碼
- 3.jd-gui檢視Java源代碼
Android 反編譯
Apk檔案結構圖
1. 原理
反編譯的是Apk檔案,是以需要知道Android打包的過程原理,以及Apk檔案目錄,以及檔案是怎麼生成的。
推薦兩篇文章
- 淺析Android打包流程
- Android建構過程分析
首先看一下基本的Apk結構目錄
- asses檔案:原始資資源檔案,存放原始的網頁,音頻等。
- lib:相關第三方的so檔案。
- META-INF:簽名文。
- r檔案:一般解壓後應該是res檔案,包含布局,圖檔等資訊。
- AndroidManifest.xml:全局配置檔案。
- classes.dex類似檔案:源碼編譯成class檔案,在轉成jar檔案,在yasuo壓縮成dex檔案。dex檔案可以直接運作在Android虛拟機上。
- resources.arsc:資源檔案和資源id的映射關系。
經過解壓後的檔案是經過打包處理的,無法閱讀。
是以需要相關工具進行反編譯,得到AndroidManifest.xml檔案,res檔案,java源碼。
反編譯相關工具
- apktool:https://ibotpeaches.github.io/Apktool/
- dex2jar:https://github.com/pxb1988/dex2jar
- jd-jui:http://jd.benow.ca/
反編譯步驟
1.ApkTool拆包,得到AndroidManifest和res等資源
進入目前目錄,運作指令
apktool d guanwangbtn.apk
回車,會在目前面目錄生成一個guanwangbtn的檔案夾。
這是我們可以得到可閱讀的AndroidManifest.xml檔案,assets檔案夾,res檔案夾,smali類似檔案夾。
- smali檔案是反編譯出來的代碼,目錄結構和源代碼的package一模一樣,隻是語言使用的是smali語言。
- original檔案夾是原始的AndroidManifest.xml檔案。
2.dex2jar反編譯dex檔案,得到java源代碼
如果還想得到源代碼,工具dex2jar。
- 功能:将dex格式檔案轉成jar檔案。
- 将壓縮得到的dex檔案放進dex2jar-2.0檔案夾中。
- 目前目錄,運作指令
d2j-dex2jar.bat classes.dex
- 目錄會多出一個jar檔案
3.jd-gui檢視Java源代碼
下載下傳工具,直接點選打開,classes-dex2jar.jar拖入界面打開。