使用选项/ 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位。这是我要说的第一个字节。这些标志都不存储在第二个字节中,那么为什么工具的变化超过了必要的含义?它是什么意思?
答案 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