我正在寻找有关如何通过检查字节流来检测 Windows PE(便携式执行)开始的建议
我知道我可以查找某些标头,这些标头的哪些组合可以识别 PE?还是有另一种可以做得更好的技术?
我需要它尽可能轻,但误报尽可能少。
只是真的在寻找一些方向,而不是编码示例,但如果人们有任何代码可以做到这一点,那就更好了:)
(只是看可行性,所以可以用任何语言来做,但 c 或 matlab 或类似的东西可能是我要去的方向)
我正在寻找有关如何通过检查字节流来检测 Windows PE(便携式执行)开始的建议
我知道我可以查找某些标头,这些标头的哪些组合可以识别 PE?还是有另一种可以做得更好的技术?
我需要它尽可能轻,但误报尽可能少。
只是真的在寻找一些方向,而不是编码示例,但如果人们有任何代码可以做到这一点,那就更好了:)
(只是看可行性,所以可以用任何语言来做,但 c 或 matlab 或类似的东西可能是我要去的方向)
您的第一步是查找 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 结构的完整信息,请参见