#pragma once #include "emulator_utils.hpp" #include "handles.hpp" struct exported_symbol { std::string name{}; uint64_t ordinal{}; uint64_t rva{}; uint64_t address{}; }; using exported_symbols = std::vector; struct mapped_binary { uint64_t image_base{}; uint64_t size_of_image{}; uint64_t entry_point{}; exported_symbols exports{}; }; struct event { bool signaled{}; EVENT_TYPE type{}; bool is_signaled() { const auto res = this->signaled; if (this->type == SynchronizationEvent) { this->signaled = false; } return res; } }; struct file { std::wstring name{}; }; struct process_context { emulator_object teb{}; emulator_object peb{}; emulator_object process_params{}; emulator_object kusd{}; mapped_binary executable{}; mapped_binary ntdll{}; handle_store events{}; handle_store files{}; emulator_allocator gs_segment{}; bool verbose{false}; };