HyperDbg Debugger
Loading...
Searching...
No Matches
pe-image-reader.h
Go to the documentation of this file.
1
12#pragma once
13
14#ifndef _WIN32
15// On Windows these are provided by winnt.h; define them here for other platforms.
16
17typedef struct _IMAGE_DOS_HEADER
18{ // DOS .EXE header
19 WORD e_magic; // Magic number
20 WORD e_cblp; // Bytes on last page of file
21 WORD e_cp; // Pages in file
22 WORD e_crlc; // Relocations
23 WORD e_cparhdr; // Size of header in paragraphs
24 WORD e_minalloc; // Minimum extra paragraphs needed
25 WORD e_maxalloc; // Maximum extra paragraphs needed
26 WORD e_ss; // Initial (relative) SS value
27 WORD e_sp; // Initial SP value
28 WORD e_csum; // Checksum
29 WORD e_ip; // Initial IP value
30 WORD e_cs; // Initial (relative) CS value
31 WORD e_lfarlc; // File address of relocation table
32 WORD e_ovno; // Overlay number
33 WORD e_res[4]; // Reserved words
34 WORD e_oemid; // OEM identifier (for e_oeminfo)
35 WORD e_oeminfo; // OEM information; e_oemid specific
36 WORD e_res2[10]; // Reserved words
37 LONG e_lfanew; // File address of new exe header
39
50
51# define IMAGE_SIZEOF_SHORT_NAME 8
52
70
71#endif // _WIN32
72
84
86// Functions //
88
90PeImageReaderInitialize(const BYTE * ImageBase, SIZE_T ImageSize, PPE_IMAGE_READER Reader);
91
94
96PeImageReaderGetPointerAtOffset(PPE_IMAGE_READER Reader, SIZE_T Offset, SIZE_T Length, const BYTE ** Pointer);
97
99PeImageReaderGetSectionName(const IMAGE_SECTION_HEADER * SectionHeader, CHAR * NameBuffer, SIZE_T NameBufferSize);
100
102PeImageReaderRvaToFileOffset(PPE_IMAGE_READER Reader, DWORD Rva, DWORD Length, PSIZE_T FileOffset);
unsigned short WORD
Definition BasicTypes.h:42
UCHAR BOOLEAN
Definition BasicTypes.h:35
long LONG
Definition BasicTypes.h:28
unsigned char BYTE
Definition BasicTypes.h:40
unsigned long DWORD
Definition BasicTypes.h:38
char CHAR
Definition BasicTypes.h:33
BOOLEAN PeImageReaderGetPointerAtOffset(PPE_IMAGE_READER Reader, SIZE_T Offset, SIZE_T Length, const BYTE **Pointer)
Returns a validated pointer into the image at a raw file offset.
Definition pe-image-reader.cpp:219
BOOLEAN PeImageReaderIs32Bit(PPE_IMAGE_READER Reader)
Returns whether the PE image is a 32-bit (PE32) image.
Definition pe-image-reader.cpp:194
struct _IMAGE_SECTION_HEADER * PIMAGE_SECTION_HEADER
struct _PE_IMAGE_READER PE_IMAGE_READER
struct _IMAGE_FILE_HEADER IMAGE_FILE_HEADER
struct _PE_IMAGE_READER * PPE_IMAGE_READER
BOOLEAN PeImageReaderRvaToFileOffset(PPE_IMAGE_READER Reader, DWORD Rva, DWORD Length, PSIZE_T FileOffset)
Translates a relative virtual address (RVA) to a raw file offset.
Definition pe-image-reader.cpp:287
struct _IMAGE_DOS_HEADER IMAGE_DOS_HEADER
#define IMAGE_SIZEOF_SHORT_NAME
Definition pe-image-reader.h:51
BOOLEAN PeImageReaderGetSectionName(const IMAGE_SECTION_HEADER *SectionHeader, CHAR *NameBuffer, SIZE_T NameBufferSize)
Copies the section name from a section header into a null-terminated buffer.
Definition pe-image-reader.cpp:244
struct _IMAGE_DOS_HEADER * PIMAGE_DOS_HEADER
BOOLEAN PeImageReaderInitialize(const BYTE *ImageBase, SIZE_T ImageSize, PPE_IMAGE_READER Reader)
Parses and validates all PE headers in an in-memory image buffer.
Definition pe-image-reader.cpp:94
struct _IMAGE_FILE_HEADER * PIMAGE_FILE_HEADER
struct _IMAGE_SECTION_HEADER IMAGE_SECTION_HEADER
Definition pe-image-reader.h:18
WORD e_oeminfo
Definition pe-image-reader.h:35
WORD e_cblp
Definition pe-image-reader.h:20
WORD e_magic
Definition pe-image-reader.h:19
WORD e_csum
Definition pe-image-reader.h:28
WORD e_minalloc
Definition pe-image-reader.h:24
WORD e_lfarlc
Definition pe-image-reader.h:31
WORD e_maxalloc
Definition pe-image-reader.h:25
WORD e_res[4]
Definition pe-image-reader.h:33
WORD e_cs
Definition pe-image-reader.h:30
WORD e_cparhdr
Definition pe-image-reader.h:23
WORD e_ovno
Definition pe-image-reader.h:32
WORD e_crlc
Definition pe-image-reader.h:22
WORD e_cp
Definition pe-image-reader.h:21
WORD e_oemid
Definition pe-image-reader.h:34
WORD e_sp
Definition pe-image-reader.h:27
WORD e_ip
Definition pe-image-reader.h:29
LONG e_lfanew
Definition pe-image-reader.h:37
WORD e_ss
Definition pe-image-reader.h:26
WORD e_res2[10]
Definition pe-image-reader.h:36
Definition pe-image-reader.h:41
WORD Characteristics
Definition pe-image-reader.h:48
DWORD NumberOfSymbols
Definition pe-image-reader.h:46
DWORD PointerToSymbolTable
Definition pe-image-reader.h:45
WORD SizeOfOptionalHeader
Definition pe-image-reader.h:47
WORD Machine
Definition pe-image-reader.h:42
WORD NumberOfSections
Definition pe-image-reader.h:43
DWORD TimeDateStamp
Definition pe-image-reader.h:44
Definition pe-image-reader.h:54
DWORD SizeOfRawData
Definition pe-image-reader.h:62
DWORD PointerToLinenumbers
Definition pe-image-reader.h:65
union _IMAGE_SECTION_HEADER::@110214036316356314152306243141306316071137200254 Misc
DWORD Characteristics
Definition pe-image-reader.h:68
DWORD PointerToRelocations
Definition pe-image-reader.h:64
DWORD PointerToRawData
Definition pe-image-reader.h:63
WORD NumberOfLinenumbers
Definition pe-image-reader.h:67
DWORD VirtualAddress
Definition pe-image-reader.h:61
WORD NumberOfRelocations
Definition pe-image-reader.h:66
DWORD PhysicalAddress
Definition pe-image-reader.h:58
BYTE Name[IMAGE_SIZEOF_SHORT_NAME]
Definition pe-image-reader.h:55
DWORD VirtualSize
Definition pe-image-reader.h:59
Definition pe-image-reader.h:74
WORD OptionalHeaderMagic
Definition pe-image-reader.h:81
const IMAGE_FILE_HEADER * FileHeader
Definition pe-image-reader.h:79
BOOLEAN Is32Bit
Definition pe-image-reader.h:82
const IMAGE_DOS_HEADER * DosHeader
Definition pe-image-reader.h:77
SIZE_T ImageSize
Definition pe-image-reader.h:76
const BYTE * ImageBase
Definition pe-image-reader.h:75
const IMAGE_SECTION_HEADER * SectionHeaders
Definition pe-image-reader.h:80
const BYTE * NtHeaders
Definition pe-image-reader.h:78