diff options
Diffstat (limited to 'src/module.c')
| -rw-r--r-- | src/module.c | 23 |
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)); +} |
