能力值:
(RANK:260 )
|
-
-
2 楼
请先学习操作系统及Intel体系的相关知识。特别是虚拟地址的知识。
不同的进程在不同的地址空间内运行,操作系统把它们映射到不同的物理地址上。
即使在同一个进程内,两个模块如果连接器的优先装载地址碰巧相同(比如两个dll),也是没有关系的。因为它是“优先”装载地址,也就是说是可以变的。
这就涉及到重定位的知识了。请参考相关资料。推荐《连接器与装载器》
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
都是相互独立的
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
谢谢,我想我大概理解了。不同的进程在不同的地址空间内运行,操作系统把它们映射到不同的物理地址上。我们用OD看到的内存地址,其实是经过处理的,2个进程的内存地址可以一样。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
又学到一点了
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
正在看 windows PE权威指南》
要不楼主你也弄一本看看?
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
00400000是虚拟内存,所谓虚拟就是不是真的物理内存的地址。用户程序(R3权限)是无法直接操作物理内存地址的,否则的话这个世界就混乱了。操作系统在加载程序的时候,会分配一片内存空间用来保存虚拟地址到物理地址的映射。可以用公式M=f(x)来表示虚拟地址到物理地址的映射关系。所以当应用程序1访问地址x1的时候,就是在访问物理地址M1。程序2访问地址x2的时候,就是在访问物理地址M2,即使是x1=x2,M1也不会等于M2。这就是为什么说各个程序的地址空间是独立的。
逆向QQ群:24628274
|
|
|