逆向修改内核绕过反调试

admin 2021年12月22日19:32:31评论337 views字数 1629阅读5分25秒阅读模式

0x00  前言

本文是在lcweik大神一文的基础上,使用dd命令来辅助实现内核的提取与刷写,实现手机内核的逆向与二进制修改,从而绕过app程序的反调试。本文将实现过程的每个步骤分享给大家,欢迎大家参与讨论。

0x01 软硬件环境:

手机型号:Google nexus 5

手机系统:Android 4.4 hammerhead

手机是否需要root:是

0x02 实现过程:

1. 提取zImage文件

1.1 查看boot分区路径

ls -l /dev/block/platform/msm_sdcc.1(具体设备具体定)/by-name,找到boot这一项,记下路径

逆向修改内核绕过反调试

1.2 提取boot分区

dd if=/dev/block/mmcblk0p19 of=/sdcard/boot_n5.img

逆向修改内核绕过反调试

1.3 使用aboot工具解压boot,并提取zImage

abootimg -x boot_n5.img

逆向修改内核绕过反调试

1.4 复制zImage并重名为z.gz,查找1F8B0800十六进制值,并将前面的数据全部删除,使用gunzip进行解压。

逆向修改内核绕过反调试

gunzip z.gz

逆向修改内核绕过反调试

2. 定位与修改关键代码

2.1 使用IDA Pro打开z文件,设置好参数,选择处理器类型为ARM Little-endian,单击【ok】后,在ROM start address和Loading address填0xc0008000,单击【ok】,IDA显示效果如下图所示,没有函数名,不方便定位代码。

逆向修改内核绕过反调试

逆向修改内核绕过反调试

逆向修改内核绕过反调试

2.2 关闭手机系统符号屏蔽,并查找与pid状态相关的两个函数符号地址

echo 0 > /proc/sys/kernel/kptr_restrict

逆向修改内核绕过反调试

cat /proc/kallsyms | grep /proc_pid_status

cat  /proc/kallsyms | grep  __task_pid_nr_ns

逆向修改内核绕过反调试

2.3 IDA Pro按G键跳转至0xc01b0884处

逆向修改内核绕过反调试

2.4 按下Shift+F12打开字符串窗口,按ALT+T打开搜索框,并输入TracerPid进行搜索。

逆向修改内核绕过反调试

逆向修改内核绕过反调试

2.5 在找到的结果按下Enter键跳转至代码处。

逆向修改内核绕过反调试

2.6 双击代码注释中的DATA XREF: sub_C02BA04C + 190

逆向修改内核绕过反调试

2.7 按G键回调到0xc01b0884处,按下Ctrl+X查找sub_0xc02ba04c。

逆向修改内核绕过反调试

2.8单机【ok】后,跳转到函数调用sub_C01B0884函数处。

逆向修改内核绕过反调试

2.9 把MOVEQ R10, R0替换为MOV R10, #0,机器码为00 A0 A0 E3,指令的文件偏移为2B25BC,及把BL sub_C01B083C替换为MOV R0, #0,机器码为00 00 A0 E3,指令的文件偏移为2B25CC。

逆向修改内核绕过反调试

2.10 另存修改后的z文件为z_mod,并使用gzip进行压缩。

gzip -n -f -9 z_mod

逆向修改内核绕过反调试

2.11 复制zImage文件并命名为zImage_mod,使用Hexworkshop打开zImage_mod和z_mod.gz两个文件,将z_mod.gz的内容覆盖到原zImage_mod文件的1F 8B 08 00处的位置(覆盖的大小和z_mod.gz的大小一致,且保持zImage_mod的原大小不变).

逆向修改内核绕过反调试

2.12使用abootimage工具生成新的文件boot_n5_mod.img文件。

abootimg --create boot_n5_mod.img -f bootimg.cfg -k zImage_mod -r initrd.img

逆向修改内核绕过反调试

2.13 使用dd命令刷回boot分区处,重启手机后以调试模式开启一个app,并查看其TracerPid值。

逆向修改内核绕过反调试


0x03 总结

在上一节中我们介绍了整个内核修改绕过反调试的过程,大伙儿可以根据自己的手机实际系统进行相应的调整,希望能够帮助大伙儿在进行App的逆向分析时能够绕过烦人的反调试。


版权声明:该原创文章由_D_D_投稿给WhiteCellClub团队,转载须申明!

逆向修改内核绕过反调试

本文始发于微信公众号(WhiteCellClub):逆向修改内核绕过反调试

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年12月22日19:32:31
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   逆向修改内核绕过反调试http://cn-sec.com/archives/489432.html

发表评论

匿名网友 填写信息