W CE znalazłem adres bazowy hp w grze. Teraz chciałbym tę zmienną wypisać w consoli. Nie wiem tylko jak w c++ dodać te 3 adresy: plik.exe + client.dll + offset. Skoro już jesteśmy w miejscu cout'a do consoli mam też drugie pytanie. Co musiałbym wykorzystać do narysowania tej zmiennej w grze? Np pobiorę wszystkie hp graczy i chciałbym narysować je sobie na ekranie. Ostatnia sprawa to narysowanie czegoś nad głowami graczy. Pobiorę XYZ graczy oraz swoje i czy z tego mogę narysować? Jest jakaś funkcja do przeliczania kordów 3 wymiarowych na 2 wymiarowe monitora? Rysować chodzi mi o np. kropkę, trójkąt, kwadrat, koło, jakąkolwiek figurę czy nawet napis. Co do adresu, to jest adres hp w grze: "client.dll+120648". plik exe to "hl.exe" Tutaj kodzik:
#include "stdafx.h"
#include <iostream>
#include <Windows.h>
#include <TlHelp32.h>
using namespace std;
DWORD_PTR dwGetModuleBaseAddress(DWORD dwProcID)
{
DWORD_PTR dwModuleBaseAddress = 0;
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, dwProcID);
if (hSnapshot != INVALID_HANDLE_VALUE)
{
MODULEENTRY32 ModuleEntry32;
ModuleEntry32.dwSize = sizeof(MODULEENTRY32);
if (Module32First(hSnapshot, &ModuleEntry32))
{
do
{
if (_tcsicmp(ModuleEntry32.szModule, L"client.dll") == 0)
{
dwModuleBaseAddress = (DWORD_PTR)ModuleEntry32.modBaseAddr;
break;
}
} while (Module32Next(hSnapshot, &ModuleEntry32));
}
CloseHandle(hSnapshot);
}
return dwModuleBaseAddress;
}
int main()
{
long hp;
DWORD processId;
HANDLE hProcess;
HWND hCS = FindWindow(L"Counter-Strike", NULL);
GetWindowThreadProcessId(hCS, &processId);
DWORD_PTR ten = dwGetModuleBaseAddress(processId);
hProcess = OpenProcess(PROCESS_VM_READ, false, processId);
while (true)
{
ReadProcessMemory(hProcess, (void*)(ten+120648), &hp, sizeof(long), NULL);
cout << hp << endl;
Sleep(300);
}
CloseHandle(hProcess);
return 0;
}