Ben*_*min 6 windows dll visual-studio aslr
在MSVC中,Base Address Randomizaiton是默认选项.(自VS2005起?)
所以,我不再手动重新设置dll的基地址.
但是当我使用VS2003时,我重新调整了我的所有dll以提高加载性能.
如果我使用ASLR选项,加载性能总是会降低吗?
(我可以获得其他好处)
小智 10
最简洁的答案是不.
在没有ASLR的系统(例如XP)上,在非首选地址加载DLL有几个成本:
第2项和第3项是迄今为止最大的成本,也是之前手动重新定义DLL的主要原因.
使用ASLR,操作系统透明地应用修正,使其看起来像DLL实际上是在其首选地址加载的.没有写时复制错误,也没有创建进程私有页面.此外,修正仅应用于应用程序实际访问的页面,而不是整个图像,这意味着不会从磁盘读取额外的数据.
除此之外,手动重新定位方案无法阻止所有基地址冲突(例如,来自不同供应商的DLL可能会相互冲突,或者由于修补程序而导致操作系统DLL的大小增加并且溢出到保留的范围内一些其他DLL等).ASLR在处理这些问题时效率更高,因此在整体查看系统时,它实际上可以提高性能.
| 归档时间: |
|
| 查看次数: |
1470 次 |
| 最近记录: |