Android native反调试方式及使用IDA绕过反调试

本文介绍了Android native层常见的反调试手段,包括ptrace、检查TracerPid、时间间隔检测和硬件信息检测,并详细讲解了如何利用IDA进行反反调试。通过IDA Patch SO和动态修改内存数据,成功绕过反调试代码,实现对目标程序的顺利调试。
摘要由CSDN通过智能技术生成

    0x00

     为了避免我们的so文件被动态分析,我们通常在so中加入一些反调试代码,常见的Android native反调试方法有以下几种。

     1、直接调用ptrace(PTRACE_TRACEME, 0, 0, 0),参考Android Native反调试

     2、根据上面说的/proc/$pid/status中TracerPid行显示调试程序的pid的原理, 可以写一个方法检查下这个值, 如果!=0就退出程序。参考Android Native反调试,用JNI实现APK的反调试

     3、检查代码执行的间隔时间,参考Android应用方法隐藏及反调试技术浅析的0×03反调试初探。

     4、检测手机上的一些硬件信息,判断是否在调试器中,参考Android应用方法隐藏及反调试技术浅析0×03反调试初探。


   0x01

    那么我们如何过掉这些反调试呢?

    我们以阿里比赛第二题为例,参考安卓动态调试七种武器之孔雀翎 – Ida Pro

    我们讲解两种方式:

    1、Ida Patch so

    2、Ida动态修改内存数据和寄存器数值

  

    我们首先讲解Ida Patch so,有几处都可以patch。我们从易到难依次讲解。

    第一处:

    我们在JNI_ONLOAD下断点,如下图:


     依次单步执行到BLX R7


评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值