• 主页
  • Windows 10
  • Windows 8
  • Windows 7
  • Vista
  • Windows XP
  • Windows 9X
柳光头 2014年01月03日
如何监视进程内内存被修改
【问题】
我们的代码,C++写的一个软件,其中一个对象有HANDLE类型的成员变量m_hSemaphore。
该变量一开始都能正常WaitForSingleObject(),但运行一段时间后,发现WaitForSingleObject会出错,Errno=6,也就是句柄无效。
注:
1. 这个过程中,我没有主动关闭句柄,对象本身也没被释放。
2. 有时也发现在头文件中声明m_hSemaphore的附近的其他句柄也会失效。比如下面:

HANDLE m_hMutex; //也可能会失效
HANDLE m_hSemaphore;


【本人推测】
可能是内存越界了,由于代码量比较大,没法一一核实。

【期望的解决方法】
Step1. 在对象被生成后,监视HANDLE m_hSemaphore所在上下文的内存,有类似的回调函数可用么?
(Windows写内存的底层函数是什么,可以被hook么?)
Step2. 如果Step1可行,能获取到是哪个函数修改的么?

【其它】
即使不用是上述方法,如果能给出其它建议,是受欢迎的;
包括对症状本身的分析,也是欢迎的。
...全文
118 点赞 收藏 2
写回复
2 条回复

还没有回复,快来抢沙发~

发动态
发帖子
Windows客户端使用
创建于2009-05-21

9262

社区成员

1.3w+

社区内容

Windows客户端使用相关问题交流社区
社区公告
暂无公告