博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浅谈Android反调试 之 PTRACE_TRACEME
阅读量:6874 次
发布时间:2019-06-26

本文共 638 字,大约阅读时间需要 2 分钟。

反调试原理:

关于Ptrace:  
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关系。如下图:
1118630-20170501235355976-127912821.png
我们知道调试Android应用程序,必须调用附加进城,此刻必须调用
ptrace(PTRACE_ATTACH). 此刻进程从程序已经被Tracce, 此刻ptrace必会失败。利用这一点我们就可以做反调试。
实现代码如下:
1118630-20170501235356570-1266351707.png
解决方案:NOP调用 ptrace(PTRACE_TRACEME)这个代码
 
posted on
2017-05-01 23:54 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/jiaoxiake/p/6793906.html

你可能感兴趣的文章
KSQL日期字段访问
查看>>
DateTimeHelper
查看>>
mysql5.7 新增的json字段类型
查看>>
算法 表达式求值
查看>>
用Qt写了一个qq客户端,采用webqq协议,发出来和大家分享一下---大神请无视
查看>>
ResulsetHandler九个实现类
查看>>
python 函数
查看>>
找出在使用临时表空间的SQL
查看>>
MapReduce 学习(一)
查看>>
专访李智慧:架构是最高层次的规划和难以改变的决定
查看>>
HTML5 入门基础
查看>>
Laravel 中的 Many-To-Many
查看>>
Codeforces 371C Hamburgers(二分基础题)
查看>>
django 自定义tag和filter
查看>>
FileWriter写数据路径问题及关闭和刷新方法的区别
查看>>
Page Layout里的javascript (jquery)不执行
查看>>
JS中的发布订阅模式
查看>>
解析JMeter的JTL文件
查看>>
1-N中1出现的次数
查看>>
springmvc自定义视图
查看>>