- Katılım
- 23 Mar 2021
- Konular
- 88
- Mesajlar
- 1,843
- Çözümler
- 19
- Tepkime puanı
- 1,173
- Konum
- Istanbul
- Web sitesi
- github.com
Bir oyunu (veya programı) hacklemek için Windows'un bize sunduğu şu 3 anahtarı kullanırız:
- Process ID (PID): Windows'un her çalışan programa verdiği "adres" gibidir.
- Handle (Kapı Kolu): Bir programa dokunabilmek için Windows'tan "izin" almanız gerekir. Bu izne Handle diyoruz.
- WriteProcessMemory: İşte sihirli değnek! Bu fonksiyonla oyunun RAM'indeki bir adrese gidip, oradaki değeri istediğimiz gibi değiştiriyoruz.
Adım 1: Kurban Programımızı Yazalım (game.exe)
Önce hacklenecek bir şeye ihtiyacımız var. Aşağıdaki kodu ayrı bir proje olarak oluştur ve çalıştır. Bu program bize can değerimizi ve o canın RAM'deki adresini verecek.
game:
#include <iostream>
#include <windows.h>
int main() {
int can = 100;
std::cout << "Canin RAM Adresi: " << &can << std::endl;
std::cout << "Guncel Can Degeri: " << can << std::endl;
while (true) {
std::cout << (can > 0 ? "Hayattasin. Can: " : "Oldun be abi... Can: ") << can << std::endl;
Sleep(3000);
}
return 0;
}
Adım 2: Cheat Engine ile Isınalım
Hileci kodumuzu yazmadan önce, elimizdeki adresi bir test edelim.- Target.exe'yi çalıştırın. Adresi not alın (Mesela: 00AFF924).
- Cheat Engine'i açın ve Target.exe'yi seçin.
- Add Address Manually kısmına ekrandaki adresi yazın.
- Değeri değiştirin... Görüyorsunuz ki programda can hemen değişti! İşte biz şimdi bunu C++ ile yapacağız.
Adım 3: Hileci Kodumuzu Yazalım (inject.exe)
C++:
#include <iostream>
#include <windows.h>
int main() {
uintptr_t canAdresi = 0x0;
int yeniCan = 999;
DWORD processId;
HWND pencere = FindWindowA(NULL, "C:\\Target.exe"); // eğer console app olarak açtıysanız, projeniz yüksek ihtimalle execute olduğu pathi pencere ismi olarak alır.
std::cout << "PID: "; // Task Manager->Name'e sağ tıkla->PID tickini açın böylece procceslerin çalıştığı pid areslerini bulabilirsiniz.
std::cin >> processId;
HANDLE gamepros = OpenProcess(PROCESS_ALL_ACCESS, FALSE, processId);
BOOL sonuc = WriteProcessMemory(gamepros, (LPVOID)canAdresi, ¥iCan, sizeof(yeniCan), NULL);
if (sonuc) {
std::cout << "Yeni can degeri: " << yeniCan << std::endl;
} else {
std::cout << "Hata! Hata Kodu: " << GetLastError() << std::endl;
}
CloseHandle(gamepros);
system("pause");
return 0;
}
Ne Yaptık?
- OpenProcess ile kurbanın dünyasına girmek için Windows'tan izin kağıdı aldık.
- WriteProcessMemory ile o izni kullanarak belirlediğimiz adresteki veriyi (can) tokatladık ve yerine 999 yazdık.