大家都知道VirtualProtectEx可以修改某进程内存地址空间页属性,但是当你要修改的地址跨两个页面时,这两个页面的属性都被修改了,但是VirtualProtectEx参数中只有一个参数用来保留原来页面的属性,原来的属性却只保留了两个页面中第一个页面的属性,这时候如果要恢复原来两个页面的属性怎么办?只能恢复两个页面中第一个页面的属性了,而第二个页面原来的属性却不知道!!!
BOOL VirtualProtectEx(
HANDLE hProcess, // 要修改内存的进程句柄
LPVOID lpAddress, // 要修改内存的起始地址
DWORD dwSize, // 修改内存的字节
DWORD flNewProtect, // 修改后的内存属性
PDWORD lpflOldProtect // ×××修改前的内存属性的地址;保存修改前页面属性; ×××//
);
BOOL VirtualProtectEx(
HANDLE hProcess, // 要修改内存的进程句柄
LPVOID lpAddress, // 要修改内存的起始地址
DWORD dwSize, // 修改内存的字节
DWORD flNewProtect, // 修改后的内存属性
PDWORD lpflOldProtect // ×××修改前的内存属性的地址;保存修改前页面属性; ×××//
);
不过一般来说,一段空间内的页面页面属性应该都是一样的。