绕过反调试之_TracerPid

一:先操作下
手机端运行 EncryptDemo.apk
开启动态调试
adb push d:\as /data/local/tmp/as
adb shell
su
chmod 777 /data/local/tmp/as
/data/local/tmp/as
//这里成功的话 cmd最后会显示 Listening on port #23946

adb forward tcp:23946 tcp:23946
//这里成功的话 cmd最后会显示 23946

再开启 IDA Debugger ->Attach->Remote ARMlINUX/Android Debugger
设置下 Port为 23946
ok
选择好目标包名的进程 ok
点击运行 这时发现 手机上的apk 退出 消失了;
正常的话 点运行是 正常运行的 这说明了 apk是有反调试的 检测了 它正在被调试

二:原理 及 apk里反调试
它是怎么检测到的呢?
Linux系统下 有种 Ptrace(痕迹)机制
痕迹机制 在每个进程里面都有 一个status(状态)文件 里面有很多内容
这个文件里面的 第6个字段 是 TracerPid(跟踪者) 可以通过这个值检测到 有没有被谁在调试
apk里通过这个原理 它可以这么实现
在它的so库里 添加个 thread_function 类似这样的函数 循环的打开status文件
通过检测 TracerPid 字段值是否 为0(为0则正常不为0则被调试 )被调试就 exit 退出软件

三:绕过反调试
通过上面的了解 我们知道apk里是 要 循环的打开status文件 最后检测到就 exit
那么我们可以 在 fopen 函数处 下断点 (因为它要打开

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值