首页
社区
课程
招聘
[讨论]这种硬件断点反调试用法谁见过哈哈
发表于: 2018-5-16 21:56 6715

[讨论]这种硬件断点反调试用法谁见过哈哈

2018-5-16 21:56
6715
看了个私服的反调试,真的是涨见识了,写个他大概的利用硬件断点防止调试的方式给大家看看

线程设置 4个硬件写入断点,下面的代码eax 里就是 硬件断点的内存,每执行一次,进入硬件断点处理程序 处理当前EIP的值,线程创建后经过一堆代码vm的没仔细看,开始下面的 利用硬件断点来处理流程

大概流程:
这里的时候EAX里的值就是 4个硬件断点设置的硬件写入地址
-------------------------------------------------------------------------------------------------------------代码开始
 
mov [eax],al                                                                                   dr0触发,异常处理程序 调整eip

nop
nop

mov [eax],al                                                                                   dr1触发,异常处理程序 调整eip

nop

nop

空白处是错误代码或者无效代码


mov [eax],al                                                                                   dr2触发,异常处理程序 调整eip 到

nop

nop

空白处是错误代码或者无效代码

mov [eax],al                                                                                   dr3触发,异常处理程序 调整eip

nop

nop

空白处是错误代码或者无效代码

然后是一大堆00代码无效代码
00 00           ADD BYTE PTR DS:[EAX],AL 
00 00           ADD BYTE PTR DS:[EAX],AL 
00 00           ADD BYTE PTR DS:[EAX],AL 
00 00           ADD BYTE PTR DS:[EAX],AL 
00 00           ADD BYTE PTR DS:[EAX],AL 
00 00           ADD BYTE PTR DS:[EAX],AL 
00 00           ADD BYTE PTR DS:[EAX],AL 
......
......
......

GetEIP()              通过dr0或者dr3 触发后的异常处理程序将eip定位到这里计算出功能代码地址,CRC了之类的,然后再跳到开头


-------------------------------------------------------------------------------------------------------------代码结束

有意思的地方开始了,因为他的硬件写入断点被覆盖,无法进入他的异常处理程序,没人修EIP了,导致od即便断到这里,也完全无法运行,因为不知道下一步EIP怎么走,实际代码比我上面写的混乱的多.
实际上下任何硬件断点,只要覆盖他本身的硬件断点,运行就会造成这4个线程出错


第一次见这么用硬件断点的,帖出来给大家伙看看








[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2018-5-16 23:06 被小希希编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 457
活跃值: (218)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
不是啥热门方法了    很老的方式了  至少这方法我都用了好几年了
2018-5-17 09:06
0
雪    币: 457
活跃值: (218)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
简单来说就是利用VEH来修正被有意混乱的eip,veh被调试器拦截后eip无法修正就gg了
2018-5-17 09:07
0
雪    币: 6586
活跃值: (4546)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
4
机械瞑衍 简单来说就是利用VEH来修正被有意混乱的eip,veh被调试器拦截后eip无法修正就gg了
麻烦问一下  VEH在虚拟机不起作用是什么情况
2018-5-17 09:50
0
雪    币: 2694
活跃值: (80)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
5
2018-5-17 12:32
0
雪    币: 1832
活跃值: (4050)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
机械瞑衍 不是啥热门方法了 很老的方式了 至少这方法我都用了好几年了
呵呵,我还是第一次见到,这个硬件断点玩的不错
2018-5-17 12:47
0
雪    币: 26
活跃值: (321)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
目测 单人服
2018-11-4 19:19
0
雪    币: 261
活跃值: (547)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
遇到了神似的反调试
2019-3-27 10:49
0
游客
登录 | 注册 方可回帖
返回
//