niklive
Активный
- Сообщения
- 165
- Реакции
- 16
Пытался сделать external чит, чтобы он работал через оффсеты, но я всё никак не пойму что с кодом не так. Мне не хватает знаний, чтобы понять что тут не так, поэтому я и пишу сюда. Если кто знает, подскажите почему код не работает. То есть всё компилится и консоль открывается, только ничего не происходит
C++:
#include <iostream>
#include <Windows.h>
#include <TlHelp32.h>
#include <tchar.h>
#include <vector>
#include <stdlib.h>
using namespace std;
DWORD GetModuleBaseAddress(TCHAR* lpszModuleName, DWORD pID) {
DWORD dwModuleBaseAddress = 0;
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pID);
MODULEENTRY32 ModuleEntry32 = { 0 };
ModuleEntry32.dwSize = sizeof(MODULEENTRY32);
if (Module32First(hSnapshot, &ModuleEntry32))
{
do {
if (_tcscmp(ModuleEntry32.szModule, lpszModuleName) == 0)
{
dwModuleBaseAddress = (DWORD)ModuleEntry32.modBaseAddr;
break;
}
} while (Module32Next(hSnapshot, &ModuleEntry32));
}
CloseHandle(hSnapshot);
return dwModuleBaseAddress;
}
DWORD GetPointerAddress(HWND hwnd, DWORD gameBaseAddr, DWORD address, vector<DWORD> offsets)
{
DWORD pID = NULL;
GetWindowThreadProcessId(hwnd, &pID);
HANDLE phandle = NULL;
phandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pID);
if (phandle == INVALID_HANDLE_VALUE || phandle == NULL);
DWORD offset_null = NULL;
ReadProcessMemory(phandle, (LPVOID*)(gameBaseAddr + address), &offset_null, sizeof(offset_null), 0);
DWORD pointeraddress = offset_null;
for (int i = 0; i < offsets.size() - 1; i++)
{
ReadProcessMemory(phandle, (LPVOID*)(pointeraddress + offsets.at(i)), &pointeraddress, sizeof(pointeraddress), 0);
}
return pointeraddress += offsets.at(offsets.size() - 1);
}
int main()
{
HWND hwnd_AC = FindWindowA(NULL, ("DEVOUR"));
if (hwnd_AC != FALSE);
DWORD pID = NULL;
GetWindowThreadProcessId(hwnd_AC, &pID);
HANDLE phandle = NULL;
phandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pID);
if (phandle == INVALID_HANDLE_VALUE || phandle == NULL);
char gamemodule1[] = "GameAssembly.dll";
DWORD gamebaseaddress1 = GetModuleBaseAddress(_T(gamemodule1), pID);
DWORD lightAddr = 0x02CE9CB0;
vector<DWORD> lightOffsets{ 0x28, 0x30, 0x180, 0x78 };
DWORD lightPtrAddr = GetPointerAddress(hwnd_AC, gamebaseaddress1, lightAddr, lightOffsets);
while (true)
{
int light = 120470;
WriteProcessMemory(phandle, (LPVOID*)(lightPtrAddr), &light, 4, 0);
}
}