在Windows上,一些二進制文件例如.obj
處於COFF格式,而其他例如.exe
和.dll
是PE,它是帶有額外標題的COFF。看來你需要看看文件擴展名,以知道哪些期望。PE/COFF文件擴展名
是否有關於哪些文件擴展名使用COFF和使用PE的綜合列表?
在Windows上,一些二進制文件例如.obj
處於COFF格式,而其他例如.exe
和.dll
是PE,它是帶有額外標題的COFF。看來你需要看看文件擴展名,以知道哪些期望。PE/COFF文件擴展名
是否有關於哪些文件擴展名使用COFF和使用PE的綜合列表?
我不能評論,但要添加到麥克迪米克的答案。魔術數字是如何在Linux上的可執行文件能夠告訴文件類型。
擴展在Windows中被用來定義默認行爲,解析二進制文件。例如,如果程序A知道如何處理/解析多個文件類型(想象圖像預覽),文件可以具有一種類型的擴展名,並且被解析爲另一種類型,則這會變得令人困惑/危險。 Windows將打開程序A爲其提供文件。程序A將解析該文件,並通常忽略擴展,以確定如何處理該文件。
這可以用於社交工程師(特技)用戶開放「熟悉的」文件格式,但打擊代碼執行更加模糊的格式。
尋找神奇:由於其MS-DOS傳統,PE文件始終會啓動MZ
。請參閱An In-Depth Look into the Win32 Portable Executable File Format的'MS-DOS標題'部分。
MZ
是DOS如何知道這是一個EXE文件而不是COM - 由於歷史原因,某些Windows控制檯模式實用程序具有.com文件擴展名,但實際上是PE格式文件。
還有NO「完整的列表,哪些文件擴展名使用COFF,哪些使用PE。
擴展名僅用於幫助系統「映射」將用於啓動選定文件的應用程序(例如* .jpg將被映射爲由MSPAINT.exe啓動,* .doc將映射爲由MSWORD.EXE等開始)。這個邏輯映射是通過註冊表完成的。
Microsoft Portable Executable (PE) Specification從來沒有提到任何有關文件擴展名的內容。
有沒有「綜合名單」,根本沒有名單,因爲不需要這樣的名單。 PE文件是CONTENT對應於規範的文件。期間(這是David Heffernan在上面所說的)
您可執行PDF擴展(非常常見於惡意軟件)或TXT,....或任何你想要的,甚至沒有任何擴展!這些「非常規」的可執行文件擴展名當然會有「副作用」,您無法雙擊這些文件。但是,您可以使用許多API或shell函數來啓動這些文件,或以編程方式啓動這些文件。
由於系統能夠獨立於它們的擴展來啓動可執行文件,所以解析完全沒有問題!
希望有幫助! :-)
順便說一句,一個文件開始於預期的魔術簽名MZ(當然)不能保證是一個PE文件。 – mox
WIN32之前的二進制文件使用COFF格式。 – Xearinox
文件擴展名無意義。唯一重要的是文件中的內容。 –