浅谈Android反调试 之 PTRACE_TRACEME

Posted 蕉下客--)

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈Android反调试 之 PTRACE_TRACEME相关的知识,希望对你有一定的参考价值。

反调试原理:

ptrace函数 原型为:    
#include <sys/ptrace.h>
long ptrace(enum __ptrace_request request, pid_t pid, void *addr, void *data);
ptrace有四个参数: 
 1). enum __ptrace_request request:指示了ptrace要执行的命令。
 2). pid_t pid: 指示ptrace要跟踪的进程。
 3). void *addr: 指示要监控的内存地址。
 4). void *data: 存放读取出的或者要写入的数据。
ptrace是如此的强大,以至于有很多大家所常用的工具都基于ptrace来实现,如strace和gdb。

参数为reqest为PTRACE_TRACCEME,表示父进程和子进程是Trace关系。如下图:


我们知道调试android应用程序,必须调用附加进城,此刻必须调用ptrace(PTRACE_ATTACH). 此刻进程从程序已经被Tracce, 此刻ptrace必会失败。利用这一点我们就可以做反调试。
实现代码如下:

解决方案:NOP调用 ptrace(PTRACE_TRACEME)这个代码
 








以上是关于浅谈Android反调试 之 PTRACE_TRACEME的主要内容,如果未能解决你的问题,请参考以下文章

浅谈android反调试之 转发端口

反调试手法之CreateProcess反调试

ios逆向笔记之反调试 以及反反调试 和反反反调试 ptrace篇

学习:反调试之检测类名与标题名

Frida反调试

修改Android手机内核,绕过反调试