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