在Windows上,一些二进制文件,例如.obj
采用COFF格式,其他例如.exe
和.dll
是PE,它是带有额外标头的COFF。看来你需要查看文件扩展名才能知道会发生什么。
是否有使用COFF和哪些文件扩展名使用PE的完整列表?
答案 0 :(得分:2)
我不能发表评论,但要补充Mike Dimmick的回答。 Magic Numbers是linux上的可执行文件能够告诉文件类型的方式。
在Windows中使用扩展来定义解析二进制文件的默认行为。这可能会让人感到困惑/危险,例如,如果程序A知道如何处理/解析多种文件类型(想想图像预览),文件可以具有一种类型的扩展名,并被解析为另一种类型。 Windows将打开程序A为其提供文件。程序A将解析文件并通常忽略扩展,以确定如何处理文件。
这可以用于社交工程师(欺骗)用户打开“熟悉的”文件格式,但是为了更加模糊的格式而执行代码执行。
答案 1 :(得分:2)
没有“使用COFF和使用PE的文件扩展名的综合列表”。
扩展仅用于帮助系统“映射”将用于启动所选文件的应用程序(例如* .jpg将映射为由MSPAINT.exe启动,* .doc将映射为启动通过MSWORD.EXE ...等)。此逻辑映射是通过注册表进行的。
Microsoft Portable Executable (PE) Specification从未提及有关文件扩展名的任何内容。
没有“综合列表”,根本没有列表,因为不需要这样的列表。 PE文件是其CONTENT对应于规范的文件。期间(David Heffernan在上面评论过)
你有PDF扩展的可执行文件(在恶意软件中很常见),或TXT,....或任何你想要的,甚至没有任何扩展!可执行文件的这些“不寻常”扩展名当然会产生“副作用”,您无法双击这些文件。但是,您可以cmd>启动这些文件,或使用许多API或shell函数以编程方式启动它们。
由于系统能够独立于其扩展启动可执行文件,因此解析完全没有问题!
希望有所帮助! : - )
答案 2 :(得分:1)
寻找魔力:由于MS-DOS的传承,PE文件将始终以MZ
开始。请参阅An In-Depth Look into the Win32 Portable Executable File Format的“MS-DOS标头”部分。
MZ
是DOS如何知道这是一个EXE文件而不是COM - 由于历史原因,一些Windows控制台模式实用程序具有.com文件扩展名,但实际上是PE格式文件。