在Windows上,一些二进制文件(如.obj )是COFF格式,而其他文件(如.exe和.dll )是PE,这是带有额外头的二进制文件。您似乎需要查看文件扩展名才能知道预期的文件扩展名。
是否有使用COFF和PE的文件扩展名的全面列表?
发布于 2014-01-24 20:28:07
我不能对此发表评论,只想补充一下迈克·丁米克的回答。神奇的数字是linux上的可执行文件如何能够区分文件类型。
维基百科文件签名
扩展在windows中用于定义解析二进制文件的默认行为。例如,如果Program知道如何处理/解析多个文件类型(想想图像预览),那么文件的扩展名可以是一种类型,并被解析为另一种类型。Windows将打开程序A,为其提供文件。程序A将解析文件,通常忽略扩展名以确定如何处理该文件。
这可以用于社会工程师(技巧)用户打开“熟悉的”文件格式,但点击代码执行为更晦涩的格式。
发布于 2014-01-25 00:04:10
没有“哪个文件扩展名使用COFF,哪些使用PE的全面列表”。
扩展只用于帮助系统“映射”将用于启动所选文件的应用程序(例如,*.jpg将映射为由MSPAINT.exe启动,*.doc将映射为由MSWORD.EXE...etc启动)。此逻辑映射是通过注册表进行的。
Microsoft便携式可执行(PE)规范从未提到任何关于文件扩展名的内容。
没有“全面清单”,根本没有清单,因为不需要这样的清单。PE文件是其内容与规范相对应的文件。期间(这是戴维·赫弗南上文所评论的)
您有可执行的PDF扩展(在恶意软件中非常常见),或TXT,....or任何您想要的,甚至没有任何扩展!这些可执行文件的“不寻常”扩展当然会产生“副作用”,您将无法双击这些文件。但是,您可以cmd>start这些文件,也可以使用许多API或shell函数编程启动这些文件。
由于系统能够独立于它们的扩展启动可执行文件,所以解析根本不存在任何问题!
希望这会有所帮助!
发布于 2014-01-24 19:13:32
寻找神奇: PE文件将始终启动MZ,因为它的MS传统。请参阅Win32便携式可执行文件格式的深入研究的“MS标题”部分。
MZ是DOS知道这是EXE文件而不是COM的原因--由于历史原因,一些Windows模式实用程序有一个.com文件扩展名,但实际上是PE格式的文件。
https://stackoverflow.com/questions/21338918
复制相似问题