为什么editbin / swaprun:CD / swaprun:NET改变两个字节?

时间:2016-07-27 09:46:22

标签: windows portable-executable

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

它应该做什么。

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

有人可以向我解释一下这个字节是什么意思以及为什么要改变它?

编辑:澄清: 带有这些选项的editbin应该设置 PE头的特征字段(16位字)中的IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP和IMAGE_FILE_NET_RUN_FROM_SWAP位。这是我要说的第一个字节。这些标志都不存储在第二个字节中,那么为什么工具的变化超过了必要的含义?它是什么意思?

enter image description here

1 个答案:

答案 0 :(得分:3)

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