zoukankan      html  css  js  c++  java
  • 浅谈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)这个代码
     








  • 相关阅读:
    tcpdump 筛选抓包
    TCP拥塞避免
    【转载】TCP协议
    go 参数传递的是值还是引用 (转)
    go 数组指针 指针数组
    go 协程
    go 接口实现
    go函数可见性
    go 继承
    go 结构体函数
  • 原文地址:https://www.cnblogs.com/jiaoxiake/p/6793906.html
Copyright © 2011-2022 走看看