读书人

.exe里面0x004000的基址是如何来的?如

发布时间: 2013-10-18 20:53:13 作者: rapoo

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


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

引用:
Quote: 引用:

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

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


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

读书人网 >C++

热点推荐