首页
论坛
课程
招聘
[调试逆向] [原创]调试器设计_单步调试
2009-9-10 11:28 3244

[调试逆向] [原创]调试器设计_单步调试

2009-9-10 11:28
3244
调试器的单步调试很多地方都有用到,比如,下一个int3断点后,在程序被抛出异常被调试器捕捉后,为了让程序继续运行下去,就需要设置EIP,并且改回断点原来的数据。然后,单步调试程序,在EIP到下一个指令的时候,又一次将断点位置的数据改成int3.

下单步的方法很简单:

获取线程(GetThreadContext)然后lpcontext.EFlags|=0x100;,在SetTreadContext就可以了,但是每次都会被cpu清零,如果要继续单步,需要再次设置。

还有需要小心的是,硬件断点在没有其他特殊处理的话,是作为一个单步异常抛出的(EXCEPTION_SINGLE_STEP),如果调试器有硬件断点功能,但是,有没有专门的处理代码,那么,在EXCEPTION_SINGLE_STEP里面,至少需要对调试寄存器的值清零。否则,程序将反复在硬件断点地址来回运行。

其他小问题还是很多,就不多说了。

[公告]请完善个人简历信息,招聘企业等你来!

收藏
点赞0
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回