Байтове за първоначално изображение

Ако отстранявам грешки в asm файл с Windbg, изображението се зарежда на място в паметта, в моя случай това е 00400000. Ако изхвърля данните от 00400000, виждам, че асемблиращият ми код е зареден във файла с изображение на и отместване от 10000 от това адрес, а не на 00400000.

Ето дъмпа за началото на изображението.

00400000 ->  00905a4d 00000003 00000004 0000ffff
00400010 ->  000000b8 00000000 00000040 00000000
00400020 ->  00000000 00000000 00000000 00000000
00400030 ->  00000000 00000000 00000000 000000c0

И така, въпросът ми е какво е това заглавие в началото на изображението и за какво се използва? Изглежда, че всички изображения имат тази заглавка.

Благодаря предварително.


person PaulG    schedule 10.07.2017    source източник
comment
Дефинирано е във PE (преносим изпълним) формат на изображение. Можете да намерите неговата спецификация на уебсайта на Microsoft.   -  person Peter    schedule 10.07.2017
comment
tyvm ще погледна.   -  person PaulG    schedule 10.07.2017
comment
Разбрах, благодаря, Питър. Направих бърза проверка на това, но endianness ме хвана.   -  person PaulG    schedule 10.07.2017
comment
Отговорено ли е на това? Може би искате да изтриете въпроса си или да си отговорите сами.   -  person Thomas Weller    schedule 10.07.2017
comment
Да, коментарът на Питърс отговори на въпроса ми.   -  person PaulG    schedule 11.07.2017
comment
добре, ако отговорите сами, можете също да опитате !dh 400000 windbg ще дешифрира заглавката вместо вас   -  person blabb    schedule 11.07.2017


Отговори (1)


Това, което сте публикували, изглежда като PE хедър в 32-битов формат:

0:000> dd 00400000 
00400000  00905a4d 00000003 00000004 0000ffff
00400010  000000b8 00000000 00000040 00000000
00400020  00000000 00000000 00000000 00000000
00400030  00000000 00000000 00000000 00000080

Ако го изхвърлите като байтове, той ще покаже ASCII символите заедно с него и можете лесно да разпознаете заглавката "MZ".

0:000> db 00400000 
00400000  4d 5a 90 00 03 00 00 00-04 00 00 00 ff ff 00 00  MZ..............
00400010  b8 00 00 00 00 00 00 00-40 00 00 00 00 00 00 00  ........@.......
00400020  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
00400030  00 00 00 00 00 00 00 00-00 00 00 00 80 00 00 00  ................

Можете да използвате командата !dh, за да го декодирате:

0:000> !dh 00400000 

File Type: EXECUTABLE IMAGE
FILE HEADER VALUES
     14C machine (i386)
       3 number of sections
5911398E time date stamp Mon May  8 20:37:50 2017

       0 file pointer to symbol table
       0 number of symbols
      E0 size of optional header
      22 characteristics
            Executable
            App can handle >2gb addresses
[...]

Ако не искате да използвате WinDbg, има Stud_PE, където можете да заредите изпълним файл и ще го анализира за вас.

person Thomas Weller    schedule 12.07.2017