samp is meme
Активный
- 183
- 64
Я щас как ебучий абориген, которому показали зажигалку. Как этим пользоваться? Я что-то написал, исходя из инфы на странице этой функции msoft, но я ничего не понимаю. Подскажи, пожалуйста, как мне юзать это ?
Посмотреть вложение 55573
Не знаю, хоть как-то тебе облегчить жизнь, класс для работы с памятью.
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 dwSize)
{
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(dwSize, 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))
{
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 dwSize)
{
T _read;
ReadProcessMemory(_process, LPVOID(dwSize), &_read, sizeof(T), NULL);
return _read;
}
template <class T>
void Write(const DWORD dwSize, const T value)
{
WriteProcessMemory(_process, LPVOID(dwSize), &value, sizeof(T), NULL);
}
void Exit()
{
CloseHandle(_process);
}
private:
HANDLE _process;
DWORD _pId;
};
Как юзать на примере контры
C++:
memory mem;
PModule bClient;
while (!mem.Attach("csgo.exe", PROCESS_ALL_ACCESS)) {}
bClient = mem.GetModule("client_panorama.dll");
DWORD playerBase = mem.Read<DWORD>(bClient.dwBase + dwLocalPlayer);