如果内存映像文件位于可被所有行程共享的区域,很显然任何行程都可以看到它,甚至不需要对它做映像动作(译注:指的是win32 mapviewoffile 这个动作)。是的,这样的假设是正确的。在 windows 95 之中,一个内存映像文件可以被所有行程存取得到。这个情况与 windows nt 不相同。windows nt 使用更精巧的分页模式,使内存映像档只能够被「对此档案做了映像动作」的行程看到。
2gb~3gb 区域之最上层为 32 位 system dlls(kernel32、user32 等等)的藏身处。为了保留最多的空间给内存映像文件使用,ring3 system dlls 从 3gb 开始往低处载入。下面是 softice/w mod 命令的输出片段,明白表示了这个事实:
:mod
hmod base peheader module name exe file name