WriteProcessMemory返回487 ERROR_INVALID_ADDRESS时的含义是什么?

时间:2014-02-12 14:39:03

标签: c++ windows

它在msdn网站上提供了一个非常简短的描述,说“尝试访问无效地址”。我只是不确定它是否意味着无效,因为“这不是一个地址”或“你不能使用这个地址!”

因为我不确定它是哪一个,所以很难决定下一步该尝试什么。

我对WriteProcessMemory的调用:

if(!WriteProcessMemory(hProcess, (LPVOID)loc.c_str(), (LPVOID)"Book of Stupid", sizeof("Book of Stupid"), NULL))
{
std::cout << "writefail to " + loc + "\nerror ";
std::cout << GetLastError() << std::endl;
}
谢谢你的时间

1 个答案:

答案 0 :(得分:2)

这正是它所说的,这个地址无法修改。你的函数调用看起来不对:

(LPVOID)loc.c_str()

这看起来像是一个本地的std :: string,所以你试图修改本地地址(来自你自己的应用程序),在其他一些app hProcess中?那肯定会失败。

进一步说明,假设hProcess用于当前进程,那么你必须确保loc实际上很长时间才能被修改。