h1-mod/src/client/loader/loader.hpp
2022-02-03 11:05:24 -08:00

22 lines
941 B
C++

#pragma once
#include <utils/nt.hpp>
class loader final
{
public:
FARPROC load(const utils::nt::library& library, const std::string& buffer) const;
FARPROC load_library(const std::string& filename) const;
void set_import_resolver(const std::function<void*(const std::string&, const std::string&)>& resolver);
private:
std::function<void*(const std::string&, const std::string&)> import_resolver_;
static void load_section(const utils::nt::library& target, const utils::nt::library& source,
IMAGE_SECTION_HEADER* section);
void load_sections(const utils::nt::library& target, const utils::nt::library& source) const;
void load_imports(const utils::nt::library& target, const utils::nt::library& source) const;
void load_exception_table(const utils::nt::library& target, const utils::nt::library& source) const;
void load_tls(const utils::nt::library& target, const utils::nt::library& source) const;
};