Android Apk反編譯系列教程(二)APK重打包

尋找極限的貓發表於2019-04-14

教程導航

背景簡介

APK反編譯分析的時候,難免需要對APK進行重打包來輔助反編譯的分析。比如通過重打包給APK新增可除錯功能或者新增可抓https包的功能,都需要應用到重打包的技術。

操作步驟

(一)APKTool反編譯

// 清除framwork,避免framwork過期,拉取最新的framwork資源
apktool empty-framework-dir --force
// 開始反編譯
apktool d -f org.fedorahosted.freeotp.apk
複製程式碼

(二)修改反編譯的資原始碼或者smali程式碼

以反編譯的包支援debug和支援charles https抓包為例

(1)修改manifest

 <application
        // 支援debug
        android:debuggable="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        // 支援https抓包
        android:networkSecurityConfig="@xml/network_security_config"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
複製程式碼

(2)在res目錄下新建xml資料夾,新建network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <debug-overrides cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
            <certificates src="user" />
        </trust-anchors>
    </debug-overrides>
</network-security-config>
複製程式碼

(三)重新編譯APK

(1)apktool編譯:編譯修改後的程式碼生成新的apk

apktool b org.fedorahosted.freeotp -o new.apk
複製程式碼

(3)zipalign對齊:將新生成的apk對齊

zipalign -f -v -p 4 new.apk new_zip_align.apk
複製程式碼

(4)apksigner簽名:只有簽名後的apk才可以安裝

  • --ke:簽名檔案
  • --ks-key-alias:簽名檔案alias
  • --ks-pass pass:112112:簽名檔案密碼
apksigner sign --ks /Users/weishenhong/Desktop/wsh/code/android/android_learning/app/keystore --ks-key-alias key0 --ks-pass pass:112112 --out rebuild_signed.apk new_zip_align.apk
複製程式碼

(5)安裝apk

adb install -r -t rebuild_signed.apk
複製程式碼

至此,你重打包的apk就成功安裝了。

相關連結

相關文章