使用选项/ swaprun:CD和/ swaprun:NET调用dll的editbin会更改该DLL的PE标头字,并设置$ 0400和$ 0800位(因此,实际上它只更改了高字节)。
那是应该做的。
但它也会更改另一个字节(请参见十六进制比较)。
谁能向我解释这个字节的含义以及为什么要更改它?
编辑:明确说明:带有这些选项的editbin应该在PE标头的“特征”字段中设置IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP和IMAGE_FILE_NET_RUN_FROM_SWAP位(这是一个16位字)。这是我正在谈论的第一个字节。这些标志中没有一个存储在第二个字节中,那么为什么工具更改超出了必要,这又意味着什么呢?
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句