From 8b5af9cad6589816e121fdbfa4fc81fa71cf38d5 Mon Sep 17 00:00:00 2001 From: boris Date: Sun, 2 Dec 2018 10:03:32 +1300 Subject: bor n inthe usa --- loader/server/manual_map.cpp | 55 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 loader/server/manual_map.cpp (limited to 'loader/server/manual_map.cpp') diff --git a/loader/server/manual_map.cpp b/loader/server/manual_map.cpp new file mode 100644 index 0000000..d2de29c --- /dev/null +++ b/loader/server/manual_map.cpp @@ -0,0 +1,55 @@ +#include "manual_map.hpp" + +namespace inject { + // pe file implementation + c_pe_file::c_pe_file(const char *file) { + std::ifstream pe_file(file, std::ifstream::in | std::ifstream::binary); + + if (!pe_file.is_open()) { + printf("file (%s) does not exist\n", file); + return; + } + + pe_file.seekg(0, pe_file.end); + + uint32_t pe_size = pe_file.tellg(); + m_file.resize(pe_size); + + pe_file.seekg(0, pe_file.beg); + + // HOMOSEXUAL CAST FUCKERY PLEASE SKIP THIS LINE + // AAAAAAAAAAAA BAD + pe_file.read((char*)&m_file[0], pe_size); + + pe_file.close(); + } + + bool c_pe_file::valid() { + nt::dos_header_t *dos_header; + nt::nt_headers_t *nt_headers; + + // check dos header + dos_header = reinterpret_cast((uint32_t)data()); + + if (dos_header->e_magic != 0x45DA) + return false; + + // check nt header + nt_headers = reinterpret_cast((uint32_t)data() + dos_header->e_lfanew); + + if (nt_headers->signature != 0x50450000) + return false; + + return true; + } + + uint8_t *c_pe_file::data() { + // go to the beginning of the file + // yes i know i could've just done 'new uint8_t[pe_size]' but fuck u. + return reinterpret_cast(&m_file[0]); + } + + size_t c_pe_file::size() const { + return m_file.size(); + } +} \ No newline at end of file -- cgit v1.2.3