读进程内存事件

时间:2013-11-20 23:20:02

标签: c# winforms

我正在从内存中的进程中读取数据。按预期工作。现在我只是在计时器中运行代码来检查更改。

我想知道是否有任何方法可以创建一个事件,只要内存在某个地址发生变化(我明显知道)就会触发。我不是整个计时器解决方案的忠实粉丝。

private static extern bool ReadProcessMemory(IntPtr hProcess, 
                             UIntPtr lpBaseaddress, [Out] byte[] lpBuffer, 
                             UIntPtr nSize, IntPtr lpNumberOfBytesRead);

public static int ReadInt(long address)
{
    byte[] buffer = new byte[sizeof(int)];
    ReadProcessMemory(PHandle, (UIntPtr)address, buffer, (UIntPtr)4, 
                                                                 IntPtr.Zero);
    return BitConverter.ToInt32(buffer, 0);
}

1 个答案:

答案 0 :(得分:2)

理论上有 - 它被称为数据断点 - 但没有用于设置它们的公共API。 Here是如何直接完成的,但你最好不要考虑利用WinDbg或ADPlus或其他现有的调试器。与CPU的调试寄存器混淆是一种快速,轻松的BSOD方式。