拷貝自原文鏈接拂共,超級(jí)實(shí)用,十分感謝姻几,防止失效宜狐。
場(chǎng)景:
用于抓取 7.0 以上任意應(yīng)用的網(wǎng)絡(luò)請(qǐng)求。
簡(jiǎn)單原理:
利用 Https 對(duì)證書的溯源校驗(yàn)蛇捌。系統(tǒng)內(nèi)會(huì)預(yù)置一些根證書抚恒,默認(rèn)這些證書都是可信安全的。Root 后络拌,按照既定的規(guī)則俭驮,將電腦 Charles 證書放到此目錄下,這樣春贸,電腦中間代理后混萝,讀取到的中間代理證書也被認(rèn)為是 CA 頒發(fā)的安全證書,并信任萍恕。
具體步驟:
0. 必須先 Root 手機(jī)
1. 下載證書
根據(jù)Charles的help瀏覽chls.pro/ssl下載證書逸嘀,你可以在設(shè)備上下載后adb pull到電腦上允粤,也可以直接用電腦瀏覽器下載崭倘。
2. 證書重命名
系統(tǒng)證書在目錄/system/etc/security/cacerts/下翼岁,我們看到
每個(gè)證書的命名規(guī)則是<Certificate_Hash>.<Number>,文件名是一個(gè)Hash值,而后綴是一個(gè)數(shù)字司光。后綴名的數(shù)字是為了防止文件名沖突的琅坡,比如如果兩個(gè)證書算出的Hash值是一樣的話,那么一個(gè)證書的后綴名數(shù)字可以設(shè)置成0飘庄,而另一個(gè)證書的后綴名數(shù)字可以設(shè)置成1.
我們用下面的命令計(jì)算出證書文件的Hash值 openssl x509 -subject_hash_old -in <Certificate_File>
也有在線工具脑蠕,可以直接上傳獲取即可
3. 上傳證書
我們將重命名好的證書adb push
到/sdcard/Download
购撼,然后將其復(fù)制到/system/etc/security/cacerts/
文件夾跪削。
如果出現(xiàn)上面問題,那么我們就需要使用mount -o rw,remount /system
命令將system分區(qū)掛在為可讀寫迂求。
也可以直接 cd 到 cacerts 目錄使用 mount -o rw,remount /
只掛在 cacerts 目錄(我掛載 system 就失敗了)
還是失敗請(qǐng)依次執(zhí)行下面命令:
adb root
adb disable-verity
adb reboot
adb remount
adb shell
mount -o rw,remount /system
復(fù)制好后將文件權(quán)限更改為644碾盐,并重啟設(shè)備
4. 驗(yàn)證結(jié)果
設(shè)置》安全》信任的憑證,我們可以看到
5. 最后抓包
正常設(shè)置代理即可揩局,不會(huì)的話毫玖,可以參考Charles - Windows,Mac 和 Windows 方法大同小異凌盯。設(shè)置后付枫,就可以攔截到所有接口了,并且都被解析為明文驰怎。