Üye
base_address = 0xDBEFFD
offset = 0x204
class PointerExample(ctypes.Structure):
_fields_ = [("pointeraddress", ctypes.c_uint32)]
pointeraddress = 0x400
pointer_instance = PointerExample(address=address)
pointer_address = pointer_instance.address
target_address = base_address + offset + pointer_instance.address
process_handle = ctypes.windll.kernel32.OpenProcess(0x1F0FFF, False, process_id)
buffer = ctypes.create_string_buffer(4)
ctypes.windll.kernel32.ReadProcessMemory(process_handle, target_address, buffer, ctypes.sizeof(buffer), None)
value_at_target = ctypes.cast(buffer, ctypes.POINTER(ctypes.c_uint32)).contents.value
if value_at_target > 100:
Kesinlikle katılıyorum, yazılım yolunda çok yardımın dokundu marfix tekrardan teşekkürlerPython C++ dan daha üst katmanda bir dildir. Yapılan hilelerin çoğu C++ üzerinden yapıldığı için siz o katmana erişemiyeceksiniz ve hileyi etkilemek imkansız gibi birşey olucaktır. Anticheat için C++ ve C seviyede yapman şart gibi birşey.
peki c++ ile nasıl yapabilirim söyle bi mantığının olmasını istiyorum cheat enginenin process list kısmı açıldığında oyun kapanacak böyle bir şey yapabilirmiyimOyununda herhangi bir can değeri var diyelim, onu hemen kısa bir kodla koruyabilirsin. Dediğim gibi bu başlangıç seviye bir korumadır bilgili kişiler kırabilir, ama üzerinde gelişmeler yapabilirsin.
Şu şekilde oluyor:
İlk Öncelikle Can Değerinin Base Addresini Koduna Tanımlamalısın :
Python:base_address = 0xDBEFFD
Sonrasında Can Değerinin Offsetini Tanımlamalısın :
Python:offset = 0x204
En Son Olarakta Pointerı Tanımlamalısın :
Python:class PointerExample(ctypes.Structure): _fields_ = [("pointeraddress", ctypes.c_uint32)] pointeraddress = 0x400 pointer_instance = PointerExample(address=address) pointer_address = pointer_instance.address
Bunların sırası yok istediğin sırayla tanımlayabilirsin sorun olmayacaktır, sonrasında şu işlemi yapacaksın bunların hepsini aynı değişkene atayacaksın.
Python:target_address = base_address + offset + pointer_instance.address
Sonrasında hedef addresteki değeri okutuyoruz
Python:process_handle = ctypes.windll.kernel32.OpenProcess(0x1F0FFF, False, process_id) buffer = ctypes.create_string_buffer(4) ctypes.windll.kernel32.ReadProcessMemory(process_handle, target_address, buffer, ctypes.sizeof(buffer), None) value_at_target = ctypes.cast(buffer, ctypes.POINTER(ctypes.c_uint32)).contents.value
En sonrasında şunu yapıyoruz, eğer değişkenin içindeki pointera baseaddrese ve offsete bağlı değer 100'den büyükse oyunu kapat.
Python:if value_at_target > 100:
Bu şekildede anti-cheat sistemi yapmış oluyorsunuz, ve can değerini arttırmaya çalışan hilecilere karşı küçük bir önlem alıyorsunuz. Ben bu işlerde python önermem C++ öğrenmeniz sizin için daha yararlı olacaktır. Makineye en yakın diller C++ Ve Assembly'dir.
peki c++ ile nasıl yapabilirim söyle bi mantığının olmasını istiyorum cheat enginenin process list kısmı açıldığında oyun kapanacak böyle bir şey yapabilirmiyim
direk process list kısmını engellemek yerine şöyle birşey yapabilirsiniz, direk cheat engineyi engelleyebilirsiniz. C++'da cheat engineye ait dll dosyalarının ismine bakarak bunları kodunuza tanımlayabilirsiniz, ve oyuna injekte olduğunda (TerminateProcess) yapabilirsiniz oyununuzu otomatik olarak kapatabilirisiniz, veya oyuncuyu oyundan banlayabilirsiniz.peki c++ ile nasıl yapabilirim söyle bi mantığının olmasını istiyorum cheat enginenin process list kısmı açıldığında oyun kapanacak böyle bir şey yapabilirmiyim
#ifndef SPEEDHACK_H
#define SPEEDHACK_H
#ifdef __cplusplus
extern "C" {
#endif
void SpeedUpGame();
#ifdef __cplusplus
}
#endif
#endif
HMODULE dllHandle = LoadLibrary("speedhack.dll");
if (dllHandle == NULL) {
return 1;
}
inceleyeceğim sağol
kanka sanırım bu konu hakkında en bilgilimiz sensin altaki kodu nasıl derleyip çalıştırabilirimdirek process list kısmını engellemek yerine şöyle birşey yapabilirsiniz, direk cheat engineyi engelleyebilirsiniz. C++'da cheat engineye ait dll dosyalarının ismine bakarak bunları kodunuza tanımlayabilirsiniz, ve oyuna injekte olduğunda (TerminateProcess) yapabilirsiniz oyununuzu otomatik olarak kapatabilirisiniz, veya oyuncuyu oyundan banlayabilirsiniz.
DLL'i kodunuza tanımlamak için şunu yapmalısınız :
Bir başlık dosyası açın, ve cheat enginedeki dll ismini tanımlamak için bir başlık dosyası oluşturun.
C++:#ifndef SPEEDHACK_H #define SPEEDHACK_H #ifdef __cplusplus extern "C" { #endif void SpeedUpGame(); #ifdef __cplusplus } #endif #endif
Sonrasında başlık dosyasını kodunuza ekleyin ve dll'i kodunuza tanımlayın.
C++:HMODULE dllHandle = LoadLibrary("speedhack.dll"); if (dllHandle == NULL) { return 1; }
Sonrasında ise dll oyuna injekte olduğunda kapatın, bunuda atmak isterdim ama bu kod biraz uzun ne yazıkki onu atamıyacağım kusura bakmayın. Daha fazla makale incelemek isterseniz SCUE4'ün çalışma mantığını kavramaya çalışabilirsiniz.
| include <Windows.h> | ||
| #include <Psapi.h> | ||
| #include <TlHelp32.h> | ||
| #include <stdio.h> | ||
| #include <string.h> | ||
| #include <stdio.h> | ||
| #include <locale.h> | ||
| BOOL IsCheatEngineRunning() | ||
| { | ||
| PROCESSENTRY32 pe32 = { sizeof(PROCESSENTRY32) }; | ||
| HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); | ||
| if (hSnapshot == INVALID_HANDLE_VALUE) | ||
| return FALSE; | ||
| if (Process32First(hSnapshot, &pe32)) | ||
| { | ||
| do { | ||
| if (strcmp(pe32.szExeFile, "cheatengine-i386.exe") == 0) | ||
| { | ||
| CloseHandle(hSnapshot); | ||
| return TRUE; | ||
| } | ||
| if (strcmp(pe32.szExeFile, "cheatengine-x86_64.exe") == 0) | ||
| { | ||
| CloseHandle(hSnapshot); | ||
| return TRUE; | ||
| } | ||
| } while (Process32Next(hSnapshot, &pe32)); | ||
| } | ||
| CloseHandle(hSnapshot); | ||
| return FALSE; | ||
| } |
include <Windows.h>
#include <Psapi.h>
#include <TlHelp32.h>
#include <stdio.h>
#include <string.h>
#include <stdio.h>
#include <locale.h>
BOOL IsCheatEngineRunning()
{
PROCESSENTRY32 pe32 = { sizeof(PROCESSENTRY32) };
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hSnapshot == INVALID_HANDLE_VALUE)
return FALSE;
if (Process32First(hSnapshot, &pe32))
{
do {
if (strcmp(pe32.szExeFile, "cheatengine-i386.exe") == 0)
{
CloseHandle(hSnapshot);
return TRUE;
}
if (strcmp(pe32.szExeFile, "cheatengine-x86_64.exe") == 0)
{
CloseHandle(hSnapshot);
return TRUE;
}
} while (Process32Next(hSnapshot, &pe32));
}
CloseHandle(hSnapshot);
return FALSE;
}
örnekbunun icin bircok kod var
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?