检测PE的'线上'

时间:2013-05-01 15:42:41

标签: c matlab detection portable-executable

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

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

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

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

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

1 个答案:

答案 0 :(得分:4)

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

PE \ 0 \ 0

这是PE头的签名。

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

  

0x14d Intel 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