我想跟踪由完成的内存分配
VirtualAlloc
. 我试着用
mhook
和
easyhook
. 只要我打电话,两个都可以
VirtualAlloc公司
我自己注册的钩子被称为,从那里我称为真实的
VirtualAlloc公司
函数和内存按预期返回。
我现在的问题是,我试图打开
SFML
-窗口和
VirtualAlloc公司
已捕获那里的调用,但未返回内存。函数调用通过sfml-window-2进行。dll并从那里调用
wglCreateContext
调用CreateAnyContext的
VirtualAlloc公司
.
wglCreateContext
在Opengl32中。dll。我猜我的用户空间代码没有为其分配内存的权限。我的问题是,如果不允许我为系统库分配内存,为什么系统库要通过相同的存根(我挂接的存根)?我如何辨别这些电话并防止其发生?
我的意思是,在我的特殊情况下,我可以等到窗户开了再挂上
VirtualAlloc公司
之后。但这将是一个非常糟糕的解决方案,因为我想跟踪任意程序,甚至可能注入我的dll来跟踪内存。
编辑:
我不仅希望跟踪程序内存,还希望能够将其重置为记录状态,同时程序的执行速度不应太慢,因为在我的情况下,它将是游戏。因此,我想从VirtualAlloc开始,设置
MEM_WRITE_WATCH
标记并跟踪返回的页面
GetWriteWatch
手动。我已经写了一个向量,可以这样重置,但我需要它更一般。
/编辑
另一件需要注意的是,我已经试过了
HeapAlloc
该函数也在所述函数中调用,但它返回内存。这就是我尝试使用两个库的原因。
非常感谢您的帮助。