Abh*_*jit 0 c++ windows visual-c++
在Windows(32位和64位)中,通过程序(C++)可以确定某个内存位置是否已更改?我试图推断我们在Visual Studio中可以设置数据断点的概念.
使用案例:I understand its a dirty hack, but the fastest to implement to be re-implemented later
我跨进程边界共享数据(在32位客户端和64位服务器之间读取).客户端分配内存(超出我们的控制范围)并将地址传递给服务器.服务器分配存储以遮蔽客户端内存,并通过各种代码路径可以更新该阴影内存位置.而不是识别和捕获每个位置(我试图找到一个更容易的路径),在变更时引发事件并最终将数据写回到WriteProcessMemory客户端进程
虽然它可能可以找到使用组合的解决方案VirtualProtect和视窗调试接口,我不确定这是一个特别好的解决方案.其中一个问题是,您在每次新写入时都会引入延迟,并且您正在查看转移到另一个正在将程序监视为"调试器"的进程.然后,该过程必须"取消保护"该页面,将其标记为"更新"其他服务器(或客户端,具体取决于您要前往的方向),并"继续"进行更新的应用程序.这非常耗时.当然,没有什么简单的方法可以知道写作过程何时完成了一系列更新.当有SEH"__except"调用时,您还需要准确知道"继续"的位置,并且它并不总是完全无关紧要,
当我使用图形时,我知道我们和一些竞争对手的驱动程序会这样做,首先写保护内存,然后通过挂钩到窗口自己的页面错误处理程序,查看页面错误,看看它是否是特殊区域,如果是,则将该页面标记为已更新并将其重置为可写入.这允许驱动程序仅复制更新的区域.但在这种情况下,在完成所有更新后,有一个明显的"我想画这个东西".