summaryrefslogtreecommitdiffstats
path: root/src/module.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/module.c')
-rw-r--r--src/module.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/module.c b/src/module.c
new file mode 100644
index 0000000..8188665
--- /dev/null
+++ b/src/module.c
@@ -0,0 +1,23 @@
+struct module {
+ void* base_addr;
+ IMAGE_DOS_HEADER dos_header;
+ IMAGE_NT_HEADERS64 nt_header;
+ u8 name[256U];
+};
+
+struct module modules[64U] = { 0U };
+u64 modules_list = ~0ULL;
+
+u8 add_module() {
+// struct module* add_module() {
+ assert(!modules_list);
+ u32 module_index = 0U;
+ _BitScanForward64((unsigned long*)&module_index, modules_list);
+ modules_list ^= (u64)(0x1 << module_index);
+
+ return (u8)module_index;
+};
+
+void remove_module(u8 index) {
+ modules_list |= (u64)(0x1 << (((i8)index) - 1U));
+}