Apocalypse
驱动牛犊
驱动牛犊
  • 注册日期2003-04-28
  • 最后登录2007-10-24
  • 粉丝0
  • 关注0
  • 积分90分
  • 威望9点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
阅读:2182回复:0

有做过windows下Intel IA32调试器的兄弟请过来

楼主#
更多 发布于:2007-10-09 14:55
为了追踪数据流,我决定用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 状态标志,程序逻辑就乱了,请问什么原因会造成这种情况?
游客

返回顶部