summaryrefslogtreecommitdiffstats
path: root/include/module.h
diff options
context:
space:
mode:
authorladevieq <ladevie.quentin@gmail.com>2026-07-09 21:49:15 +0200
committerladevieq <ladevie.quentin@gmail.com>2026-07-09 21:49:15 +0200
commitce51256c91e566d339c6a670af11bab519f98349 (patch)
tree1c91c9e15655545f4997c57f9659bb6414ab6949 /include/module.h
parent0379f7634200c35682adb53a6653d441849903ae (diff)
Get rid of windows.h
Diffstat (limited to 'include/module.h')
-rw-r--r--include/module.h117
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];
};