最近在測試 apk 時發現使用常規的手段:導出 burp 證書 -> 安裝證書 ->wifi 設置代理的手段無法抓到 https 的流量(用 proxifier,讓安卓模擬器走 burp 代理也是可以的,但是不想搞),通過搜索引擎得知 Android7.0 及之後,系統默認只信任系統證書,不再信任用戶自己安裝的證書,於是在多次嘗試使用各類模擬器抓 apk 中 https 的報文失敗後,還是選擇了 Android Studio。將證書安裝到系統證書中
準備 burp 證書#
1、導出 burp 證書
2、使用 openssl 更改證書格式,先將 burp 證書的 der 格式轉成 pem, 再獲取證書的 hash
openssl x509 -inform DER -in burp.der -out burp.pem
openssl x509 -inform PEM -subject_hash_old -in burp.pem
將文件名修改為獲取到的 hash.0
mv burp.pem 9a5ba575.0
準備模擬器#
1、打開 Andriod Studio,新建一個模擬器,詳情見圖。
系統鏡像可以按需選擇
填入模擬器的名字,設置模擬器的存儲大小,給多點,免得安裝空間不夠用。
2、使用 emulator 命令啟動模擬器,命令的默認位置在 / Users/{{用戶名}}/Library/Android/sdk/emulator, 添加 - no-snapshot-load 參數保存模擬器狀態,否則重啟模擬器之後需要重新執行 adb root、remount 命令然後修改證書權限。
查看所有模擬器 emulator -list-avds
然後啟動模擬器 emulator @Resizable_API_33 -writable-system -no-snapshot-load
上傳證書#
1、使用 adb 命令重新掛載分區,使 system 可讀寫
adb root 進入root權限
adb disable-verity 關閉分區檢測功能
adb reboot 重啟設備
adb remount 重新掛載分區,使system分區可讀可寫
2、上傳證書
adb push 9a5ba575.0 /sdcard 上傳證書至/sdcard目錄
adb shell 進入系統,此時可以使用whoami查看是否為root用戶
cp /sdcard/9a5ba575.0 /system/etc/security/cacerts/ 進入系統後將證書複製到系統證書目錄下
chmod 644 /system/etc/security/cacerts/9a5ba575.0 修改證書權限
3、查看證書是否安裝成功
操作模擬器界面,進入設置 (setting) --> 安全 (security) --> 更多安全設置 (more security settings) --> 加密與憑據 (encryption & credentials) --> 信任的憑據 (trusted credentials)
配置 WIFI 代理#
成功抓包
參考文章#
https://www.freebuf.com/articles/system/347725.html
https://developer.android.com/studio/run/emulator-commandline?hl=zh-cn#startup-options
https://developer.android.com/studio/command-line/adb?hl=zh-cn
https://juejin.cn/post/6844903645289398280
https://android.stackexchange.com/questions/232234/why-adb-remount-retruns-remount-failed-on-android-emulator