From 77b52da44b263df4884be2f35f885d8edccbb6fa Mon Sep 17 00:00:00 2001 From: boris Date: Wed, 19 Dec 2018 00:13:24 +1300 Subject: added new loader project :) merry christmas --- .../csgo-client/RemoteCode/RemoteProcess.cpp | 47 ++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 csgo-loader/csgo-client/RemoteCode/RemoteProcess.cpp (limited to 'csgo-loader/csgo-client/RemoteCode/RemoteProcess.cpp') diff --git a/csgo-loader/csgo-client/RemoteCode/RemoteProcess.cpp b/csgo-loader/csgo-client/RemoteCode/RemoteProcess.cpp new file mode 100644 index 0000000..7397c7d --- /dev/null +++ b/csgo-loader/csgo-client/RemoteCode/RemoteProcess.cpp @@ -0,0 +1,47 @@ +#include + +namespace RemoteCode { + // RemoteModule implementation + RemoteModule::RemoteModule(HANDLE Module, RemoteProcess &Process) : + m_Module(Module) { + // Read information about module. + MODULEINFO ModuleInfo{}; + if(!K32GetModuleInformation(Process, (HMODULE)Module, &ModuleInfo, sizeof ModuleInfo)) + return; + + // Read module data. + m_ModuleData.reserve(ModuleInfo.SizeOfImage); + Process.Read(ModuleInfo.lpBaseOfDll, m_ModuleData.data(), m_ModuleData.size()); + } + + uintptr_t RemoteModule::Scan(ByteArray &Data) { + if(m_ModuleData.empty()) + return uintptr_t{}; + + // We have a valid file (?) + uint8_t *Buffer = m_ModuleData.data(); + + if(!Buffer || *(uint16_t *)Buffer != IMAGE_DOS_SIGNATURE) + return uintptr_t{}; + + // Read PE information. + IMAGE_DOS_HEADER *DosHeader = (IMAGE_DOS_HEADER *)Buffer; + IMAGE_NT_HEADERS *NtHeaders = (IMAGE_NT_HEADERS *)(Buffer + DosHeader->e_lfanew); + + if(NtHeaders->Signature != IMAGE_NT_SIGNATURE) + return uintptr_t{}; + + // Find signature. + ByteArray::iterator Iterator = std::search( + m_ModuleData.begin(), + m_ModuleData.end(), + Data.begin(), + Data.end() + ); + + return (uintptr_t)std::distance(m_ModuleData.begin(), Iterator); + } + + // RemoteProcess implementation + +} \ No newline at end of file -- cgit v1.2.3