系统痕迹检测
HKEY_LOCAL_macHINESOFTWAREMicrosoftWindows NTCurrentVersionAeDebug
该注册表项指定当应用程序发生错误时 , 触发哪一个调试器 。默认情况下 , 它被设置为Dr.Watson.如果该注册表的键值被修改为OllyDbg,则恶意代码可能确定它正在被调试
1
扫描代码的断点
call $+5
pop edi
sub edi,5
mov ecx,400h
mov eax,0CCh
repne scasb
jz DebuggerDeteced
对抗这种反调试技术的方法是使用硬件断点而不是使用软件断点
时钟检测
被调试时 , 进程的运行速度大大降低 , 例如 , 单步调试大幅度降低恶意代码的运行速度 , 所以时钟检测是恶意代码探测调试器存在的最常用方式之一 。
记录执行一段操作前后的时间戳 , 然后比较这两个时间戳 , 如果存在滞后 , 则可以认为存在调试器
Lab16-1
放入IDA中查看 , 这个跟lab9的一个样本是一样的 , 除了增加反调试 。
文章插图
可以看到先是检查了BeingDebugged是否为0
之后检查processheap的forceflag是否为0
文章插图
再检查NTGlobalFlag是否为70h
文章插图
如果检测到任何一个有反调试的行为就删除自身 。
文章插图
文章插图
对于这几个反调试方法都可以使用填充0的方法进行绕过
dump ds:[fs:[30] +0x18] + 0x10
dump fs:[30]
dump fs:[30]+0x68
文章插图
文章插图
也可以手动修改寄存器的值 , 让其跳转产生改变 。
文章插图
剩下的功能点前面都分析过了 , 就不继续分析了 。
Lab16-2
这里用PEView查看
文章插图
放入IDA中查看 。
文章插图
arg_4与1比较 , 说明只在程序刚开始的时候有用 。
文章插图
查看有无OllyDbg.
BeingDebugged , 之后通过检查这个值 , 进行调试判断 。
文章插图
之后发现通过OutDebugStringA检测调试器
推荐阅读
- 当大厂程序员已开始用AI写代码 人类会被AIGC淘汰吗?
- C/C++的8种时间度量方式以及代码片段
- |车珠子有瘾?高端大气和田玉手串!让您一次看过瘾!
- 端午节有什么活动
- 高考|职校老师自掏腰包发红包引导学生学习兴趣,家长批评老师恶意诱导
- 中国网络经纪人登录58?房产中介经纪人怎么在网上开58端口?
- 端午节的寓意和意义~~端午节的寓意和内涵?
- 招聘|在为年终复盘抓狂吗?华为笔记本超级终端打造智慧化“职场利器”
- 前端开发和UI有什么区别 前端ui库
- 大学生|大学毕业去当高端家政,住豪宅、开飞机,到头来被说是高学历丫鬟