Начинающий
-
Автор темы
- #1
Делал все по урокам, код будет ниже, суть его - простейшее приложение для простейшего чтения из памяти какой то рандомной фигни, так вот я дебажил его и насколько я понял он не находит модуль "client.dll", нужна помощь кароче, я тут фрукт зелененький и не оч понимаю что не так
Класс для раоты с памятью:
и main:
Класс для раоты с памятью:
C++:
#pragma once
#include <Windows.h>
#include <TlHelp32.h>
#include <comdef.h>
struct PModule
{
DWORD dwBase;
DWORD dwSize;
};
class memory {
public:
inline bool Attach(const char* pName, DWORD dwAccess)
{
HANDLE handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
PROCESSENTRY32 entry;
entry.dwSize = sizeof(entry);
do
if (!strcmp(_bstr_t(entry.szExeFile), pName))
{
_pId = entry.th32ProcessID;
CloseHandle(handle);
_process = OpenProcess(dwAccess, false, _pId);
return true;
}
while (Process32Next(handle, &entry));
return false;
}
inline PModule GetModule(const char* pModule)
{
HANDLE module = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, _pId);
MODULEENTRY32 entry;
entry.dwSize = sizeof(entry);
do
if (strcmp(_bstr_t(entry.szModule), pModule) == 0)
{
CloseHandle(module);
return PModule{ reinterpret_cast<DWORD>(entry.hModule), entry.modBaseSize };
}
while (Module32Next(module, &entry));
return PModule{ 0,0 };
}
template <class T>
T Read(const DWORD dwAdress)
{
T _read;
ReadProcessMemory(_process, LPVOID(dwAdress), &_read, sizeof(T), NULL);
return _read;
}
template <class T>
void Write(const DWORD dwAdress, const T value)
{
WriteProcessMemory(_process, LPVOID(dwAdress), &value, sizeof(T), NULL);
}
void Exit()
{
CloseHandle(_process);
}
private:
HANDLE _process;
DWORD _pId;
};
Код:
#include <iostream>
#include <string>
#include "mem.h"
using namespace std;
memory mem;
PModule bClient;
int main() {
while (!mem.Attach("csgo.exe", PROCESS_ALL_ACCESS)) {}
bClient = mem.GetModule("client.dll");
cout << "dwBase: " << bClient.dwBase << endl;
cout << "dwSize: " << bClient.dwSize << endl;
mem.Exit();
system("pause>nul");
return 0;
}