хм... тоесть если я напишу mov edi,pMapping lea edi,dos mov eax,IMAGE_DOS_SIGNATURE cmp [edi],eax то произойдет сравнение e_magic с константой IMAGE_DOS_SIGNATURE
Код (Text): format PE GUI 5.0 include '%fasminc%\win32ax.inc' section '.code' code writeable readable executable ;const IMAGE_NT_SIGNATURE equ 4550h IMAGE_DOS_SIGNATURE equ 5A4Dh ;structs struct IMAGE_DOS_HEADER e_magic dw ? e_cblp dw ? e_cp dw ? e_crlc dw ? e_cparhdr dw ? e_minalloc dw ? e_maxalloc dw ? e_ss dw ? e_sp dw ? e_csum dw ? e_ip dw ? e_cs dw ? e_lfarlc dw ? e_ovno dw ? e_res dw 4 dup(0) e_oemid dw ? e_oeminfo dw ? e_res2 dw 10 dup(0) e_lfanew dd ? ends struct IMAGE_DATA_DIRECTORY VirtualAddress dd ? isize dd ? ends struct IMAGE_FILE_HEADER Machine dw ? NumberOfSections dw ? TimeDateStamp dd ? PointerToSymbolTable dd ? NumberOfSymbols dd ? SizeOfOptionalHeader dw ? Characteristics dw ? ends struct IMAGE_OPTIONAL_HEADER32 Magic dw ? MajorLinkerVersion db ? MinorLinkerVersion db ? SizeOfCode dd ? SizeOfInitializedData dd ? SizeOfUninitializedData dd ? AddressOfEntryPoint dd ? BaseOfCode dd ? BaseOfData dd ? ImageBase dd ? SectionAlignment dd ? FileAlignment dd ? MajorOperatingSystemVersion dw ? MinorOperatingSystemVersion dw ? MajorImageVersion dw ? MinorImageVersion dw ? MajorSubsystemVersion dw ? MinorSubsystemVersion dw ? Win32VersionValue dd ? SizeOfImage dd ? SizeOfHeaders dd ? CheckSum dd ? Subsystem dw ? DllCharacteristics dw ? SizeOfStackReserve dd ? SizeOfStackCommit dd ? SizeOfHeapReserve dd ? SizeOfHeapCommit dd ? LoaderFlags dd ? NumberOfRvaAndSizes dd ? DataDirectory IMAGE_DATA_DIRECTORY 16 dup(0) ends struct IMAGE_NT_HEADERS Signature dd ? FileHeader IMAGE_FILE_HEADER OptionalHeader IMAGE_OPTIONAL_HEADER32 ends ;var hFile dd ? hMapping dd ? pMapping dd ? szYes db 'YES',0 szNo db 'no',0 szPath db 'cod.exe',0 entry $ invoke CreateFile,szPath,GENERIC_READ,FILE_SHARE_READ,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0 mov [hFile],eax invoke CreateFileMapping,[hFile],0,PAGE_READONLY,0,0,0 mov [hMapping],eax invoke MapViewOfFile,[hMapping],FILE_MAP_READ,0,0,0 mov [pMapping],eax mov edi,pMapping mov eax,IMAGE_DOS_SIGNATURE cmp [edi],eax jz _next invoke MessageBox,0,0,0,0 _next: add edi,[edi+44] mov eax,IMAGE_NT_SIGNATURE cmp [edi],eax jz _ok invoke MessageBox,0,0,0,0 _exit: invoke ExitProcess,0 _ok: invoke MessageBox,0,szYes,0,0 jmp _exit section '.import' import readable writable library kernel32, 'kernel32.dll', \ user32, 'user32.dll' include '%fasminc%\API\kernel32.inc' include '%fasminc%\API\user32.inc' разъясните пожалуйста что здесь не так если не сложно.
ну это как в туториале написано так и делаю. Тоесть как я понимаю в edi тперь должно быть e_ifanew. тоесть указатель на IMAGE_NT_HEADERS. Объясните пожалуйста как правильно надо делать