1

我正在寻找有关如何通过检查字节流来检测 Windows PE(便携式执行)开始的建议

我知道我可以查找某些标头,这些标头的哪些组合可以识别 PE?还是有另一种可以做得更好的技术?

我需要它尽可能轻,但误报尽可能少。

只是真的在寻找一些方向,而不是编码示例,但如果人们有任何代码可以做到这一点,那就更好了:)

(只是看可行性,所以可以用任何语言来做,但 c 或 matlab 或类似的东西可能是我要去的方向)

4

1 回答 1

4

您的第一步是查找 4 字节序列

体育\0\0

这是PE头的签名。

之后,查找任何有效的架构代码(或者如果您希望只说 Intel 架构,请查找该特定架构代码)

0x14d 英特尔 i860

0x14c Intel I386(486 和 586 使用相同的 ID)

0x162 MIPS R3000

0x166 MIPS R4000 0x183 DEC Alpha AXP

根据网络上的其他数据以及您的需要,这可能足以合理地假设数据代表 PE 二进制文件,并且您可能希望在此时尝试将数据加载为可执行文件。如果您必须有绝对的信心,您将需要像加载程序一样解析标头。有关 PE 结构的完整信息,请参见

http://msdn.microsoft.com/en-us/library/ms809762.aspx

于 2013-05-01T15:50:42.770 回答