美文网首页Android安全-逆向
反调试检测之一TracerPid

反调试检测之一TracerPid

作者: difcareer | 来源:发表于2017-06-07 16:55 被阅读486次

当我们使用Ptrace方式跟踪一个进程时,目标进程会记录自己被谁跟踪,可以查看/proc/pid/status看到这个信息,下图展示的是使用ida进行调试的情况。

Paste_Image.png Paste_Image.png

而没有被调试的时候TracerPid为0:

Paste_Image.png

因此一种常见的检测调试的办法就是去读取这个值,发现不是0则判定为被调试。

本文提供一个反检测的方法,通过修改和重新编译kernel的方式来让TracerPid在调试的时候仍然为0。

编译kernel参考编译nexus5的linux kernel源码

下面说一下改动点:

kernel/msm/fs/proc/base.c 
kernel/msm/fs/proc/array.c 

base.c在 line285 处修改如下:

      else { 
           if (strstr(symname, "trace")) { 
                return sprintf(buffer, "%s", "sys_epoll_wait"); 
           } 
           return sprintf(buffer, "%s", symname); 
      } 

array.c在 line134处修改如下:

static const char * const task_state_array[] = { 
           "R (running)",        /*    0 */ 
           "S (sleeping)",       /*    1 */ 
           "D (disk sleep)",     /*    2 */ 
           "S (sleeping)",       /*    4 */ 
           "S (sleeping)", /*     8 */ 
           "Z (zombie)",         /*  16 */ 
           "X (dead)",           /*  32 */ 
           "x (dead)",           /*  64 */ 
           "K (wakekill)",       /* 128 */ 
           "W (waking)",         /* 256 */ 
      };  

在 line187 处修改如下:

"Gid:\t%d\t%d\t%d\t%d\n", 
                get_task_state(p), 
                task_tgid_nr_ns(p, ns), 
                pid_nr_ns(pid, ns), 
                ppid, /*tpid*/0, 
                cred->uid, cred->euid, cred->suid, cred->fsuid, 
                cred->gid, cred->egid, cred->sgid, cred->fsgid); 

修改后,重新编译kernel,替换zImage-dtb,重新编译AOSP,刷机即可。

效果:

Paste_Image.png

至于代码为啥这么改,参考:http://www.evil0x.com/posts/26301.html

假如你不想重新编译kernel,可以参考逆向修改手机内核,绕过反调试

如果觉得我的文章对你有帮助,想要打赏我,请扫下面的微信(吐槽下简书的打赏提现略坑)

Paste_Image.png

相关文章

  • 反调试检测之一TracerPid

    当我们使用Ptrace方式跟踪一个进程时,目标进程会记录自己被谁跟踪,可以查看/proc/pid/status看到...

  • 修改手机内核绕过ptrace

    前面一篇文章《Android反调试手段收集》在讲常用的反调试方法中有一条是检测进程的TracerPid的值正常情况...

  • TracerPid反调试

    前言 在很多逆向分析的时候,我们看字符串信息经常能看到TracerPid等关键字,这是一个反调试常用的手段。这次我...

  • frida调试不了怎么办?着急,在线等!

    一、目标 frida越来越流行,针对他的检测也越来越多了,什么特征串检测,TracerPid检测,双进程保护。搞的...

  • 编译libc.so过time函数反调试

    根据论坛各位大神的文章,了解了Android的各种反调试机制,如tracerpid, time。 其中的trace...

  • 3.30

    建筑智能化工程的调试检测要求 本部分包括调试检测实施,自动监控设备的检测机安全防范工程的调试检测要求 调试检测实施...

  • iOS 给APP安全升级

    检测设备是否越狱 检测设备网络环境是否开启代理 APP 禁止动态调试 如果你在Xcode调试环境下,去掉#ifnd...

  • 反调试与反-反调试

    1. 反调试与反-反调试 1.1 常用反调试 1.1.1 ptrace 为了方便应用软件的开发和调试,从Unix的...

  • sysctl反调试&反sysctl反调试

    目录 一、关于systcl二、利用systcl做反调试(一)、了解原理(二)、反调试代码三、反sysctl反调试四...

  • Xposed 反检测

    前段时候微信封禁了一大批使用 xposed 的微信账号,对一些运营微信的企业造成的巨大损失。下面我们聊聊 xpos...

网友评论

    本文标题:反调试检测之一TracerPid

    本文链接:https://www.haomeiwen.com/subject/xyfafxtx.html