android的系统自带函数检测调试(代码片段)

小道安全 小道安全     2022-12-17     246

关键词:

简介

通过android系统自带的函数android.os.Debug.isDebuggerConnected(),
可以进行判断是否android的应用程序是否在被调试状态。

原理分析

分析android自带调试检测函数isDebuggerConnected()在native的实现;
android系统有两中模式分别为dalvik模式和art模式,下面分别对这两种模式下进行做反调试检测做解析。
1.dalvik模式下:
通过获取到进程中libdvm.so中的dvmDbgIsDebuggerConnected()函数接口
通过调用该函数就能判断app程序是否被调试状态。
dlopen(/system/lib/libdvm.so)
dlsym(_Z25dvmDbgIsDebuggerConnectedv)
2.art模式下:
在art模式下,结果存放在libart.so中的全局变量gDebuggerActive中,
符号名为_ZN3art3Dbg15gDebuggerActiveE。
但是貌似新版本android不允许使用非ndk原生库,dlopen(libart.so)会失败。
有一种麻烦的方法,手动在内存中搜索libart模块,然后手工寻找该全局变量符号。

代码实现




// dalvik模式下的代码实现

typedef unsigned char wbool;

typedef wbool (*PPP)();

int NativeIsDBGConnected()



void* Handle=NULL;
//调用系统函数进行打开so文件
Handle=dlopen("/system/lib/libdvm.so", RTLD_LAZY);
//打开文件失败
if(NULL==Handle)


    LOGA("dlopen打开libdvm.so失败!\\n");
    return -1;


//获取so里面到导出函数
PPP Fun = (PPP)dlsym(Handle, "_Z25dvmDbgIsDebuggerConnectedv");
//获取失败
if(NULL==Fun)


LOGA("dlsym获取_Z25dvmDbgIsDebuggerConnectedv失败!\\n");
return -1;



else


    wbool ret = Fun();
    if(1==ret)
    

    // 此处判定为调试模式
    LOGA("dalvikm模式,调试状态!\\n");
    return 1;




return -1;



android签名验证与反调试机制的对抗技术(代码片段)

...2.6时间差异检测2.7内置函数检测2.8调试断点检测总结前言Android的APK文件为了防止被篡改和重打包,经常会做签名校验来保证自身完整性,当程序被篡改后将提示用户或者直接退出运行。同时有些 查看详情

hive函数(系统内置函数,自定义函数)(代码片段)

文章目录系统内置函数查看系统自带的函数显示自带的函数的用法详细显示自带的函数的用法常用内置函数空字段赋值CASEWHENTHENELSEEND行转列列转行窗口函数(开窗函数)Rank(排名函数)自定义函数自定义UDF函数... 查看详情

android签名验证与反调试机制的对抗技术(代码片段)

...2.6时间差异检测2.7内置函数检测2.8调试断点检测总结前言Android的APK文件为了防止被篡改和重打包,经常会做签名校验来保证自身完整性,当程序被篡改后将提示用户或者直接退出运行。同时有些APP为了防止被攻击者动态... 查看详情

loading系列:android系统自带的loading(代码片段)

系统自带的Loading有点丑,但是代码量上,写Demo时可以用。开始转圈代码:dialog=ProgressDialog.show(MainActivity.this,"","正在加载PDF",true);dialog.dismiss(); 查看详情

android系统_msm8953_android10_adb连接adbd加入密码检测(代码片段)

...比较合适,在之前的学习我们了解过adb和adbd的通讯流程:Android系统之adb再次看到,基本通讯框图如下:首先,我们会想到,既然我们有adb需求,那么我们需要默认打开开发者选项的adb调试开关第二,根据上面的通讯流程,既然现... 查看详情

android系统_msm8953_android10_adb连接adbd加入密码检测(代码片段)

...比较合适,在之前的学习我们了解过adb和adbd的通讯流程:Android系统之adb再次看到,基本通讯框图如下:首先,我们会想到,既然我们有adb需求,那么我们需要默认打开开发者选项的adb调试开关第二,根据上面的通讯流程,既然现... 查看详情

获取和检测android的父进程(代码片段)

