windows - 为什么editbin/swaprun :CD/swaprun:NET change two bytes?

标签 windows portable-executable

使用选项/swaprun:CD 和/swaprun:NET 为 dll 调用 editbin 会更改 dll 的 PE header 字,设置位 $0400 和 $0800(因此实际上它只更改高字节)。

这就是它应该做的。

但它也改变了另一个字节(见十六进制比较)。

任何人都可以向我解释这个字节的含义以及为什么要更改它吗?

编辑:澄清: 具有这些选项的 editbin 应该设置 PE header 的特征字段(这是一个 16 位字)中的 IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP 和 IMAGE_FILE_NET_RUN_FROM_SWAP 位。这是我说的第一个字节。这些标志都没有存储在第二个字节中,那么为什么该工具会进行不必要的更改,这意味着什么?

enter image description here

最佳答案

IMAGE_FILE_HEADER.Characteristics |= IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP|IMAGE_FILE_NET_RUN_FROM_SWAP;

所以 0x2122 -> 0x2d22 (=2122|0x0c00)

和 IMAGE_OPTIONAL_HEADER.CheckSum 由 0x000a3c31 改为 0x000a4831

关于windows - 为什么editbin/swaprun :CD/swaprun:NET change two bytes?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38609409/

相关文章:

windows - ImageBase + SizeOfHeaders 会跳转到节表

x86 - 将 PE 加载到内存中进行仿真

windows - 如何从 Jenkins 的远程窗口共享下载文件?

windows - Git pull 错误 : unable to create file (Invalid argument)

php - 无法在 Windows 上打开由 PHP 应用程序生成的文件

MySQL 5.7.19 未安装。给出同样的错误

x86 - 资源表的 ResourceEntries RVA 在将其复制到不同的图像/PE 时需要重定位?

c - PEB(进程环境 block )无效的 DllBase 地址

即使添加到 PATH 后,Windows CMD 也无法识别 python

c - 可执行文件中的数据位于奇怪的位置