Merhaba arkadaşlar bugün size C++ Game Hacking öğreteceğim.
ilk olarak pointer - value ve varsa offset bulunması gerekiyor.
benim hedefledigim oyun Wolfteam
oyunun degiskenlerini aldıgı yerler = cshxxxx.tmp objxxxx.tmp crexxxx.tmp cfxxxxx.tmp ve Wolfteam.bin(yani kendi .exe sinden)
pointerlarımızı bulduk diyelim
->Visual Studio açıyoruz C++ Proje oluşturuyoruz > Ayarlardan > Common Langague Runtime Support bölümünden seçeneklerden /clr seçiyoruz.
-> Linker > System > SubSystem ' i Windows yapıyoruz
-> Linker > Advanced > EntryPoint ' e "Main" yazıyoruz.
Sonra Forma Add diyip > UI bolumune gelip Formu seçip Add diyoruz
Form eklendikden sonra bir .h bide .cpp gelecektir.
forma gelip 2 kez tıklıyoruz formun kodlarının üstüne şu kodu yapıştırıyoruz şlaak diye :d
.cpp yi açıp
ekliyoruz.
bunu yazdıgımız için .exe olucak ve tıkladıgımızda form gelicek yoksa gelmez..
#include bölümüne şunları ekleyelim
using namespace bölümüne ;
Forma 2 kez tıklayıp Form_Load' a şunu yazıyoruz ve ya Timer'ada yazılabilir. Label ekleyip name sini CSH ve BIN yapın bu vereceğmi kod yukarda bahsettiğim cshxxx.tmp ve Wolfteam.bin 'i çeken koddur.
CheckBox ekleyelim ve ismini Name ESP yapalım. sonra 2 kez üstüne tıklayıp kod bölümüne :d
ilk olarak pointer - value ve varsa offset bulunması gerekiyor.
benim hedefledigim oyun Wolfteam
oyunun degiskenlerini aldıgı yerler = cshxxxx.tmp objxxxx.tmp crexxxx.tmp cfxxxxx.tmp ve Wolfteam.bin(yani kendi .exe sinden)
pointerlarımızı bulduk diyelim
->Visual Studio açıyoruz C++ Proje oluşturuyoruz > Ayarlardan > Common Langague Runtime Support bölümünden seçeneklerden /clr seçiyoruz.
-> Linker > System > SubSystem ' i Windows yapıyoruz
-> Linker > Advanced > EntryPoint ' e "Main" yazıyoruz.
Sonra Forma Add diyip > UI bolumune gelip Formu seçip Add diyoruz
Form eklendikden sonra bir .h bide .cpp gelecektir.
forma gelip 2 kez tıklıyoruz formun kodlarının üstüne şu kodu yapıştırıyoruz şlaak diye :d
Kod:
DWORD ProcessExists(char *ProcessName)//
{
HANDLE hProcessSnap;
PROCESSENTRY32 pe32;
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
pe32.dwSize = sizeof(PROCESSENTRY32);
do
{
if(strcmp(ProcessName,pe32.szExeFile)==0)
{
DWORD ProcessId = pe32.th32ProcessID;
CloseHandle(hProcessSnap);
return ProcessId;
}
} while(Process32Next(hProcessSnap, &pe32));
CloseHandle(hProcessSnap);
return 0;
}
.cpp yi açıp
Kod:
#include "eklenen .h dosyasının ismi .h"
using namespace PROJE İSMİNİZ;
[STAThreadAttribute]
int Main() {
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false);
Application::Run(gcnew FORMUN İSMİ());
return 0;
}
ekliyoruz.
bunu yazdıgımız için .exe olucak ve tıkladıgımızda form gelicek yoksa gelmez..
#include bölümüne şunları ekleyelim
Kod:
#include <iostream>
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <string>
#include <fstream>
#include <float.h>
#include <tlhelp32.h>
#include <tchar.h>
#include <sstream>
#include <Psapi.h>
using namespace bölümüne ;
Kod:
using namespace System::Diagnostics;
Forma 2 kez tıklayıp Form_Load' a şunu yazıyoruz ve ya Timer'ada yazılabilir. Label ekleyip name sini CSH ve BIN yapın bu vereceğmi kod yukarda bahsettiğim cshxxx.tmp ve Wolfteam.bin 'i çeken koddur.
Kod:
Process ^p = Process::GetProcessesByName("Wolfteam.bin")[0];
for each(System::Diagnostics::ProcessModule ^moz in p->Modules)
{
if(moz->FileName->IndexOf("csh")!=-1)
{
CSH->Text = moz->BaseAddress.ToString();
}
if(moz->FileName->IndexOf("bin")!=-1)
{
BIN->Text = moz->BaseAddress.ToString();
}
}
CheckBox ekleyelim ve ismini Name ESP yapalım. sonra 2 kez üstüne tıklayıp kod bölümüne :d
Kod:
DWORD VERI = Convert::ToInt32(CSH->Text); //csh mizi yani pointerimizi bi sonuca ulaştıran bölüm. eğer bin le çalışıyorsa pointer CSH yi BIN yapın yoksa hata verir
DWORD OFFSET = 0x01; // ofset varsa kullanın
DWORD ADRES = VERI + 0x353902; //+ OFFSET; ofset varsa kullanın
int DEGER = 2251829620; // value bölümümüz eğer değeri textboxtan alıcaksa int yerine DWORD yazın.
HANDLE MemHandle = OpenProcess(PROCESS_ALL_ACCESS,0,ProcessExists("Wolfteam.bin")); // oyunu degiskene tanıtıyoruz
WriteProcessMemory(MemHandle,(LPVO ID(ADRES)),&DEGER,4,NULL); // en sonunda valueyi adrese işleyen bolum VO ID İ birleştirin forum sansürlüy niye bilmiyorum




