繞過TracerPid檢測

在調試狀態下,Linux內核會向一些文件寫入進程狀態信息,比如/proc/[pid]/status ,/proc/[pid]/task/[pid]/status文件的TracerPid字段寫入調試器進程pid,state字段寫入t(tracing stop),在動態調試時常常會遇到循環檢測,手動過反調試非常費力,但是可以修改安卓內核從根源上處理這些文件,比如將/proc/[pid]/status的TracerPid字段寫死爲0,可以修改內核源碼重新編譯,也可以解包boot.img修改kernel文件。

修改boot.img繞過TracerPid檢測

設備 :nexus 5
rom :rom爲自己編譯好的hammerhead-ktu84p,版本爲Android 4.4.4_r1,也可以下載官方刷機包

解包boot.img

建議解包工具:https://github.com/xiaolu/mkbootimg_tools,
或者unpack-boot,解包後得到如下文件
在這裏插入圖片描述

修改kernel

用010editor打開kernel並搜索1f8b0800(Gzip數據以1F8B開頭,可以以此來劃分文件中的Gzip和非Gzip數據),刪除1f8b0800之前的數據。
在這裏插入圖片描述
在這裏插入圖片描述
解壓kernel_new.gz得到kernel_new文件,用IDA打開。
在這裏插入圖片描述
選擇處理器類型爲arm小端模式,然後設置ROM start address和Loading address 爲0xc0008000,關於Linux內存地址0Xc0008000的由來,Linux內核都是加載到0xC0008000處開始運行。
在這裏插入圖片描述
在這裏插入圖片描述
IDA中搜索字符串TracerPid
在這裏插入圖片描述
在這裏插入圖片描述
交叉引用跳轉到調用字符串的函數中F5查看僞代碼
在這裏插入圖片描述
修改TracerPid賦值
在這裏插入圖片描述
在這裏插入圖片描述

  • 修改State
    off_C0B156C0處爲保存State的字符數組
    在這裏插入圖片描述
    在這裏插入圖片描述
    Patch->Apply patches to input file應用修補到文件,然後壓縮爲gz文件,可以使用7z壓縮。010打開它替換進原kernel文件位置。
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章