Initial PE/COFF support for loading image files
All checks were successful
ci/woodpecker/push/build Pipeline was successful

This commit is contained in:
2022-11-06 19:59:38 +01:00
parent 4a364212de
commit c8f99ad6ed
8 changed files with 328 additions and 16 deletions

View File

@@ -96,8 +96,8 @@
#define PECOFF_IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16
/* PE/COFF image HDR magic */
#define PECOFF_IMAGE_NT_OPTIONAL_HDR32_MAGIC 0x10B
#define PECOFF_IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20B
#define PECOFF_IMAGE_PE_OPTIONAL_HDR32_MAGIC 0x10B
#define PECOFF_IMAGE_PE_OPTIONAL_HDR64_MAGIC 0x20B
#define PECOFF_IMAGE_ROM_OPTIONAL_HDR_MAGIC 0x107
/* PE/COFF directory entries */
@@ -137,8 +137,8 @@
#define PECOFF_IMAGE_SIZEOF_SECTION_HEADER 40
#define PECOFF_IMAGE_SIZEOF_ROM_OPTIONAL_HEADER 56
#define PECOFF_IMAGE_SIZEOF_STD_OPTIONAL_HEADER 28
#define PECOFF_IMAGE_SIZEOF_NT_OPTIONAL32_HEADER 224
#define PECOFF_IMAGE_SIZEOF_NT_OPTIONAL64_HEADER 240
#define PECOFF_IMAGE_SIZEOF_PE_OPTIONAL32_HEADER 224
#define PECOFF_IMAGE_SIZEOF_PE_OPTIONAL64_HEADER 240
/* PE/COFF image section characteristics */
#define PECOFF_IMAGE_SCN_TYPE_REG 0x00000000
@@ -190,11 +190,10 @@
typedef struct _PECOFF_IMAGE_CONTEXT
{
PVOID Data;
PVOID BaseAddress;
ULONG NtSignature;
UINT64 FileSize;
UINT ImagePages;
UINT ImageSize;
UINT Pages;
PVOID VirtualAddress;
} PECOFF_IMAGE_CONTEXT, *PPECOFF_IMAGE_CONTEXT;
/* PE/COFF directory format */
@@ -411,13 +410,13 @@ typedef struct _PECOFF_IMAGE_ROM_OPTIONAL_HEADER
ULONG GpValue;
} PECOFF_IMAGE_ROM_OPTIONAL_HEADER, *PPECOFF_IMAGE_ROM_OPTIONAL_HEADER;
/* PE/COFF NT image header */
typedef struct _PECOFF_IMAGE_NT_HEADER
/* PE/COFF PE image header */
typedef struct _PECOFF_IMAGE_PE_HEADER
{
ULONG Signature;
PECOFF_IMAGE_FILE_HEADER FileHeader;
PECOFF_IMAGE_OPTIONAL_HEADER OptionalHeader;
} PECOFF_IMAGE_NT_HEADER, *PPECOFF_IMAGE_NT_HEADER;
} PECOFF_IMAGE_PE_HEADER, *PPECOFF_IMAGE_PE_HEADER;
/* PE/COFF ROM image header */
typedef struct _PECOFF_IMAGE_ROM_HEADER {

View File

@@ -156,9 +156,9 @@ typedef struct _PECOFF_IMAGE_IMPORT_DESCRIPTOR PECOFF_IMAGE_IMPORT_DESCRIPTOR, *
typedef struct _PECOFF_IMAGE_LOAD_CONFIG_CODE_INTEGRITY PECOFF_IMAGE_LOAD_CONFIG_CODE_INTEGRITY, *PPECOFF_IMAGE_LOAD_CONFIG_CODE_INTEGRITY;
typedef struct _PECOFF_IMAGE_LOAD_CONFIG_DIRECTORY32 PECOFF_IMAGE_LOAD_CONFIG_DIRECTORY32, *PPECOFF_IMAGE_LOAD_CONFIG_DIRECTORY32;
typedef struct _PECOFF_IMAGE_LOAD_CONFIG_DIRECTORY64 PECOFF_IMAGE_LOAD_CONFIG_DIRECTORY64, *PPECOFF_IMAGE_LOAD_CONFIG_DIRECTORY64;
typedef struct _PECOFF_IMAGE_NT_HEADER PECOFF_IMAGE_NT_HEADER, *PPECOFF_IMAGE_NT_HEADER;
typedef struct _PECOFF_IMAGE_OPTIONAL_HEADER PECOFF_IMAGE_OPTIONAL_HEADER, *PPECOFF_IMAGE_OPTIONAL_HEADER;
typedef struct _PECOFF_IMAGE_OS2_HEADER PECOFF_IMAGE_OS2_HEADER, *PPECOFF_IMAGE_OS2_HEADER;
typedef struct _PECOFF_IMAGE_PE_HEADER PECOFF_IMAGE_PE_HEADER, *PPECOFF_IMAGE_PE_HEADER;
typedef struct _PECOFF_IMAGE_RESOURCE_DATA_ENTRY PECOFF_IMAGE_RESOURCE_DATA_ENTRY, *PPECOFF_IMAGE_RESOURCE_DATA_ENTRY;
typedef struct _PECOFF_IMAGE_RESOURCE_DIRECTORY PECOFF_IMAGE_RESOURCE_DIRECTORY, *PPECOFF_IMAGE_RESOURCE_DIRECTORY;
typedef struct _PECOFF_IMAGE_RESOURCE_DIRECTORY_ENTRY PECOFF_IMAGE_RESOURCE_DIRECTORY_ENTRY, *PPECOFF_IMAGE_RESOURCE_DIRECTORY_ENTRY;