繁体   English   中英

Windows 64位地址空间

[英]Windows 64bit address space

我正在开发几个dll的64位应用程序。

来自win 32,其中加载的dll的默认基址为0x10.000.000,然后在发生冲突时将其移动到了其中。

Wintellect的John Robbins建议为dll设置唯一的地址,因此在不同的运行中内存空间的使用是相同的。

他在有关调试.net 2.0应用程序的书中建议,基地址应以dll名称的首字母为准。

交流0x60.000.000
df 0x61.000.000
gi 0x62.000.000
jl 0x63.000.000
莫0x64.000.000
pr 0x65.000.000
苏0x66.000.000
vx 0x67.000.000
yz 0x68.000.000

我认为64位已经改变。 (至少是地址)。 有没有人找到更好的解决方案? (因此,一个在另一台计算机上运行的地址可以映射到我的地址吗?
-或者我可以加载在某个地方制作的小型转储。)

由于您使用的是64位,因此我猜想您的目标是Windows Vista或更高版本,因为XP 64位从未如此流行(并且扩展支持终止了)。

在Windows Vista中,引入了地址空间随机化(ASLR),从而提高了安全性,因为猜测内存位置变得更加困难。

ASLR将随机化基址,并通过/DYNAMICBASE (MSDN)启用。 因此,不再需要自己生成或计算基址。

如您所说,重新定位可能已经在32位应用程序中发生。 这和ASLR不会对调试故障转储产生影响。 调试器将能够解析符号。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM