首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

.exe里面0x004000的基址是如何来的?如果应用程序采用的是随机基址的话,为什么还需要这个基址呢

2013-10-18 
.exe里面0x004000的基址是怎么来的?如果应用程序采用的是随机基址的话,为什么还需要这个基址呢?.exe里面0x

.exe里面0x004000的基址是怎么来的?如果应用程序采用的是随机基址的话,为什么还需要这个基址呢?
.exe里面0x004000的基址是怎么来的?如果应用程序采用的是随机基址的话,为什么还需要这个基址呢?


vs可以设置随机基址,如果这样的话,那.exe每次被加载的时候,基址都是随机的吧,为什么生成的map文件里面的基址却还是0x4000那个呢?这个0x4000是怎么来的,有什么用?
[解决办法]
《Windows PE权威指南》
[解决办法]
这是个建议加载地址。严格的说基址是不能随便设置的(你可以随便设,但是设成多少后果不一)。另外这个基址只是指的虚拟地址,不是物理地址。物理地址是操作系统随便给的。你设置的这个地址对物理地址(的决定)没有任何效果。软件中的各个地址(比如某个指针存储的数值)都只是虚拟地址值,不是物理地址。
[解决办法]

引用:
Quote: 引用:

这是个建议加载地址。严格的说基址是不能随便设置的(你可以随便设,但是设成多少后果不一)。另外这个基址只是指的虚拟地址,不是物理地址。物理地址是操作系统随便给的。你设置的这个地址对物理地址(的决定)没有任何效果。软件中的各个地址(比如某个指针存储的数值)都只是虚拟地址值,不是物理地址。

那程序的入口点表示的是入口函数相对于文件开始的便宜量,还是入口函数相对于基址的偏移量呢?


都不是。指的是线性地址空间的偏移。

热点排行