阅读:2182回复:0
有做过windows下Intel IA32调试器的兄弟请过来
为了追踪数据流,我决定用IA 32的 DrX系列寄存器来做数据记录分析。我先用Instruction Breakpoint 截取函数入口,再通过堆栈得到返回地址设置Instruction BP截取返回值。为了跳过Instruction BP我先disable instruction bp并且使用TF标志运行到下一条语句之后再enable instruction bp.
程序用VC6写出来但是有些问题请教(我的机器是PIII800): 1. 设置EFlags的RF 标志可以用来暂时跳过Instruction Breakpoint直接继续运行,但是为什么用SetThreadContext好像没有办法设置这个标志(用GetThreadContext取出来的时候没有设置上,并且确实也无效,intel文档上说有些flags在某些堆栈命令中无法获取,是这个原因吗)? 2. 我写的程序对付CreateFile, SeekFile, ReadFile挂住可以正常运行,但是修改用来截取DrawTextA的时候设置EFlags的TF标志之后上来的调试事件很奇怪,每次Context.Dr6都是0,因为没有办法判断single step 状态标志,程序逻辑就乱了,请问什么原因会造成这种情况? |
|