c - 为什么我们需要取消映射才能使PE文件有效?

标签 c windows assembly reverse-engineering portable-executable

当我们从内存中转储PE(MODULE / Process)时,为什么不取消映射就不执行PE?

内存中的PE有哪些变化,使其无法直接执行?

最佳答案

在执行之前必须进行映射,因为您无法预知内存中每个DLL和其他资源的地址以及程序中动态分配的内存的结果地址。
PE文件标头告诉操作系统如何分配.text.data内存段。

上世纪80年代和90年代初,您可以调用.COM文件。这些是直接复制和执行的内存复制(%EIP指向其地址)的地方,因为那里限制为64kb的.text数据。

关于c - 为什么我们需要取消映射才能使PE文件有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42417447/

相关文章:

assembly - 堆栈变量在去?

c - 仅左移数字的一部分

android - 从 native c 代码执行 Android 应用程序

c++ - 如何使用winapi更改标题栏图标

windows - 用于删除长度超过 3 秒的所有 .wavs 的批处理文件

windows - 从批处理文件自动响应 runas

c# - void** 的含义是什么?

C程序: Updating max and min integers without using arrays

c++ - 由于不匹配/缺少 *system* 二进制文件,故障转储中的调用堆栈无效?

c - 内存地址如何放置在二进制文件中?