[DllImport("kernel32.dll")]
public static extern IntPtr OpenProcess(int dwDesiredAccess, bool bInheritHandle, int dwProcessId);
[DllImport("kernel32.dll")]
public static extern bool ReadProcessMemory(IntPtr hProcess, int lpBaseAddress, byte[] lpBuffer, uint nSize, out int lpNumberOfBytesRead);
[DllImport("kernel32.dll")]
public static extern bool CloseHandle(IntPtr hObject);
const int PROGRAM_BUTUN_ACCES = 0x1F0FFF;
gerekli izinleri verdik simdi kısaca anti hile için sorgulamalarımızı yapalım
int processid = 1234; // GTA_SA çalıştığı process ID'sini gir
IntPtr hProcess = OpenProcess(PROGRAM_BUTUN_ACCES , false, processid);
if (hProcess != IntPtr.Zero)
{
int baseAddress = 0x123456; // Kontrol etmek istediğiniz offset adresi onuda aşagıdaki linkten öğrenebilirsiniz
byte[] buffer = new byte[4]; // Bellekten alınacak veri boyutunu alma
int bytesRead;
if (ReadProcessMemory(hProcess, baseAddress, buffer, (uint)buffer.Length, out bytesRead))
{
// bellekten alınan veriyi alıp sorgulama
int value = BitConverter.ToInt32(buffer, 0);
Console.WriteLine("Değer: " + value);
// Offset değerini kontrol ile hile tespit etme
if (value > 100) // Hız değeri 100'den büyükse, hile yapıldığını kabul ederiz varsayalım
{
Console.WriteLine("Hile tespit edildi!");
// gerekli kod ile oyunu kapatıp veyahut php kullanarak mysql veri gönderip oyuncunun virtualini değiştirip oyuncuyu şaşırtabilirsiniz.
}
}
CloseHandle(hProcess);
memory addres (https://gtamods.com/wiki/Memory_Addresses_(SA))
Test için görmeniz için sınırlamalı bir sistemle video paylaştım izleyebilirsiniz konun ilgi talebine göre de geliştirmeler yapacagız beraber
Not videodaki kodlar değişiktir onuda paylaşıcaktım ama aynı mantık diye paylaşmadıım isterseniz paylaşım yapabilirim