首页
社区
课程
招聘
[求助]Drx寄存器除了G(S)etThreadContext以外,还有没有其他方法读写?
发表于: 2009-7-12 11:10 5400

[求助]Drx寄存器除了G(S)etThreadContext以外,还有没有其他方法读写?

2009-7-12 11:10
5400
Drx寄存器除了G(S)etThreadContext以外,还有没有其他方法读写?
研究一个Securom的壳,通过GetVersion函数已经把OEP找到,但是由于它会修改Drx寄存器导致硬件断点不管用,而软件断点无法下在自修改模块上。
硬件下断GetThreadContext和SetThreadContext都没有断下,NtGetThreadContext和NtSetThreadContext也是如此。而且如果通过观察,它似乎用Drx存取了一些数据,所以用PhantOm(不知道它的原理是什么)保护Drx,就无法正常运行起来。
由于不能使程序断在OEP处,dump出来的东西总是存在些问题的。它到底是怎么读写Drx寄存器的?请赐教!

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

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 2242
活跃值: (488)
能力值: ( LV9,RANK:200 )
在线值:
发帖
回帖
粉丝
2
制造异常 然后得到CONTEXT结构
然后将调试寄存器清零
这是壳很常见的手段阿
2009-7-12 12:36
0
雪    币: 359
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
如何将调试寄存器清零?mov dr0, eax都报异常啊,难道是int 2e进ring0修改的?问题是不同系统的服务号未必相同啊。
2009-7-12 16:07
0
雪    币: 359
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
我知道了,是修改参数中对应drx的内容,处理程序返回后自动修改drx寄存器,谢谢了。
2009-7-12 19:56
0
游客
登录 | 注册 方可回帖
返回
//