浅谈android反调试之 API判断
2017-05-02 14:16
295 查看
反调试:利用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来进行判断当前应用是否处于调试状态来进行反调试操作。解决方案:
使用反编译工具方便程序,然后搜索isDebuggerConnected() 关键字, 然后Nop 掉改函数的调用反调试:判断当前应用属性:ApplicationInfo.FLAG_DEBUGGABLE
调试者为了让自己的程序能够调试, 就会在反编译后AndroidMainfiest,xml 中添加:android:debuggable="true", 然后进行调试。利用这一点我们用于反调试添加这个属性之后,我们可以用dumpsys package [packagename]命令查看debug状态
实现反调试的代码如下:
解决方案:
使用反编译工具方便程序,然后搜索getApplicationInfo等关键字, 然后Nop 掉改函数的调用null
相关文章推荐
- android API 积累之 可以判断是否是view 是否是 Imageview 的实例
- 【Android】自动判断调试环境决定是否打印日志
- android 判断当前api版本号是否大于23
- 浅谈Android调试工具ADB
- 浅谈android蓝牙电话API调用及相关代码
- Android判断是否已经开启开发者调试模式以及引导用户去开启相应设置
- Android中判断当前API的版本号
- 请教一个问题,Android应用运行时在调用某个API(比如相机)时,系统如何判断这个应用是否具备相应的权限?
- 请教一个问题,Android应用运行时在调用某个API(比如相机)时,系统如何判断这个应用是否具备相应的权限?
- Android Studio使用Android_Serialport_Api调试串口
- 浅谈Android反调试 之 PTRACE_TRACEME
- 浅谈被加壳ELF(即android的so文件)的调试
- Android手动卸载同包名冲突的APP,卸载系统预装APP,开发板android-serialport-api调试工具卸载
- 请教一个问题,Android应用运行时在调用某个API(比如相机)时,系统如何判断这个应用是否具备相应的权限?
- Android第二十六课 调试模式 file.exits判断目录异常
- 浅谈android反调试之 转发端口
- Android中判断当前API的版本号方法
- Android 应用, 手机调试 minSdk(API 23)> deviceSdk
- 浅谈android反调试之轮询TracePid(解决方案是特色)
- android 复制、粘贴字符串 (判断API 11 )