Придумать сигнатуру для опознавания формата COFF - Assembler
Формулировка задачи:
Здравствуйте!
Есть такая задача, и хоть ассемблер тут особо не причем, но дядьки тут умные.
Мне нужно определить является ли файл форматом COFF.
И я немного запутался в доках, причем заметил что есть еще какой-то формат:
https://en.wikibooks.org/wiki/X86_Di...-DOS_COM_Files
Если можно, в общих чертах (без деталей) в чем разница.
Теперь о структуре:
COFF IMAGE_FILE_HEADER structure
и собственно перечисление первых байтов:
enum MachineTypes
которые я мог бы взять в качестве сигнатуры для этого формата.
А теперь читаю вот это: http://wiki.osdev.org/COFF
и там структура начинается с:
причем, Magic number пишут, что сами не знают какой:
т.е. я по нему сигнатуру не построю.
Поскажите, плиз, на каком этапе я заблудился... или обе приведенные мною структуры являются началом файлов различных форматов исполняемых файлов?
Заранее благодарствую!
Notice that MS-DOS COM files (short for "command" files) are not the same as
Component-Object Model
files, which are an object-oriented library technology.typedef struct _IMAGE_FILE_HEADER { WORD Machine; WORD NumberOfSections; DWORD TimeDateStamp; DWORD PointerToSymbolTable; DWORD NumberOfSymbols; WORD SizeOfOptionalHeader; WORD Characteristics; } IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;
{ unsigned short f_magic; /* Magic number */ unsigned short f_nscns; /* Number of Sections */ long f_timdat; /* Time & date stamp */ long f_symptr; /* File pointer to Symbol Table */ long f_nsyms; /* Number of Symbols */ unsigned short f_opthdr; /* sizeof(Optional Header) */ unsigned short f_flags; /* Flags */ }
The magic number varies from implementation to implementation, for example, DJGPP generates COFF files with the value 0x14C in this field.
И если не жалко, "насыпать", несколько файлов .COM, также был бы признателен (так сказать для "пощупать").
Решение задачи: «Придумать сигнатуру для опознавания формата COFF»
textual
Листинг программы
HD 1.0 : HexDump for file '1.com' [00000000:00000256] 00000000: 4D 5A 4B 45 52 4E 45 4C 33 32 2E 44 4C 4C 00 00 MZKERNEL32.DLL.. 00000010: 50 45 00 00 4C 01 03 00 BE B0 11 40 00 AD 50 FF PE..L...ѕ°.@.*Pя 00000020: 76 34 EB 7C 48 01 0F 01 0B 01 4C 6F 61 64 4C 69 v4л|H.....LoadLi 00000030: 62 72 61 72 79 41 00 00 18 10 00 00 10 00 00 00 braryA.......... 00000040: 00 20 00 00 00 00 40 00 00 10 00 00 00 02 00 00 . ....@......... 00000050: 04 00 00 00 00 00 3A 00 04 00 00 00 00 00 00 00 ......:......... 00000060: 00 C0 00 00 00 02 00 00 00 00 00 00 03 00 00 00 .А.............. 00000070: 00 00 10 00 00 10 00 00 00 00 10 00 00 10 00 00 ................ 00000080: 00 00 00 00 0A 00 00 00 00 00 00 00 00 00 00 00 ................ 00000090: EE B1 00 00 14 00 00 00 00 00 00 00 00 00 00 00 о±.............. 000000A0: FF 76 38 AD 50 8B 3E BE F0 B0 40 00 6A 27 59 F3 яv8*P‹>ѕр°@.j'Yу 000000B0: A5 FF 76 04 83 C8 FF 8B DF AB EB 1C 00 00 00 00 Ґяv.ѓИя‹Я«л..... 000000C0: 47 65 74 50 72 6F 63 41 64 64 72 65 73 73 00 00 GetProcAddress.. 000000D0: 00 00 00 00 00 00 00 00 40 AB 40 B1 04 F3 AB C1 ........@«@±.у«Б 000000E0: E0 0A B5 1C F3 AB 8B 7E 0C 57 51 E9 6F 25 00 00 а.µ.у«‹~.WQйo%.. 000000F0: 56 10 E2 E3 B1 04 D3 E0 03 E8 8D 53 18 33 C0 55 V.вг±.Уа.иЌS.3АU 00000100: 40 51 D3 E0 8B EA 91 FF 56 4C 99 59 D1 E8 13 D2 @QУа‹к‘яVL™YСи.Т 00000110: E2 FA 5D 03 EA 45 59 89 6B 08 56 8B F7 2B F5 F3 въ].кEY‰k.V‹ч+ху 00000120: A4 AC 5E B1 80 AA 3B 7E 34 0F 82 AC FE FF FF 58 ¤¬^±ЂЄ;~4.‚¬юяяX 00000130: 5F 59 E3 1B 8A 07 47 04 18 3C 02 73 F7 8B 07 3C _Yг.Љ.G..<.sч‹.< 00000140: 00 75 F3 B0 00 0F C8 03 46 38 2B C7 AB E2 E5 5E .uу°..И.F8+З«ве^ 00000150: 5D 59 46 AD 85 C0 74 1F 51 56 97 FF D1 93 AC 84 ]YF*…Аt.QV—яС“¬„ 00000160: C0 75 FB 38 06 74 EA 8B C6 79 05 46 33 C0 66 AD Аuы8.tк‹Жy.F3Аf* 00000170: 50 53 FF D5 AB EB E7 C3 00 20 00 00 00 10 00 00 PSяХ«лзГ. ...... 00000180: F0 01 00 00 10 00 00 00 00 30 40 00 17 36 40 00 р........0@..6@. 00000190: 22 00 00 00 60 00 00 E0 00 10 40 00 4C 36 40 00 "...`..а..@.L6@. 000001A0: 00 80 00 00 00 30 00 00 74 07 00 00 00 02 00 00 .Ђ...0..t....... 000001B0: 0F 17 40 00 FF 1F 40 00 74 37 40 00 60 00 00 E0 ..@.я.@.t7@.`..а 000001C0: 96 21 40 00 FC 0F 40 00 00 10 00 00 00 B0 00 00 –!@.ь.@......°.. 000001D0: F0 01 00 00 10 00 00 00 E4 35 40 00 E7 35 40 00 р.......д5@.з5@. 000001E0: F6 35 40 00 60 00 00 E0 28 00 00 00 BE 00 00 00 ц5@.`..а(...ѕ... 000001F0: 00 00 00 00 00 00 00 00 00 00 02 00 00 00 E8 11 ..............и. 00000200: 00 6F 79 2C 3E 4C 83 64 AE 56 5A 30 F4 E9 1D D4 .oy,>Lѓd®VZ0фй.Ф 00000210: 27 A0 E1 4E E1 C9 60 20 48 AE 6C 66 C8 40 98 BD '*бNбЙ` H®lfИ@
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д