第一个不工作,但第二个工作良好,但为什么呢?
WriteInt32((IntPtr)0x4EE444, 0); WriteInt32((IntPtr)0x510CE0, 0);
它没有给出任何错误消息它只是没有改变它
第一个不工作,但第二个工作良好,但为什么呢?
WriteInt32((IntPtr)0x4EE444, 0); WriteInt32((IntPtr)0x510CE0, 0);
它没有给出任何错误消息它只是没有改变它
0x4EE444 地址可能没有写入所需的正确内存保护常数。当您处理可执行内存时,通常就是这种情况。在这种情况下,您必须使用VirtualProtectEx来获得正确的内存权限。通常 PAGE_EXECUTE_READWRITE 是最佳选择,因为您需要写访问权限,但您还希望它保留可执行权限,因为如果您剥离内存页面的可执行权限,则会导致错误,如果指令指针指向该内存区域并且没有可执行权限。
在覆盖任何汇编指令之前,您需要执行此操作。在将原始页面保护修改为更加隐蔽之后,恢复原始页面保护也是一种很好的做法。
对于您关于“无错误消息”的问题,包括 WriteProcessMemory 和 VirtualProtect 在内的大多数 Windows API 函数的返回值将指示函数的成功或失败,如果不是这种情况,您可以随时调用 GetLastError() 后记并检查错误代码。