如何查找非预期的栈写操作?

liixixi 2011-11-01 09:26:21
我面对的是一个超过1000万行代码的可分布式部署的基于Windows工程。在某个20台电脑联机测试的环境中,我们发现了不定机器,不定时的crash。

通过分析dump file发现,当前EIP地址比可能的地址少一,导致执行了非预期的X86指令,导致崩溃。

EIP被减一,我猜是某个特定的代码,对于栈上的地址计算错误,把某函数的返回地址减一,导致该函数ret时,EIP比实际少一。

我的问题是,能否通过某种手段,查找到把EIP减一的代码。

非常感谢。
...全文
106 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
liixixi 2011-11-01
  • 打赏
  • 举报
回复
被修改的返回地址并不是有规律的,我并不知道那个函数会被修改,无法设定内存访问断点。

有办法判断当前CPU执行了CALL吗,如果有,我可以考虑给所有返回地址设内存访问断点。
luciferisnotsatan 2011-11-01
  • 打赏
  • 举报
回复
调试器可以设置内存访问断点。

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