Вопроас о PE

Тема в разделе "WASM.BEGINNERS", создана пользователем qwertyui, 12 фев 2009.

  1. qwertyui

    qwertyui New Member

    Публикаций:
    0
    Регистрация:
    12 фев 2009
    Сообщения:
    28
    Разбирался с PE форматом сейчас. Не понял одну вещь. Вот мы сделали Mapping файла. А дальше? как перейти к списку секций нпример? И как дальше работать с ним? как заполнить стрктуру. Разъясните плз
     
  2. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    ты структуру читал? сначала идет МЗ-заголовок. В нем есть поле, указывающее на его размер. Следовательно, это поле - указатель на след. заголовок: РЕ. Потом таблица директорий, таблица секций, в которой указаны ВСЕ данные о секциях (даже слишком много). В чем собсно вопрос? Что в структуре РЕ тебе не понятно?
     
  3. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    qwertyui
    Имя смени.)
     
  4. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    Чего-то тем про PE все больше и больше становится. К чему бы это? @=)
     
  5. jaja

    jaja New Member

    Публикаций:
    0
    Регистрация:
    23 июл 2008
    Сообщения:
    243
    Скоро все перейдут на ELF
     
  6. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    угу, как только, так сразу.
     
  7. qwertyui

    qwertyui New Member

    Публикаций:
    0
    Регистрация:
    12 фев 2009
    Сообщения:
    28
    ну читал я структуру. тоесть в хэндле маппинга будет указатель на MZ заголовок и даллее надо смещаться что бы перейти к таблице секций и так далее? И если это правильно то на сколько смещаться?
     
  8. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    дай пожалуйста линки на то, что ты читал
     
  9. qwertyui

    qwertyui New Member

    Публикаций:
    0
    Регистрация:
    12 фев 2009
    Сообщения:
    28
    http://wasm.ru/article.php?article=green2red02
    http://wasm.ru/article.php?article=vgw03
     
  10. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    ну во-первых, по этим линкам все расписано. Ладно, возможно там и правда несколько запутанно. Попробуй посмотреть http://wasm.ru/article.php?article=1002001 - тут вроде бы все как надо. Если останутся вопросы, тогда напишу уже по смещениям, что и где считать
     
  11. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    Что ещё за дискриминация по никам?:)
     
  12. qwertyui

    qwertyui New Member

    Публикаций:
    0
    Регистрация:
    12 фев 2009
    Сообщения:
    28
    Код (Text):
    1. format PE GUI 5.0
    2. include '%fasminc%\win32ax.inc'
    3. section '.code' code writeable readable executable
    4. ;const
    5. IMAGE_NT_SIGNATURE equ 4550h
    6. IMAGE_DOS_SIGNATURE equ 5A4Dh
    7.  
    8. ;structs
    9.  
    10. struct IMAGE_DOS_HEADER
    11. e_magic           dw      ?
    12.   e_cblp            dw      ?
    13.   e_cp              dw      ?
    14.   e_crlc            dw      ?
    15.   e_cparhdr         dw      ?
    16.   e_minalloc        dw      ?
    17.   e_maxalloc        dw      ?
    18.   e_ss              dw      ?
    19.   e_sp              dw      ?
    20.   e_csum            dw      ?
    21.   e_ip              dw      ?
    22.   e_cs              dw      ?
    23.   e_lfarlc          dw      ?
    24.   e_ovno            dw      ?
    25.   e_res             dw   4 dup(0)
    26.   e_oemid           dw      ?
    27.   e_oeminfo         dw      ?
    28.   e_res2            dw  10 dup(0)
    29.   e_lfanew          dd      ?
    30. ends
    31.  
    32. struct IMAGE_DATA_DIRECTORY
    33.  VirtualAddress    dd      ?
    34.   isize             dd      ?
    35. ends
    36.  
    37. struct IMAGE_FILE_HEADER
    38. Machine               dw    ?
    39.   NumberOfSections      dw    ?
    40.   TimeDateStamp         dd   ?
    41.   PointerToSymbolTable  dd   ?
    42.   NumberOfSymbols       dd   ?
    43.   SizeOfOptionalHeader  dw    ?
    44.   Characteristics       dw    ?
    45. ends
    46.  
    47. struct IMAGE_OPTIONAL_HEADER32
    48.  Magic                         dw       ?
    49.   MajorLinkerVersion            db       ?
    50.   MinorLinkerVersion            db       ?
    51.   SizeOfCode                    dd      ?
    52.   SizeOfInitializedData         dd      ?
    53.   SizeOfUninitializedData       dd      ?
    54.   AddressOfEntryPoint           dd      ?
    55.   BaseOfCode                    dd      ?
    56.   BaseOfData                    dd      ?
    57.   ImageBase                     dd      ?
    58.   SectionAlignment              dd      ?
    59.   FileAlignment                 dd      ?
    60.   MajorOperatingSystemVersion   dw       ?
    61.   MinorOperatingSystemVersion   dw       ?
    62.   MajorImageVersion             dw       ?
    63.   MinorImageVersion             dw       ?
    64.   MajorSubsystemVersion         dw       ?
    65.   MinorSubsystemVersion         dw       ?
    66.   Win32VersionValue             dd      ?
    67.   SizeOfImage                   dd      ?
    68.   SizeOfHeaders                 dd      ?
    69.   CheckSum                      dd      ?
    70.   Subsystem                     dw       ?
    71.   DllCharacteristics            dw       ?
    72.   SizeOfStackReserve            dd      ?
    73.   SizeOfStackCommit             dd      ?
    74.   SizeOfHeapReserve             dd      ?
    75.   SizeOfHeapCommit              dd      ?
    76.   LoaderFlags                   dd      ?
    77.   NumberOfRvaAndSizes           dd      ?
    78.   DataDirectory                 IMAGE_DATA_DIRECTORY 16 dup(0)
    79.   ends
    80.  
    81. struct IMAGE_NT_HEADERS
    82. Signature dd ?
    83. FileHeader IMAGE_FILE_HEADER
    84. OptionalHeader IMAGE_OPTIONAL_HEADER32
    85. ends
    86.  
    87. ;var
    88. hFile dd ?
    89. hMapping dd ?
    90. pMapping dd ?
    91. szYes db 'YES',0
    92. szNo db 'no',0
    93. szPath db 'cod.exe',0
    94.  
    95. entry $
    96. invoke CreateFile,szPath,GENERIC_READ,FILE_SHARE_READ,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0
    97. mov [hFile],eax
    98. invoke CreateFileMapping,[hFile],0,PAGE_READONLY,0,0,0
    99. mov [hMapping],eax
    100. invoke MapViewOfFile,[hMapping],FILE_MAP_READ,0,0,0
    101. mov [pMapping],eax
    102. mov edi,[pMapping]
    103. assume edi:ptr IMAGE_DOS_HEADER
    104. mov eax,IMAGE_DOS_SIGNATURE
    105. cmp [edi].e_magic,eax
    106. jz _next
    107. invoke MessageBox,0,0,0,0
    108. _next:
    109. add edi,[edi].e_ifanew
    110. assume edi:ptr IMAGE_NT_HEADERS
    111. mov eax,IMAGE_NT_SIGNATURE
    112. cmp [edi].Signature,eax
    113. jz _ok
    114. invoke MessageBox,0,0,0,0
    115. _exit:
    116. invoke ExitProcess,0
    117. _ok:
    118. invoke MessageBox,0,szYes,0,0
    119. jmp _exit
    120. section '.import' import readable writable
    121. library kernel32, 'kernel32.dll', \
    122. user32, 'user32.dll'
    123. include '%fasminc%\API\kernel32.inc'
    124. include '%fasminc%\API\user32.inc'
    фасм ругается на assume edi:ptr IMAGE_DOS_HEADER пишет illegal instruction почему?
    PS поправьте please название темы(:
     
  13. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    qwertyui
    Потому что в фасме нет директивы assume
     
  14. qwertyui

    qwertyui New Member

    Публикаций:
    0
    Регистрация:
    12 фев 2009
    Сообщения:
    28
    а чем ее заменить?
     
  15. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    А без нее слабо?
     
  16. qwertyui

    qwertyui New Member

    Публикаций:
    0
    Регистрация:
    12 фев 2009
    Сообщения:
    28
    я не пойму каким образом?
     
  17. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    qwertyui
    http://wasm.ru/forum/viewtopic.php?id=15579
    http://wasm.ru/forum/viewtopic.php?id=26706
    http://wasm.ru/forum/viewtopic.php?id=9459

    Если уж так хоцца.

    Прибавляй к регистру смещение заданного элемента в структуре.
     
  18. qwertyui

    qwertyui New Member

    Публикаций:
    0
    Регистрация:
    12 фев 2009
    Сообщения:
    28
    ога спасибо а можно вот так mov [asd.e_magic],[pMapping+2]? asd указатель на структуру IMAGE_DOS_HEADER , а pMapping то что возвращает функция MapViewOfFile.
    Точнее, не так спросил. Вот к примеру есть укзатель на структуру image_dos_header что бы добраться до e_magic нужно прибавить 2? тоесть если edi указывает на image_dos_header то e_magic будте [edi+2]?
     
  19. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    qwertyui
    Память в память??? Опомнись!

    Э не... погодь
     
  20. qwertyui

    qwertyui New Member

    Публикаций:
    0
    Регистрация:
    12 фев 2009
    Сообщения:
    28
    big thanks.