diff options
| author | ladevieq <ladevie.quentin@gmail.com> | 2026-07-09 21:49:15 +0200 |
|---|---|---|
| committer | ladevieq <ladevie.quentin@gmail.com> | 2026-07-09 21:49:15 +0200 |
| commit | ce51256c91e566d339c6a670af11bab519f98349 (patch) | |
| tree | 1c91c9e15655545f4997c57f9659bb6414ab6949 /include/module.h | |
| parent | 0379f7634200c35682adb53a6653d441849903ae (diff) | |
Get rid of windows.h
Diffstat (limited to 'include/module.h')
| -rw-r--r-- | include/module.h | 117 |
1 files changed, 114 insertions, 3 deletions
diff --git a/include/module.h b/include/module.h index e94e156..89a2d8c 100644 --- a/include/module.h +++ b/include/module.h @@ -1,10 +1,121 @@ #pragma once -#include <Windows.h> - #include "types.h" #include "hashmap.h" +// ======================= +// ====== windows.h ====== +// ======================= +typedef struct _IMAGE_DOS_HEADER { // DOS .EXE header + u16 e_magic; // Magic number + u16 e_cblp; // Bytes on last page of file + u16 e_cp; // Pages in file + u16 e_crlc; // Relocations + u16 e_cparhdr; // Size of header in paragraphs + u16 e_minalloc; // Minimum extra paragraphs needed + u16 e_maxalloc; // Maximum extra paragraphs needed + u16 e_ss; // Initial (relative) SS value + u16 e_sp; // Initial SP value + u16 e_csum; // Checksum + u16 e_ip; // Initial IP value + u16 e_cs; // Initial (relative) CS value + u16 e_lfarlc; // File address of relocation table + u16 e_ovno; // Overlay number + u16 e_res[4]; // Reserved words + u16 e_oemid; // OEM identifier (for e_oeminfo) + u16 e_oeminfo; // OEM information; e_oemid specific + u16 e_res2[10]; // Reserved words + i32 e_lfanew; // File address of new exe header + } IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER; + +// +// File header format. +// + +typedef struct _IMAGE_FILE_HEADER { + u16 Machine; + u16 NumberOfSections; + u32 TimeDateStamp; + u32 PointerToSymbolTable; + u32 NumberOfSymbols; + u16 SizeOfOptionalHeader; + u16 Characteristics; +} IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER; + +#define IMAGE_SIZEOF_FILE_HEADER 20 + +// Directory Entries + +#define IMAGE_DIRECTORY_ENTRY_EXPORT 0 // Export Directory +#define IMAGE_DIRECTORY_ENTRY_IMPORT 1 // Import Directory +#define IMAGE_DIRECTORY_ENTRY_RESOURCE 2 // Resource Directory +#define IMAGE_DIRECTORY_ENTRY_EXCEPTION 3 // Exception Directory +#define IMAGE_DIRECTORY_ENTRY_SECURITY 4 // Security Directory +#define IMAGE_DIRECTORY_ENTRY_BASERELOC 5 // Base Relocation Table +#define IMAGE_DIRECTORY_ENTRY_DEBUG 6 // Debug Directory +// IMAGE_DIRECTORY_ENTRY_COPYRIGHT 7 // (X86 usage) +#define IMAGE_DIRECTORY_ENTRY_ARCHITECTURE 7 // Architecture Specific Data +#define IMAGE_DIRECTORY_ENTRY_GLOBALPTR 8 // RVA of GP +#define IMAGE_DIRECTORY_ENTRY_TLS 9 // TLS Directory +#define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG 10 // Load Configuration Directory +#define IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT 11 // Bound Import Directory in headers +#define IMAGE_DIRECTORY_ENTRY_IAT 12 // Import Address Table +#define IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT 13 // Delay Load Import Descriptors +#define IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR 14 // COM Runtime descriptor + +// +// Directory format. +// + +typedef struct _IMAGE_DATA_DIRECTORY { + u32 VirtualAddress; + u32 Size; +} IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY; + +#define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16 + +typedef struct _IMAGE_OPTIONAL_HEADER64 { + u16 Magic; + u8 MajorLinkerVersion; + u8 MinorLinkerVersion; + u32 SizeOfCode; + u32 SizeOfInitializedData; + u32 SizeOfUninitializedData; + u32 AddressOfEntryPoint; + u32 BaseOfCode; + u64 ImageBase; + u32 SectionAlignment; + u32 FileAlignment; + u16 MajorOperatingSystemVersion; + u16 MinorOperatingSystemVersion; + u16 MajorImageVersion; + u16 MinorImageVersion; + u16 MajorSubsystemVersion; + u16 MinorSubsystemVersion; + u32 Win32VersionValue; + u32 SizeOfImage; + u32 SizeOfHeaders; + u32 CheckSum; + u16 Subsystem; + u16 DllCharacteristics; + u64 SizeOfStackReserve; + u64 SizeOfStackCommit; + u64 SizeOfHeapReserve; + u64 SizeOfHeapCommit; + u32 LoaderFlags; + u32 NumberOfRvaAndSizes; + IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; +} IMAGE_OPTIONAL_HEADER64, *PIMAGE_OPTIONAL_HEADER64; + +typedef struct _IMAGE_NT_HEADERS64 { + u32 Signature; + IMAGE_FILE_HEADER FileHeader; + IMAGE_OPTIONAL_HEADER64 OptionalHeader; +} IMAGE_NT_HEADERS64, *PIMAGE_NT_HEADERS64; +// ======================== +// ====== !windows.h ====== +// ======================== + struct module { void* base_addr; u8** functions_name; @@ -23,7 +134,7 @@ struct module { #ifdef HASHMAP struct hashmap symbols; #endif - u8 name[256U]; + i8 name[256U]; }; |
