//非Debug 编译,反调试检测

if(!BuildConfig.DEBUG) {

if(isDebuggable()) {

exit(0);

}

Thread t = new Thread(new Runnable() {

@Override

public void run() {

while(true) {

try {

sleep(100);

if(Debug.isDebuggerConnected()) {

exit(0);

}

if(isUnderTraced()) {

exit(0);

}

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}, "SafeGuardThread");

t.start();

}

if(isUnderTraced()) {

System.exit(0);

}

CrashReport.initCrashReport(getApplicationContext(), "4abcbaaf23", BuildConfig.DEBUG);

}

private boolean isUnderTraced() {

String processStatusFilePath = String.format(Locale.US, "/proc/%d/status", android.os.Process.myPid());

File procInfoFile = new File(processStatusFilePath);

try {

BufferedReader b = new BufferedReader(new FileReader(procInfoFile));

String readLine;

while ((readLine = b.readLine()) != null) {

if(readLine.contains("TracerPid")) {

String[] arrays = readLine.split(":");

if(arrays.length == 2) {

int tracerPid = Integer.parseInt(arrays[1].trim());

if(tracerPid != 0) {

return true;

}

}

}

}

b.close();

} catch (Exception e) {

e.printStackTrace();

}

return false;

}

public boolean isDebuggable() {

return 0 != ( getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE );

}

android动态调试防止,Android应用防止so注入防止动态调试参考代码相关推荐

  1. 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 注入工具收尾操作 | 关闭注入的动态库 | 恢复寄存器 | 脱离远程调试附着 )

    文章目录 一.dlclose 函数简介 二.关闭注入的 libbridge.so 动态库 三.恢复寄存器 四.脱离远程调试附着 一.dlclose 函数简介 dlclose 函数的作用是 卸载一个 指 ...

  2. Android逆向之旅---Android中分析抖音和火山小视频的数据请求加密协议(IDA动态调试SO)

    一.前言 最近萌发了一个做app的念头,大致什么样的app先暂时不说,后面会详细介绍这个app的开发流程和架构,不过先要解决一些技术前提问题,技术问题就是需要分析解密当前短视频四小龙:抖音,火山,秒拍 ...

  3. 【Android 逆向】Android 进程代码注入原理 ( 注入本质 | 静态注入和动态注入 | 静态注入两种方式 | 修改动态库重打包 | 修改 /data/app/xx/libs 动态库 )

    文章目录 一.注入本质 二.静态注入和动态注入 三.静态注入两种方式 ( 修改动态库重打包 | 修改 /data/app/packageName/libs/ 下的动态库 ) 一.注入本质 进程注入本质 ...

  4. 【Android 逆向】修改运行中的 Android 进程的内存数据 ( Android 命令行中获取要调试的应用进程的 PID | 进程注入调试进程内存的 so 库 )

    文章目录 一.Android 命令行中获取要调试的应用进程的 PID 二.进程注入调试进程内存的 so 库 一.Android 命令行中获取要调试的应用进程的 PID 前置博客 [Android 逆向 ...

  5. 【Android FFMPEG 开发】Android Studio 工程配置 FFMPEG ( 动态库打包 | 头文件与函数库拷贝 | CMake 脚本配置 )

    文章目录 I . FFMPEG 交叉编译后的函数库及头文件 II . FFMPEG 静态库打包动态库 ( 仅做参考 ) III . 创建 Android Studio 工程 IV . FFMPEG 头 ...

  6. android 动态录音权限,Android如何判断手机是否有录音权限的工具类

    作用 判断手机是否有录音权限的工具类,兼容6.0以上以及以下android系统 测试环境 这篇文章是评论中的网友提出质疑后,经过重写修改与重写测试后编写的,我的调试环境是小米note3,Android ...

  7. vs2015 linux jni,使用Visual C++ 跨平台移动技术调试JNI Android 应用程序

    使用Visual C++ 跨平台移动技术调试JNI Android 应用程序 02/05/2015 6 分钟可看完 本文内容 [原文发表时间] 2014/12/12  4:22PM 之前我们已经介绍了 ...

  8. Android开发周报:Android Studio2.0发布、Activity动态创建

    新闻 <Android Studio 2.0发布 增加代码热更新功能>:在近日的Android开发者大会中,Google高调发布了Android Studio 2.0.然而就在不到一周之前 ...

  9. android的反调试方法,Android平台融合多特征的APP反调试方法与流程

    本发明涉及Android平台融合多特征的APP反调试方法,属于计算机与信息科学技术领域. 背景技术: 应用程序本身并不具备反调试的功能,但是动态调试是动态分析应用逻辑.动态脱壳等攻击方式所采取的必要手 ...

  10. android+反调试+方案,Android反调试笔记

    1)代码执行时间检测 通过取系统时间,检测关键代码执行耗时,检测单步调试,类似函数有:time,gettimeofday,clock_gettime. 也可以直接使用汇编指令RDTSC读取,但测试AR ...

最新文章

  1. java跳转语句包含goto_Java 语句标签实现goto跳转
  2. 我在OSC的第一篇博文
  3. CentOs7中安装sonarQube服务系列------3.安装SonarQube服务器
  4. 蚌埠粮食经济技师学院计算机,安徽粮食经济技师学院2020年有哪些专业
  5. python笔试常见题
  6. 前端学习(130):HTML和CSS发展历史
  7. 第十章触发器的创建与管理
  8. xshell与xftp如何实现相互连接
  9. EncryptionHelper.cs(20170223)
  10. excite-punastranvirtual.lab振动噪声仿真
  11. 【测试】禅道搭建在服务器上的操作步骤
  12. 剑指offer面试题[17]-合并两个排序的链表
  13. SpringBoot启动流程原理+自动装配原理
  14. java libtorrent_基于libtorrent最简单的BT下载程序 | 学步园
  15. 10000个怎么用js写 创建li_JavaScript给每一个li节点绑定点击事件的实现方法
  16. Autovue 21.0.2.4 发布
  17. 将查询好的快递单号以及物流导出EXCEL表格
  18. 同步、异步 阻塞、非阻塞
  19. 马上加薪!测试,你的职业发展...
  20. 俩人同样写代码,我拿七千他咋五万八...(文末送书)

热门文章

  1. CROC-MBTU 2012, Elimination Round (ACM-ICPC) E. Mishap in Club
  2. Android SDK Manager无法显示可供下载的未安装SDK解决方案
  3. 【干货】2021年技术趋势:全球企业加速数字化转型-德勤.pdf(附下载链接)
  4. 原生xgboost与sklearn里的xgboost
  5. 数据挖掘之CTR预估(FM算法)
  6. 搜索推荐广告中的Position Bias:美团DPIN
  7. 一个模型搞定多个CTR业务!阿里STAR网络介绍(附代码实现)
  8. android+程序崩溃,Android平台程序崩溃的类型及原因列举
  9. 面试pythone_叮!你需要的Python面试指南以送到!
  10. matlab求递归问题,matlab利用递归求解差分方程