浅谈android反调试之 API判断

反调试:利用Java层API来判断Android程序是否是处于被调试下。

1. 直接调用系统的android.os.Debug.isDebuggerConnected()方法
我们进行动态调试的时候,其中有一个步骤是进行jdb连接操作:jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700,当接连成功之后,android.os.Debug.isDebuggerConnected() 这个方法就会ture, 那么我们可以利用这个api来进行判断当前应用是否处于调试状态来进行反调试操作。
1118630-20170502141618820-193215537.png

解决方案:

使用反编译工具方便程序,然后搜索 isDebuggerConnected() 关键字, 然后Nop 掉改函数的调用


反调试:判断当前应用属性:ApplicationInfo.FLAG_DEBUGGABLE

调试者为了让自己的程序能够调试, 就会在反编译后AndroidMainfiest,xml 中添加:android:debuggable="true", 然后进行调试。利用这一点我们用于反调试
1118630-20170502141620492-1746498300.png
 添加这个属性之后,我们可以用dumpsys package [packagename]命令查看debug状态
1118630-20170502141621789-232693673.png
 
实现反调试的代码如下:
1118630-20170502141622961-818001313.png
 

解决方案:

使用反编译工具方便程序,然后搜索getApplicationInfo等 关键字, 然后Nop 掉改函数的调用









posted on 2017-05-02 14:16 蕉下客--) 阅读( ...) 评论( ...) 编辑 收藏

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值