Придумать сигнатуру для опознавания формата COFF - Assembler

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Есть такая задача, и хоть ассемблер тут особо не причем, но дядьки тут умные. Мне нужно определить является ли файл форматом COFF. И я немного запутался в доках, причем заметил что есть еще какой-то формат:
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.
https://en.wikibooks.org/wiki/X86_Di...-DOS_COM_Files Если можно, в общих чертах (без деталей) в чем разница. Теперь о структуре: COFF IMAGE_FILE_HEADER structure
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;
и собственно перечисление первых байтов: enum MachineTypes которые я мог бы взять в качестве сигнатуры для этого формата. А теперь читаю вот это: http://wiki.osdev.org/COFF и там структура начинается с:
{
    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 */
}
причем, Magic number пишут, что сами не знают какой:
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И@

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.714 из 5
Похожие ответы