我无法更改没有偏移量的地址的值



第一个不起作用,但第二个工作正常 但是为什么?

WriteInt32((IntPtr)0x4EE444, 0); WriteInt32((IntPtr)0x510CE0, 0);

它不会给出任何错误消息,只是不会更改它

0x4EE444地址可能没有写入所需的正确内存保护常量。 当您处理可执行内存时,通常就是这种情况。 在这种情况下,您必须使用 VirtualProtectEx 来获取正确的内存权限。 通常PAGE_EXECUTE_READWRITE是最佳选择,因为您需要写入权限,但您还希望它保留可执行权限,因为如果剥离内存页的可执行权限,如果指令指针指向内存区域的该区域并且没有可执行权限,则会导致错误。

在覆盖任何汇编指令之前,您需要执行此操作。 在将原始页面保护修改为更隐蔽后恢复原始页面保护也是一种很好的做法。

对于有关"无错误消息"的问题,大多数Windows API函数(包括WriteProcessMemory和VirtualProtect)的返回值将指示函数的成功或失败,如果不是这种情况,您可以随时调用GetLastError()后记并检查错误代码。

最新更新