内存地址值变化监听器

Posted

技术标签:

【中文标题】内存地址值变化监听器【英文标题】:Memory address value change listener 【发布时间】:2017-01-02 20:07:00 【问题描述】:

是否可以使用 VC++ 以编程方式等待特定内存地址的值发生变化,然后在没有无限循环的情况下对其进行处理?为了获得我使用 ReadProcessMemory 函数的值。

【问题讨论】:

你可以创建一个线程一直读取内存直到地址改变。 @bhazero025 这就是我目前正在做的事情。我正在寻找另一种方法,因为该方法使用了我 12% 的处理器。 澄清:我们可以安全地假设您正在窥探其他进程而不是您自己的进程吗? @user4581301 是的。我正在读取另一个进程的地址,这是我创建的程序。 变更后多久需要知道变更?您可以设置一个 1 毫秒的滴答声并休眠一毫秒。您应该在大约 2 毫秒内知道。 【参考方案1】:

你可以像 Visual Studio 做数据断点一样做:

只要您的程序只能在 X86 处理器上运行,并且作为系统管理员,您应该能够使用 debug registers 实现此目的。但是,这些仅用于调试目的,不应在生产中使用。

【讨论】:

【参考方案2】:

这里有一个名为 WaitOnAddress 的函数:https://msdn.microsoft.com/en-us/library/windows/desktop/hh706898(v=vs.85).aspx 当地址在当前进程中更改时,它会发出等待线程的信号。如果您指的是通过 IPC 执行此操作,我不一定认为这是您正在寻找的答案。但是,如果您是通过 IPC 执行此操作,则可以进行代码注入并使用相同的功能完成此操作。

【讨论】:

以上是关于内存地址值变化监听器的主要内容,如果未能解决你的问题,请参考以下文章

vue组件间传递对象的深拷贝

Python赋值和拷贝

python赋值和拷贝

验证python中函数传参是引用传递

js深复制

CUDA:统一内存和指针地址的变化?