【发布时间】:2013-10-29 06:35:52
【问题描述】:
我需要从不同的应用程序中读取程序的内存。 我有整个流程和应用程序的“连接”。
我有一个函数可以在打开的进程的内存中搜索模式,并且由于签名,它返回了我感兴趣的函数的有效入口点。
问题是,将我引向数据的汇编指令(我无法通过偏移量或签名找到)如下:
H5Calc.exe+12DDC5B - E8 10F1FFFF - call H5Calc.exe+12DCD70
我四处搜索,发现这可能符合我的目的:
return (MainClass*) *(DWORD*) PatternPointer;
但问题是,如果使用“注入”,上面的行会起作用,而我正在使用 ReadProcessMemory,因为我不允许这样做。
那么,有人可以帮忙“翻译”一下吗
(MainClass*) *(DWORD*) PatternPointer;
指针操作进入 ReadProcessMemory 调用,考虑汇编指令? 鉴于我是从另一个应用程序打开的,如果不使用 ReadProcessMemory(我可以定期调用它以进行其他操作),我将无法访问 H5Calc 内存区域。
任何帮助表示赞赏。
谢谢。
【问题讨论】:
-
ReadProcessMemory(hProc, (void *)0x12DCD70, &data, sizeof data, NULL);,也许吧? (当然,假设data是DWORD或指针。) -
我同意这似乎合乎逻辑,但我不知道如何从
'e8 10f1ffff'或1sddc5b <= this one the address i get to from the signature中取出'12dcd70':( -
它在您发布的代码的右侧...
-
真的,但这是来自调试器的调试信息。在使用我的模式查找例程时,该信息是未知的,我只能访问
e8 10f1ffff0字节序列。 -
在这种情况下,here's how you can do that。
标签: c++ pointers readprocessmemory