我正在寻找关于如何通过检查字节流来检测windows PE (可移植执行)开始的建议
我知道我可以查找某些标头,这些标头的组合可以识别PE吗?或者,有没有其他技术可以做得更好?
我需要它尽可能轻的重量,但尽可能少的假阳性。
只是在寻找一些方向,而不是一个编码的例子,但如果人们有任何代码来做这件事,那就更好了:)
(只要看看可行性,除了c或matlab或类似的语言之外,任何语言都可以做到这一点,这可能是我要走的方向)
发布于 2013-05-01 23:50:43
您的第一步将是查找4字节序列
PE\0\0
这是PE报头的签名。
然后,查找任何有效的体系结构代码(或者,如果您希望只查找英特尔体系结构,请查找特定的体系结构代码)
0x14d英特尔i860
0x14c英特尔I386 ( 486和586使用相同的ID )
0x162 MIPS R3000
0x166 MIPS R4000 0x183解码器Alpha AXP
根据线路上的其他数据和您的需要,这可能足以合理地假设数据表示的是PE二进制文件,并且您可能希望在此时尝试将数据作为可执行文件加载。如果你必须有绝对的信心,你将需要像加载器一样解析头部。有关PE结构的完整信息,请访问
http://msdn.microsoft.com/en-us/library/ms809762.aspx
https://stackoverflow.com/questions/16321421
复制相似问题