exe - 关于Windows中.EXE的ImageBase

标签 exe portable-executable

我刚刚了解到 ImageBase 是以 PE 格式指定的,操作系统会将其加载到 .EXE 的确切位置,那么问题来了:

如果两个 .EXE 需要相同的 ImageBase 位置怎么办?

最佳答案

对于 2 个 EXE,它们具有完全不同的地址空间...每个可执行文件都有自己的空间。 这意味着,每次执行 EXE 时,它都会被分配自己独立的 4G​​B(在 32 位系统上,虽然进程只能使用其中的一部分,但其余部分将由内核使用。)值得地址空间。这是Virtual Address Space 。它与您的物理内存不同。

所以不存在冲突。

从技术上讲,PE 几乎可以加载到任何地方,但 default 除外。 ImageBase0x400000

现在,假设您有一个 EXE,它加载了几个 DLL(它们恰好具有相同的 ImageBase)...在这种情况下,第一个 DLL 加载正常,第二个 DLL 被重新定位(或“重新定位”) )。每个 DLL 都有一个 .reloc 部分,其中包含有关更新代码中引用的数据。

关于exe - 关于Windows中.EXE的ImageBase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3740976/

相关文章:

C# - 发布.exe

windows - .rdata 和 .idata 段有什么区别?

windows - 可执行文件的文件大小怎么会这么小?

arrays - Powershell:使用数组中项目的参数调用exe?

c# - 从 MVC 运行 .EXE

binary - CMake 的可移植可执行文件

c - 文件的机器代码(可执行)?

winapi - 导入表、导入地址表、导入名称表有什么区别?

java - 如何创建多个 JAR 文件的单个 exe 文件?

c# - 在另一台计算机上运行我的项目(windows 窗体)c#