简介每个App的用于程序都是通过父进程zygote进行fork出来的子进程,所以zygote也是所有app的父进程。那么对于zygote进程可以用于检测判断app应该是否处于被调试状态。检测父进程原理有的时候不使用apk附加调试的方法进行逆向... 查看详情

hive3.1.2自带的系统函数及udf的随系统自动注册(代码片段)

Hive3.1.2自带的系统函数及UDF的随系统自动注册前言之前写过一篇稿子介绍了如何使用UDF函数:https://lizhiyong.blog.csdn.net/article/details/126186377其中比较重要的一个类就是GenericUDF。通过继承该类并自行实现具体算法、打Jar包、加载... 查看详情

android系统是自带分享功能(代码片段)

简介Android系统是自带分享功能的,不过也有一定的局限性,可以分享图片,文字,视频,音频等,也可以分享多图,但是不支持直接分享一个卡片(包括图文,链接),所以一般都是将... 查看详情

android常用调试命令记录(代码片段)

Android常用调试命令记录抓日志mount关闭selinux查看谁持有wakelockAndroid自带native进程内存泄露的调试工具多媒体相关dumpnative数据查看ffmpeg支持的codec和format列表下载网络DASH流抓日志同时抓adb日志和kernel日志adbshelllogcat-clogcat-vtime>/s... 查看详情

c++内存泄漏检测工具(代码片段)

C++内存泄漏检测工具1.VC自带的CRT:_CrtCheckMemory  调试器和CRT调试堆函数1.1用法:/*************************************************************************环境:VC6.0*程序功能:CRT检测内存泄漏*创建:2014/3/20*版本号:1.0***************************... 查看详情

ubuntu20.4系统安装ch340驱动并使用串口调试助手(代码片段)

目录一、安装CH340驱动1.查看ubuntu系统自带的驱动2.下载驱动3.查询操作系统的发行编号4.编译源程序5.复制ch34x.ko文件二、cutecom串口调试助手1.安装cutecom串口调试助手2.测试一、安装CH340驱动1.查看ubuntu系统自带的驱动jiki@jiki-M15X... 查看详情

图像处理——基于机器视觉技术的人脸在线识别系统设计(代码片段)

  基于机器视觉技术的人脸在线识别系统设计  本设计研究人脸检测与识别技术,在基于机器视觉技术上,构建了一套人脸在线检测识别系统,系统将由以下几个部分构成:计算机图像预处理、数据收集和预处理、人脸... 查看详情

android逆向修改运行中的android进程的内存数据(android系统中调试器进程内存流程|编译内存调试动态库以及调试程序)(代码片段)

文章目录一、Android系统中调试器进程内存流程二、编译内存调试动态库以及调试程序三、博客资源一、Android系统中调试器进程内存流程修改游戏运行中的内存,游戏运行之后,游戏进程肯定有对应的内存空间;使用注入工具将一个l... 查看详情

hive3.1.2自带的系统函数及udf的随系统自动注册(代码片段)

Hive3.1.2自带的系统函数及UDF的随系统自动注册前言之前写过一篇稿子介绍了如何使用UDF函数:https://lizhiyong.blog.csdn.net/article/details/126186377其中比较重要的一个类就是GenericUDF。通过继承该类并自行实现具体算法、打Jar包、加载... 查看详情

hive第八章hive内置函数(代码片段)

系统内置函数1)查看系统自带的函数hive>showfunctions;2)显示自带的函数的用法hive>descfunctionupper;3)详细显示自带的函数的用法hive>descfunctionextendedupper;常用内置函数NVLnvl(v1,v2)参数:第一个参数是字段... 查看详情

android系统服务死锁anr检测机制(代码片段)

Android系统服务死锁、ANR检测机制Android系统运行以后,System_server中可能有成百上千个线程在运行,各种服务之间调用很频繁,也很复杂,难免会出现死锁和长时间未响应的问题。这个问题对于系统来说是非常严重... 查看详情

实例分析linux内存泄漏检测方法(代码片段)

...trace分析内存泄露mtrace(memorytrace),是GNUGlibc自带的内存问题检测工具,它可以用来协助定位内存泄露问题。它的实现源码在glibc源码的malloc目录下,其基本设计原理为设计一个函数voidmtrace(),函数对libc库... 查看详情