首页 > 其他分享 >常见反调试技术

常见反调试技术

时间:2023-08-20 22:12:09浏览次数:42  
标签:BeingDebugged 常见 技术 mov eax ecx ebx 调试 调试器

反调试技术

一. 使用Windows API函数

1. IsDebuggerPresent函数

2.CheckRemoteDebuggerPresent函数

3.OutputDebuggerPresent函数

二. 手动检测数据结构

1. 检测BeingDebugged属性

BeingDebugged属性位于PEB结构的第二个字节位置处

mov eax, dword ptr fs:[30h];//fs:[30h]指向的是PEB的基地址
mov ebx, byte ptr [eax+2];// 指向对应的BeingDebugged属性
test ebx, ebx;
jz ... ;

2. 检测系统痕迹

遍历当前运行进程,查看是否存在调试器进程,或者使用FinWindow函数查看。

三. 识别调试器行为

1. 扫描是否存在INT3断点

INT3断点的机器码是0xcc

call $+5;
pop edi;
sub edi, 5;
mov ecx, 400h;
mov eax, 0cch;
repne scasb;
jz DebuggerPresent;

2. 时钟检测

通过对比两次运行的时间戳来判断是否存在调试器,因为如果存在调试器,运行速度会大幅度的降低。
使用rdtsc指令实现

rdtsc;
xor ecx, ecx;
add ecx, eax;//第一次运行时间
rdtsc;
sub eax, ecx;//计算两次运行时间的差值
cmp eax, 0xfff;//比较是否运行时间过长
jb NoDebuggerDetected;

标签:BeingDebugged,常见,技术,mov,eax,ecx,ebx,调试,调试器
From: https://www.cnblogs.com/ONEZJ/p/17644721.html

相关文章

  • 常见字符串操作指令
    常见的字符串操作指令在x86汇编中有很多,以下是其中一些常见的指令:MOVSB/MOVSW/MOVSD:将一个字节/字/双字从源地址复制到目的地址,并递增源和目的指针。REPMOVS:重复执行MOVSB/MOVSW/MOVSD指令,用于复制整个字符串。STOSB/STOSW/STOSD:将一个字节/字/双字的值存储到目的地址......
  • 构建高性能后端:探秘Nginx与Elasticsearch的技术协同
    在如今的信息时代,高性能的后端技术对于应用的成功至关重要。本文将深入探讨两个关键技术领域:Nginx反向代理和Elasticsearch全文搜索。通过详细的原理解析和实际代码示例,揭示它们如何协同工作,为应用的性能和效率提供强大支持。Nginx反向代理:背后的原理Nginx不仅是一款优秀的Web服务......
  • VS调试WSL中的.NET应用
    先决条件VisualStudio2019v16.9预览版1或更高版本(通过WSL可选组件进行.NET调试)。若要检查WSL组件,请选择“工具” >“获取工具和功能”。在VisualStudio安装程序中,选择“单个组件”,然后键入“WSL”搜索安装组件。安装WSL。安装分发版。笔者本地环境:Vi......
  • 只需5分钟,了解常见的四种限流算法
    一、计数器算法在指定周期内累加访问次数,当访问次数达到设定的阈值时,触发限流策略,当进入下一个时间周期时进行访问次数的清零。如图所示,我们要求3秒内的请求不要超过150次:但是,貌似看似很“完美”的流量统计方式其实存在一个非常严重的临界问题,即:如果第2到3秒内产生了150次请求,而......
  • math---常见的二次曲面
    ......
  • VScode调试时查看指针所指向的值
    如图,现有一个字符串filenames[10000]传入到了其它函数,在该函数内设置断点进行调试时该字符串仅显示了个地址(虽然后面跟着有值,但字符串过长难以观察),那么如何将其显示出来呢?解决方法: 在watch窗口添加表达式:(char(*)[想查看的位数])变量名,即(char(*)[10000])filenames 值正......
  • 尚大数据技术之高频面试题9.0.5
     尚硅谷大数据技术之高频面试题 版本:V9.0.5目录第1章核心技术...........................................................................................................................101.1Linux&Shell.........................................................
  • AIGC技术到底是什么?
    AIGC技术到底是什么?AIGC(ArtificialIntelligenceinGameCreation)技术是指利用人工智能技术来辅助游戏创作的过程。它可以通过机器学习、深度学习和自然语言处理等技术,从大量的游戏数据中提取规律和模式,进而生成游戏的内容、关卡设计、角色行为等元素。 AIGC技术可以帮助游戏......
  • 常见的Linux问题和故障排除方法
    以下是一些常见的Linux问题和故障排除方法:1.**无法启动系统**:-检查硬件连接是否正常,例如硬盘、内存等。-使用恢复模式或救援系统进行修复。-查看启动日志以找出问题所在。2.**网络连接问题**:-检查网络连接,确保网线或Wi-Fi正常。-使用`ping`命令测试网络连......
  • linux shell 函数与脚本调试
    **函数:**1.**函数定义**:使用`function`关键字或者直接写函数名来定义函数。functionmy_function(){echo"函数内容"}my_function(){echo"函数内容"}2.**函数调用**:直接使用函数名来调用函数。my_function3.**函数参数**:可以在函数中使用参数来传递值。......