mirror of
https://github.com/momo5502/emulator.git
synced 2026-01-29 15:51:02 +00:00
Move module manager into windows emulator
This commit is contained in:
@@ -27,12 +27,11 @@
|
||||
|
||||
struct process_context
|
||||
{
|
||||
process_context(x64_emulator& emu, memory_manager& memory, file_system& file_sys)
|
||||
process_context(x64_emulator& emu, memory_manager& memory)
|
||||
: base_allocator(emu),
|
||||
peb(emu),
|
||||
process_params(emu),
|
||||
kusd(memory, *this),
|
||||
mod_manager(memory, file_sys)
|
||||
kusd(memory, *this)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -49,8 +48,7 @@ struct process_context
|
||||
emulator_object<RTL_USER_PROCESS_PARAMETERS64> process_params;
|
||||
kusd_mmio kusd;
|
||||
|
||||
module_manager mod_manager;
|
||||
|
||||
// TODO: Remove this
|
||||
mapped_module* executable{};
|
||||
mapped_module* ntdll{};
|
||||
mapped_module* win32u{};
|
||||
@@ -86,7 +84,6 @@ struct process_context
|
||||
buffer.write(this->peb);
|
||||
buffer.write(this->process_params);
|
||||
buffer.write(this->kusd);
|
||||
buffer.write(this->mod_manager);
|
||||
|
||||
buffer.write(this->executable->image_base);
|
||||
buffer.write(this->ntdll->image_base);
|
||||
@@ -124,15 +121,16 @@ struct process_context
|
||||
buffer.read(this->peb);
|
||||
buffer.read(this->process_params);
|
||||
buffer.read(this->kusd);
|
||||
buffer.read(this->mod_manager);
|
||||
|
||||
const auto executable_base = buffer.read<uint64_t>();
|
||||
const auto ntdll_base = buffer.read<uint64_t>();
|
||||
const auto win32u_base = buffer.read<uint64_t>();
|
||||
|
||||
this->executable = this->mod_manager.find_by_address(executable_base);
|
||||
this->ntdll = this->mod_manager.find_by_address(ntdll_base);
|
||||
this->win32u = this->mod_manager.find_by_address(win32u_base);
|
||||
auto& mod_manager = buffer.read<module_manager_wrapper>().get();
|
||||
|
||||
this->executable = mod_manager.find_by_address(executable_base);
|
||||
this->ntdll = mod_manager.find_by_address(ntdll_base);
|
||||
this->win32u = mod_manager.find_by_address(win32u_base);
|
||||
|
||||
buffer.read(this->ldr_initialize_thunk);
|
||||
buffer.read(this->rtl_user_thread_start);
|
||||
|
||||
Reference in New Issue
Block a user