1. 程式人生 > >Android逆向 APK檔案組成

Android逆向 APK檔案組成

 

一 瞭解APK檔案

  我們知道Android系統能執行的程式是.apk檔案格式,其實它就是一個壓縮包而已,把.apk修改成.zip,然後解壓就可以得到該apk內部的檔案結構。

PS: 既然可以把apk檔案改成zip解壓,能不能再把這些檔案壓縮成zip格式,再修改成apk檔案安裝到手機裡呢?

  肯定是不行的,因為解壓時檔案已經被修改了,要想重新壓縮成apk成功安裝的話需要重新簽名的。

 

上節課編寫一個Android程式生成的apk太多簡單,所以檔案組成過於簡單。自己接觸unity方面比較多,這兒用一個unity生成的apk解壓後得到的檔案來介紹,如圖:

1 assets資料夾:

  資源目錄,在Java程式碼中需要使用AssetManager來訪問該目錄。

  PS:使用C++遊戲引擎(Unity,UE等)開發的APK中的資原始檔均需放在asset資料夾下。( Icon圖示還是會放到res資料夾下)

2 lib資料夾:

  so庫存放目錄,一般由NDK編譯得到,常見於使用遊戲引擎活JNI native呼叫的工程中

3 META-INF資料夾:

  存放工程的屬性檔案,例如CERT.RSA

4 res資料夾:

  資源目錄,res目錄下的資原始檔在編譯時會自動生成索引檔案R.java,在Java程式碼中引用的話需要用R.xxx.xxx方式引用。

  比如我們上節在activity_main.xml中定義的Button的id為@+id/button_Confirm,在MainActivity.java中引用這個Button的話就得用R.id.button_Confirm方式引用。

  PS:使用Java開發的Android工程,除了音訊和視訊資源放在raw或asset資料夾下,其他資源都放在res資料夾下。