Android 反編譯

Android 反編譯

Apk文件結構圖

1. 原理
反編譯的是Apk文件,所以需要知道Android打包的過程原理,以及Apk文件目錄,以及文件是怎麼生成的。

推薦兩篇文章

首先看一下基本的Apk結構目錄
在這裏插入圖片描述

  1. asses文件:原始資資源文件,存放原始的網頁,音頻等。
  2. lib:相關第三方的so文件。
  3. META-INF:簽名文。
  4. r文件:一般解壓後應該是res文件,包含佈局,圖片等信息。
  5. AndroidManifest.xml:全局配置文件。
  6. classes.dex類似文件:源碼編譯成class文件,在轉成jar文件,在yasuo壓縮成dex文件。dex文件可以直接運行在Android虛擬機上。
  7. resources.arsc:資源文件和資源id的映射關係。

經過解壓後的文件是經過打包處理的,無法閱讀
所以需要相關工具進行反編譯,得到AndroidManifest.xml文件,res文件,java源碼。

反編譯相關工具

反編譯步驟

1.ApkTool拆包,得到AndroidManifest和res等資源

在這裏插入圖片描述
進入當前目錄,運行命令

apktool d guanwangbtn.apk

回車,會在當前面目錄生成一個guanwangbtn的文件夾。
guanwangbtn的文件夾

這是我們可以得到可閱讀的AndroidManifest.xml文件,assets文件夾,res文件夾,smali類似文件夾。

  1. smali文件是反編譯出來的代碼,目錄結構和源代碼的package一模一樣,只是語言使用的是smali語言。
  2. original文件夾是原始的AndroidManifest.xml文件。

2.dex2jar反編譯dex文件,得到java源代碼

如果還想得到源代碼,工具dex2jar。

  • 功能:將dex格式文件轉成jar文件。
  1. 將壓縮得到的dex文件放進dex2jar-2.0文件夾中。
  2. 當前目錄,運行命令d2j-dexjar.bat classes.dex
  3. 目錄會多出一個jar文件
    在這裏插入圖片描述

3.jd-gui查看Java源代碼

下載工具,直接點擊打開,classes-dex2jar.jar拖入界面打開。
在這裏插入圖片描述

在這裏插入圖片描述