天天看點

APK檔案介紹

APK檔案:

APK是Android Package的縮寫,即Android安裝包。APK是類似Symbian Sis或Sisx的檔案格式。通過将APK檔案直接傳到Android模拟器或Android手機中執行即可安裝。

APK檔案目錄:

assets   不經過 aapt 編譯的資源檔案

lib   .so檔案

META-INF 檔案摘要,摘要加密和簽名證書檔案目錄

CERT.RSA 公鑰和加密算法描述

CERT.SF 加密檔案,它是使用私鑰對摘要明文加密後得到的 密文資訊,隻有使用私鑰配對的公鑰才能解密該文 件

MANIFEST.MF 程式清單檔案,它包含包中所有檔案的摘要明文

res 資源檔案目錄,二進制格式

drawable         圖檔

layout 布局

menu 菜單

resources.arsc 經過 aapt 編譯過的資源檔案

classes.dex 可執行檔案

AndroidManifest.xml   配置檔案

APK打包流程: 

        打包資源(res/assets/AndroidManifest.xml/Android基礎類庫)檔案,生成 R.java和resources.ap_檔案

        處理AIDL檔案,生成對應的.java檔案

        編譯Java檔案,生成對應的.class檔案

        把.class檔案轉化成Davik VM支援的.dex檔案(.java=>.class=>.dex)

        打包生成未簽名的.apk檔案

        對未簽名.apk檔案進行簽名

        對簽名後的.apk檔案進行對齊處理

APK安裝流程:

1.安裝方式

系統程式安裝

通過Android市場安裝

ADB安裝(adb devices:顯示目前連接配接的裝置;adb install 安裝包路徑)

手機自帶安裝

2.安裝過程

複制APK安裝包到/data/app目錄下,解壓并掃描安裝包,把dex文 件(Dalvik位元組碼)儲存到/data/dalvik-cache目錄,并/data/data目錄 下建立對應的應用資料目錄。

3.安裝後檔案所在目錄

/system/app

系統自帶的應用程式,獲得adb root權限才能删除

/data/app

使用者程式安裝的目錄,安裝時把apk檔案複制到此目錄

/data/data

存放應用程式的資料

/data/dalvik-cache

将apk中的dex檔案安裝到dalvik-cache目錄下

4.解除安裝過程

删除安裝過程中在上述三個目錄下建立的檔案及目錄。   

APK反編譯與回編譯:

先查殼,再反編譯看驗證

        .apk檔案==>反編譯apk(dex/配置檔案/資源檔案(apk反編譯敗)) ==>修改關鍵檔案實作自己的目的==>重新打包簽名(無法重新打包) ==>apk安裝後無法 運作。

        apktool  .dex=>.smali  

          dex2jar  .dex=>.jar

        Apktool工具實際上隻反編譯以下三種類型檔案:

        .xml檔案、.dex檔案、.arsc檔案

        去除廣告和彈窗,撇開不存在于smali的這種情況,容易的就是 可以在XML中尋到Activity,難的就是尋不到,發生這種情況時,        就要分析代碼,程式邏輯,抓住關鍵資訊,界面和函數。

注意:

        當字元串等關鍵資訊搜不到時,可以從三個方向考慮:1.字元串 在so層;2.字元串被加密了3.結合了伺服器,伺服器傳回,本地 顯示。

虛拟機:

1.java虛拟機

java位元組碼

基于棧架構

2.dalvik虛拟機(jit機制)

Android 5.0以下

dalvik位元組碼

dalvik可執行檔案體積更小

基于寄存器架構

3.art虛拟機(aot機制)

Android 5.0版本及以上

注意:

.dex =>dexopt=>.odex  dalvik加載執行的odex檔案

.dex=>dex2oat=>.oat    art加載執行的是oat檔案

繼續閱讀