-1
它在msdn网站上提供了一个非常简短的描述,说“尝试访问无效地址”。我只是不确定它是否意味着无效,因为“这甚至不是地址”或者“你不能使用这个地址!”当WriteProcessMemory返回487个ERROR_INVALID_ADDRESS时,这意味着什么?
因为我不知道它是哪一个,所以很难决定接下来要做什么。
我到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;
}
感谢您的时间
使用'sizeof(“Book of Stupid”)'是非常错误的,因为它给你一个指针的大小(通常是4或8个字节,取决于你的系统),而不是你的字符串的长度因为你可能期待... –
这意味着它说,地址是无效的。在你的过程中,* loc *的地址在另一个过程中也是有效的几率很低。它是一个有效地址并且做你希望它的可能性是-100% –
@barakmanos:实际上,no,sizeof(“constant string”)给出了字符串的长度(包括终止符)。 (或者至少,这就是它在MSVC中的作用,我想它是标准的,但我不确定。) –