Ben*_*min 4 windows dll portable-executable aslr
我观看了一个ASLRed dll图像基于32位进程的地址.
这不是完全随机化.它只是随机化了1/2概率.
例如,一旦我加载一个DLL,然后图像加载到0x12345678.
然后我再次加载图像,图像加载到0x23456789.(基地址已更改!)
但我再次加载图像
0x12345678
0x23456789
0x12345678
0x23456789
...
为什么他们这样实施?
它是否适用于崩溃报告的频率?(用于获取重新部署的dll的相同崩溃地址)
小智 12
这是设计的.通常,Windows在首次加载DLL时为ASLR DLL选择首选基址,然后它会继续使用该地址,直到系统重新启动.这样,DLL将在加载它的每个进程中映射到相同的地址,从而允许共享代码页.
但是,如果已从每个进程卸载DLL,则系统有时可能在下次加载DLL时选择不同的基址.这样做是为了减少虚拟地址空间碎片,而不是出于安全原因.这就是你的情况似乎正在发生的事情.