-
-
[原创]使用 ptrace 过 ptrace 反调试
-
发表于:
2020-7-16 21:01
16751
-
[原创]使用 ptrace 过 ptrace 反调试
ptrace
反调试的原理是进程只能被一个进程附加。
当一个应用使用了 ptrace
反调试的时候,以 objection
为例,附加时候会出现这种现象:
查看进程 /proc/self/status
目录,会看到 TracerPid
不为0,其值为附加它的父进程 pid
,这里是 zygote
进程。
它的原理也很,加上 ptrace(PTRACE_TRACEME);
就行。
过掉它的方法很多,下面介绍使用 ptrace
怎么过掉 ptrace
:
1、使用 ptrace
附加 zygote
进程。
2、拦截 zygote
的 fork
调用,在 fork
子进程时候获取当前子进程名称,判断是不是我们想要的那个应用,如果是,就保存子进程 pid
3、获取到子进程 pid
后,再拦截子进程的系统调用,判断此系统调用是不是 ptrace
,并且参数是 PTRACE_TRACEME
4、拦截到指定系统调用后,修改调用参数,让 ptrace(PTRACE_TRACEME);
执行失败。
最后效果如下,可以看到 TracerPid = 0 了
参考:https://bbs.pediy.com/thread-212404.htm
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!