我想更改对 Dll 中空洞函数的内存页的保护,使其不再可执行。
这会影响将相同 dll 映射到虚拟地址空间的其他进程吗?
TL;DR:不,它没有。
NX 位在虚拟/页面级别工作。每个进程都有自己的虚拟地址空间,不能直接影响另一个进程的地址空间(共享内存除外)。
不同的进程可以共享 DLL 的映射页。如果一个进程更改了一个页面,写入时复制启动并且该进程获得该页面的唯一副本,则其他进程的 DLL 视图不受影响。
有关 NX 的更多信息,请参阅英特尔® 64 和 IA-32 架构软件开发人员手册(第 3A 卷已链接,共 7 卷)。
此外,这是一篇较旧但仍然相关的 Microsoft文章,关于写时复制保护。