绕过TracerPid检测
在調(diào)試狀態(tài)下,Linux內(nèi)核會(huì)向一些文件寫入進(jìn)程狀態(tài)信息,比如/proc/[pid]/status ,/proc/[pid]/task/[pid]/status文件的TracerPid字段寫入調(diào)試器進(jìn)程pid,state字段寫入t(tracing stop),在動(dòng)態(tài)調(diào)試時(shí)常常會(huì)遇到循環(huán)檢測,手動(dòng)過反調(diào)試非常費(fèi)力,但是可以修改安卓內(nèi)核從根源上處理這些文件,比如將/proc/[pid]/status的TracerPid字段寫死為0,可以修改內(nèi)核源碼重新編譯,也可以解包boot.img修改kernel文件。
修改boot.img繞過TracerPid檢測
設(shè)備 :nexus 5
rom :rom為自己編譯好的hammerhead-ktu84p,版本為Android 4.4.4_r1,也可以下載官方刷機(jī)包
解包boot.img
建議解包工具:https://github.com/xiaolu/mkbootimg_tools,
或者unpack-boot,解包后得到如下文件
修改kernel
用010editor打開kernel并搜索1f8b0800(Gzip數(shù)據(jù)以1F8B開頭,可以以此來劃分文件中的Gzip和非Gzip數(shù)據(jù)),刪除1f8b0800之前的數(shù)據(jù)。
解壓kernel_new.gz得到kernel_new文件,用IDA打開。
選擇處理器類型為arm小端模式,然后設(shè)置ROM start address和Loading address 為0xc0008000,關(guān)于Linux內(nèi)存地址0Xc0008000的由來,Linux內(nèi)核都是加載到0xC0008000處開始運(yùn)行。
IDA中搜索字符串TracerPid
交叉引用跳轉(zhuǎn)到調(diào)用字符串的函數(shù)中F5查看偽代碼
修改TracerPid賦值
- 修改State
off_C0B156C0處為保存State的字符數(shù)組
Patch->Apply patches to input file應(yīng)用修補(bǔ)到文件,然后壓縮為gz文件,可以使用7z壓縮。010打開它替換進(jìn)原kernel文件位置。
總結(jié)
以上是生活随笔為你收集整理的绕过TracerPid检测的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: arm 跳转指令跳转范围
- 下一篇: SSL/TSL双向认证过程与Wiresh