【发布时间】:2014-08-10 22:27:06
【问题描述】:
我想将我的挂钩方法转换为更有效的方式。我当前的代码使用 WriteProcessMemory() 和 GetCurrentProcess(),这完全没用。我认为一个简单的 memcpy 可以很容易地做同样的事情。这是我尝试做的:
DWORD dwAddr = (DWORD)GetProcAddress(lpModule, lpFuncName);
BYTE jmp[6] = { 0xe9, 0x00, 0x00, 0x00, 0x00, 0xc3 };
memcpy((LPVOID)dwAddr, &jmp[0], 6);
//WriteProcessMemory(GetCurrentProcess(), (LPVOID)dwAddr, jmp, 6, 0);
WriteProcessMemory API 运行良好,但使用我的自定义 memcpy 时,它无法运行。谁能告诉我我在哪里失败了?
【问题讨论】:
-
太宽泛了——“不起作用”是一个无用的问题描述符。
-
对不起,你是对的。在我的情况下,“不起作用”意味着字节没有被复制到 dwAddr。
-
什么,就这样?之后它们是相同的字节吗?应用程序因错误而崩溃?究竟会发生什么?
-
它没有崩溃,字节和以前一样。
标签: c++ memory-management