DLL都加载到同一个地址,为什么要这样设计?
DLL are loaded at the same address, why is it designed like that?
在Windows中,相同的DLL跨进程加载到相同的地址,例如advapi32.dll
WmiPrvSE.exe:
svchost.exe:
既然windows启用了ASLR,为什么要这样设计呢?
ASLR 在机器启动时随机化加载地址偏移量,它不是随机的per-process。 ASLR 保护您免受网页等注入的代码的侵害,而不是免受您计算机上已经 运行 的进程的侵害。
在每个进程中加载相同的地址有利于页面共享,但 OS 不保证。 Low-level 库更有可能在同一地址加载,advapi32 非常好 low-level。
在Windows中,相同的DLL跨进程加载到相同的地址,例如advapi32.dll
WmiPrvSE.exe:
svchost.exe:
既然windows启用了ASLR,为什么要这样设计呢?
ASLR 在机器启动时随机化加载地址偏移量,它不是随机的per-process。 ASLR 保护您免受网页等注入的代码的侵害,而不是免受您计算机上已经 运行 的进程的侵害。
在每个进程中加载相同的地址有利于页面共享,但 OS 不保证。 Low-level 库更有可能在同一地址加载,advapi32 非常好 low-level。