安卓系統(tǒng)修改系統(tǒng)內核繞過TracerPid檢測--反防調試

作者子炎

背景:

得到一個Android的CrackMe來考察逆向知識,分析后發(fā)現(xiàn)其關鍵函數(shù)位于native so庫中,并且在函數(shù)開始時啟動了線程進行TracerPid檢測的反調試,當發(fā)現(xiàn)程序被調試時會直接殺死應用。雖然題目最后卡在了native 逆向與反調試繞過這里,下去后我學習了下如何繞過這個反調試。主要是兩種:(1)patch so,直接修改關鍵值來繞過;(2)修改系統(tǒng)內核文件來將TracerPid寫死為0。剛好我手頭有一個之前做實驗已root的紅米 note 4,便決定采用修改系統(tǒng)內核的方式,一勞永逸。

1.提取boot.img

有點目錄不同,需要根據(jù)手機機型去確定目錄ls -l /dev/block/platform/soc/xxxx.ufshc/by-name | grep boot
su
ls -l /dev/block/platform/soc/xxxx.ufshc/by-name | grep boot
lrwxrwxrwx 1 root root 21 1970-01-01 08:01 boot -> /dev/block/mmcblk0p34
dd if=/dev/block/mmcblk0p34 of=/sdcard/boot.img
adb pull /sdcard/boot.img boot.img

img

2. 修改內核文件

取出來的 boot.img 是一個打包文件,包含了ramdisk,kernel 等很多東西,首先需要將其解開。這里我使用的是一個 github 上的工具 Android_boot_image_editor

2.1 kali 獲取工具

[https://github.com/cfig/Android_boot_image_editor][0]
git clone https://github.com/cfig/Android_boot_image_editor.git

2.2 解包 boot.img
把提取出來的 boot.img 拷貝到 ./Android_boot_image_editor 目錄下:

img

./gradlew unpack解壓 boot.img

img

解包后的文件在 build/unzip_boot 下:
cd build/unzip_boot

img

2.3 修改 kernel 文件

binwalk 看一下 kernel 是怎么組織的:

img

可以看到,對于我的 kernel,gzip文件+設備文件。所以我們需要做的是提取出頭部的 gzip,解壓修改后拼接回去
提取 gzip(0x7xxxx根據(jù)實際情況修改,注意一下是python腳本,需要新建個py文件寫入運行):
with open("./kernel","rb") as f:
content=f.read(0x7xxxx)
with open("./kernel_core.gz","wb") as f:
f.write(content)

img

因我的 010 Editor 在 win 下,把提取出來的 kernel_core.gz 拷貝到 win 下,并對解壓后的 kernel_core 使用 010 Editor 進行修改:
ctrl +f 查詢 TracerPid
25 64 --> 30 09 (0\t)
注意:010 Editor 默認為覆蓋模式,不需要刪除 25 64 再進行輸入 30 09,直接把光標定位到 25 前輸入 30 09 即可。我就在這踩了坑,導致一直不成功……

img
img

將修改好的 kernel_core 重命名為 kernel,拷貝回 kail 進行壓縮:
gzip -n -f -9 kernel

img

移動到Android_boot_image_editor-master/build/unzip_boot 目錄下

img

原 kernel 進行拼接(0x7xxxxx記得替換成之前的查看到的):
with open("./kernel.gz","rb") as f:content = f.read()with open("./kernel","rb") as f:f.seek(0x7xxxxx)content += f.read()with open("./kernel_new","wb") as f:f.write(content)

img

刪除原 kernel 及多余文件,重命名 kernel_new 為 kernel

img

留下以下這些文件就可以了

img

2.4 修改 root 下的 default.prop 文件

cd root
vi default.prop`
`ro.secure=1 改成 ro.secure=0
ro.debuggable=0 改成ro.debuggable=1
img

如果系統(tǒng)版本是開發(fā)版的華ro.secure本來就是0

2.5 重打包

./gradlew pack

img

boot.img.signed 即為重打包后的文件:

img

3. twrp 刷入鏡像

https://dl.twrp.me/angler/(根據(jù)手機型號下載對應的版本,不知道就百度)
將得到的 boot.img.signed 修改為 boot-new.img 放入手機的隨意一個文件夾
進入 twrp rec: 安裝→刷入鏡像,選擇處理后的鏡像刷如即可
adb reboot bootloader

fastboot boot twrp-3.5.2_9-0-angler.img #如果twrp-3.5.2_9-0-angler.img 不在一個目錄下需要帶上盤符和目錄`

img

選擇對應的boot-new.img安裝即可

今天的分享就到這里了,有時間給大家出后續(xù),寫的不好各位大佬噴輕點,麻煩各位大佬點點贊,謝謝大佬!

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 一、前言在前一篇文章中詳細介紹了Android現(xiàn)階段可以采用的幾種反調試方案策略,我們在破解逆向應用的時候,一般現(xiàn)...
    JiangWei_App閱讀 1,852評論 2 5
  • 1.前言 1、好一段時間沒有寫安卓逆向相關的文章了,最近朋友發(fā)我一個apk說是讓我研究一下怎么過掉apk的反調試,...
    淡v漠閱讀 3,474評論 0 2
  • 前面一篇文章《Android反調試手段收集》在講常用的反調試方法中有一條是檢測進程的TracerPid的值正常情況...
    M_天河閱讀 3,500評論 0 1
  • 表情是什么,我認為表情就是表現(xiàn)出來的情緒。表情可以傳達很多信息。高興了當然就笑了,難過就哭了。兩者是相互影響密不可...
    Persistenc_6aea閱讀 129,936評論 2 7
  • 16宿命:用概率思維提高你的勝算 以前的我是風險厭惡者,不喜歡去冒險,但是人生放棄了冒險,也就放棄了無數(shù)的可能。 ...
    yichen大刀閱讀 8,207評論 0 4

友情鏈接更多精彩內容