龙马谷

 找回密码
 立即注册

QQ登录

只需一步,快速开始

龙马谷VIP会员办理客服QQ:82926983(如果临时会话没有收到回复,请先加QQ好友再发。)
1 [已完结] GG修改器新手入门与实战教程 31课 2 [已完结] GG修改器美化修改教程 6课 3 [已完结] GG修改器Lua脚本新手入门教程 12课
4 [已完结] 触动精灵脚本新手入门必学教程 22课 5 [已完结] 手游自动化脚本入门实战教程 9课 6 [已完结] C++射击游戏方框骨骼透视与自瞄教程 27课
7 [已完结] C++零基础UE4逆向开发FPS透视自瞄教程 29课 8 [已完结] C++零基础大漠模拟器手游自动化辅助教程 22课
以下是天马阁VIP教程,本站与天马阁合作,赞助VIP可以获得天马阁对应VIP会员,名额有限! 点击进入天马阁论坛
1 [已完结] x64CE与x64dbg入门基础教程 7课 2 [已完结] x64汇编语言基础教程 16课 3 [已完结] x64辅助入门基础教程 9课
4 [已完结] C++x64内存辅助实战技术教程 149课 5 [已完结] C++x64内存检测与过检测技术教程 10课 6 [已完结] C+x64二叉树分析遍历与LUA自动登陆教程 19课
7 [已完结] C++BT功能原理与x64实战教程 29课 8 [已完结] C+FPS框透视与自瞄x64实现原理及防护思路
查看: 1306|回复: 0

模拟器修改内核绕过ptracepid检测

[复制链接]

14

主题

0

回帖

18

积分

编程入门

Rank: 1

龙马币
38
三月的天气 | 显示全部楼层 |阅读模式

模拟器修改内核绕过ptracepid检测

我看了下很多检测反调试的应用都会调用这个功能个,修改个内核做个系统还是很重要的。不够我自己嫌修改真机的内核太麻烦,现在模拟器上练个手,虽然网上没有如何修改具体的教程,不过真机修改内核还是有很多。我这里自己类推下:

我们先要找到内核文件的位置,如果是真机的话,需要找到boot.img。模拟器要简单很多,如上图,内核文件就是kernel-qemu文件。

我们直接把kernel-qemu文件复制出来备份一下,
之后010eidt编辑打开搜索的1F 8B 08 00处的位置,删除字符串之前的所有数据保存文kernel-new文件。
gzip -d 文件一下( gunzip.exe z.gz )

接下来我们就可以用ida打开了。

IDA静态分析
处理器类型为ARM Little-endian,
ROM start address和Loading address填0xc0008000
其实这里我一之怀疑为什么要填0xc0008000
我还自己把内核符号导出来观察了一下,想把开始的函数和这个地址对应一下
但改了几次发现,解析的函数怪怪的。感觉有点不对。

我在网上看了一下网上真机的地址都是填0xc0008000
按shift+f12,搜索TracerPid,找到以下项
搜索引用还是有的,说明应该就是这个文件。
先不管了
adb shell
echo 0 > /proc/sys/kernel/kptr_restrict
关闭符号屏蔽
再输入以下命令查看这两函数的地址
cat /proc/kallsyms | grep prco_pid_status
cat /proc/kallsyms | grep __task_pid_nr_ns
找下这两个函数地址。
在ida对应的地址里面找下。
修改方法是把MOVEQ R10, R0替换为MOV R10, #0,机器码为00 A0 A0 E3,指令的文件偏移为(C02BA568-C0008000=2B2568),及把BL sub_C01B083C替换为MOV R0, #0,机器码为00 00 A0 E3,指令的文件偏移为(C01B083C-C0008000=1A883C)。
之后把数据还原成原来的样子,还有些没分析完,之后在弄。

备注
使用010editor 将 z.gz 的二进制数据覆盖到原zImage 文件的1F 8B 08 00处的位置(新的z.gz文件必须比原 z.gz 文件小,并且回写回去时不能改变原zImage文件的大小及修改原 zImage 文件后面的内容,否则会很麻烦),这时得到了zImage文件。
执行命令abootimg –create boot.img -f bootimg.cfg -k zImage -r initrd.img得到boot.img文件。
手机重启进入刷机模式,然后,执行命令fastboot flash boot boot.img

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

将boot导出为boot.img
dd if=/dev/block/mmcblk0p19 of=/data/local/boot.img
adb pull /data/local/boot.img boot.img
如果设备和系统的和给出符话直接 使用源码的boot.img更好

Bootimg 和boot.img文件放到同一目录

执行bootimg –unpack-bootimg 该命令会解包出内核:kernel和ramdisk.gz.
kernel就是内核文件 和zImage相同

将kernel文件复制为文件名为z.gz的文件,并使用010editor查找十六进制1f 8b 08 00,找到后把前面的数据全删掉,使z.gz文件变成标准的gzip压缩文件,这样子就可以使用gunzip解压了。
命令:gunzip.exe z.gz

生成文件z就是祼二进制文件zImage。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

龙马谷| C/C++辅助教程| 安卓逆向安全| 论坛导航| 免责申明|Archiver|
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表龙马谷立场!
任何人不得以任何方式翻录、盗版或出售本站视频,一经发现我们将追究其相关责任!
我们一直在努力成为最好的编程论坛!
Copyright© 2018-2021 All Right Reserved.
在线客服
快速回复 返回顶部 返回列表