Вопроас о PE

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

  1. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    У тебя edi уже будет указывать на первый элемент стуктуры, на e_magic.
     
  2. qwertyui

    qwertyui New Member

    Публикаций:
    0
    Регистрация:
    12 фев 2009
    Сообщения:
    28
    хм... тоесть если я напишу
    mov edi,pMapping
    lea edi,dos
    mov eax,IMAGE_DOS_SIGNATURE
    cmp [edi],eax
    то произойдет сравнение e_magic с константой IMAGE_DOS_SIGNATURE
     
  3. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    Код (Text):
    1. mov edi,pMapping
    2. mov eax,IMAGE_DOS_SIGNATURE
    3. cmp [edi],eax
     
  4. 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.  
    89. hFile dd ?
    90. hMapping dd ?
    91. pMapping dd ?
    92. szYes db 'YES',0
    93. szNo db 'no',0
    94. szPath db 'cod.exe',0
    95.  
    96. entry $
    97. invoke CreateFile,szPath,GENERIC_READ,FILE_SHARE_READ,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0
    98. mov [hFile],eax
    99. invoke CreateFileMapping,[hFile],0,PAGE_READONLY,0,0,0
    100. mov [hMapping],eax
    101. invoke MapViewOfFile,[hMapping],FILE_MAP_READ,0,0,0
    102. mov [pMapping],eax
    103. mov edi,pMapping
    104. mov eax,IMAGE_DOS_SIGNATURE
    105. cmp [edi],eax
    106. jz _next
    107. invoke MessageBox,0,0,0,0
    108. _next:
    109. add edi,[edi+44]
    110.  
    111. mov eax,IMAGE_NT_SIGNATURE
    112. cmp [edi],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'
    разъясните пожалуйста что здесь не так если не сложно.
     
  5. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    qwertyui
    _next:
    add edi,[edi+44]

    Что это?
     
  6. Clerk

    Clerk Забанен

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

    qwertyui New Member

    Публикаций:
    0
    Регистрация:
    12 фев 2009
    Сообщения:
    28
    ну это как в туториале написано так и делаю. Тоесть как я понимаю в edi тперь должно быть e_ifanew. тоесть указатель на IMAGE_NT_HEADERS. Объясните пожалуйста как правильно надо делать