首页
社区
课程
招聘
[求助]几个PE文件的映像基址都是0x400000时候怎么办
发表于: 2008-10-31 22:16 7389

[求助]几个PE文件的映像基址都是0x400000时候怎么办

2008-10-31 22:16
7389
最近在学PE文件结构,发现 ImageBase ,即PE文件的优先装载地址,(又叫基地址)。这个值通常是“00400000”, 那么PE  文件的首地址“00000”就被映射到内存地址“00400000”处。如果我有两个PE文件,ImageBase都是“00400000”,同时运行的话,windows会按照什么原则  选用其他空闲地址的呢?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
2
请先学习操作系统及Intel体系的相关知识。特别是虚拟地址的知识。

不同的进程在不同的地址空间内运行,操作系统把它们映射到不同的物理地址上。

即使在同一个进程内,两个模块如果连接器的优先装载地址碰巧相同(比如两个dll),也是没有关系的。因为它是“优先”装载地址,也就是说是可以变的。

这就涉及到重定位的知识了。请参考相关资料。推荐《连接器与装载器》
2008-10-31 22:25
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
都是相互独立的
2008-10-31 23:15
0
雪    币: 179
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢,我想我大概理解了。不同的进程在不同的地址空间内运行,操作系统把它们映射到不同的物理地址上。我们用OD看到的内存地址,其实是经过处理的,2个进程的内存地址可以一样。
2008-11-4 02:48
0
雪    币: 12045
活跃值: (4763)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5

又学到一点了
2012-4-9 19:12
0
雪    币: 506
活跃值: (65)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
正在看 windows PE权威指南》
要不楼主你也弄一本看看?
2012-4-9 21:36
0
雪    币: 17
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
00400000是虚拟内存,所谓虚拟就是不是真的物理内存的地址。用户程序(R3权限)是无法直接操作物理内存地址的,否则的话这个世界就混乱了。操作系统在加载程序的时候,会分配一片内存空间用来保存虚拟地址到物理地址的映射。可以用公式M=f(x)来表示虚拟地址到物理地址的映射关系。所以当应用程序1访问地址x1的时候,就是在访问物理地址M1。程序2访问地址x2的时候,就是在访问物理地址M2,即使是x1=x2,M1也不会等于M2。这就是为什么说各个程序的地址空间是独立的。

逆向QQ群:24628274
2012-4-9 23:28
0
游客
登录 | 注册 方可回帖
返回
//