Python ile basit anti cheat nasıl yapılır?

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üye
Katılım
6 Ağu 2023
Mesajlar
10
Tepki puanı
2
Ödüller
1
Yaş
27
2 HİZMET YILI
Arkadaşlar, yukarıda söylediğim gibi Python ile basit bir anti cheat nasıl yapabilirim? İnternete bunun ile ilgili hiçbir konu bulamadım, en azından Türkçe konu yoktu.
 
Moderatörün son düzenlenenleri:
kmode exception
Seçkin Üye
Katılım
18 Tem 2022
Mesajlar
325
Çözümler
9
Tepki puanı
87
Ödüller
3
Sosyal
3 HİZMET YILI
Oyununda 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.
 
injecting to 0xDEADBEEF
Ultra Üye
Katılım
31 Eki 2017
Mesajlar
1,948
Çözümler
64
Tepki puanı
2,164
Ödüller
13
Yaş
29
Sosyal
8 HİZMET YILI
Basit bir şekilde yapamazsın maalesef.
 
aka hernos
Süper Üye
Katılım
30 Ağu 2019
Mesajlar
628
Çözümler
10
Tepki puanı
297
Ödüller
4
Yaş
29
Sosyal
6 HİZMET YILI
Python 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.
 
kmode exception
Seçkin Üye
Katılım
18 Tem 2022
Mesajlar
325
Çözümler
9
Tepki puanı
87
Ödüller
3
Sosyal
3 HİZMET YILI
Python 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.
Kesinlikle katılıyorum, yazılım yolunda çok yardımın dokundu marfix tekrardan teşekkürler :peepo:
 
Üye
Katılım
6 Ağu 2023
Mesajlar
10
Tepki puanı
2
Ödüller
1
Yaş
27
2 HİZMET YILI
Oyununda 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
 
aka hernos
Süper Üye
Katılım
30 Ağu 2019
Mesajlar
628
Çözümler
10
Tepki puanı
297
Ödüller
4
Yaş
29
Sosyal
6 HİZMET YILI
kmode exception
Seçkin Üye
Katılım
18 Tem 2022
Mesajlar
325
Çözümler
9
Tepki puanı
87
Ödüller
3
Sosyal
3 HİZMET YILI
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.

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.
 
Üye
Katılım
5 Ocak 2018
Mesajlar
48
Tepki puanı
3
Ödüller
5
Yaş
26
8 HİZMET YILI
Birçok oyunun karmaşık anticheat sistemleri olduğunu unutmayın. Bu tür sistemler genellikle oyun motoruna veya platforma özgüdür. Özellikle çok oyunculu çevrimiçi oyunlar için etkili bir anticheat sistemi oluşturmak, uzmanlık ve sürekli güncellemeler gerektirebilir. Eğer ciddi bir anticheat sistemi oluşturmak istiyorsanız, bu konuda deneyimli bir yazılım ekibinin yardımını almanızı öneririm.
 
Üye
Katılım
6 Ağu 2023
Mesajlar
10
Tepki puanı
2
Ödüller
1
Yaş
27
2 HİZMET YILI
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.

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.
kanka sanırım bu konu hakkında en bilgilimiz sensin altaki kodu nasıl derleyip çalıştırabilirim

Kod:
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;
}
Post automatically merged:

C:
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;
}
 
Üye
Katılım
30 Kas 2018
Mesajlar
48
Tepki puanı
3
Ödüller
7
7 HİZMET YILI
online oyunlar için yapılmış hazır antihackler var ve freeler source kodlarıda paylaşılmış ordan kend istedigine göre şekillendirebilirsin
 
Yeryüzünde sadece katliam var
Uzman Üye
Katılım
20 Ara 2022
Mesajlar
263
Çözümler
2
Tepki puanı
18
Ödüller
3
3 HİZMET YILI
herhangi bir türkçe kaynak bulman kolay değil o yüzden ingilizce geliştirmeni tavsiye ederim
 
Onaylı Üye
Katılım
30 Eki 2021
Mesajlar
56
Tepki puanı
1
Ödüller
4
Yaş
27
4 HİZMET YILI
basit hile kodlamak diye bir şey yoktur uğraşman gerekir
 
Onaylı Üye
Katılım
25 Ağu 2023
Mesajlar
84
Tepki puanı
2
Ödüller
2
Yaş
26
2 HİZMET YILI
basit bir şekilde olmaz :D
 
Üye
Katılım
8 Mar 2024
Mesajlar
47
Tepki puanı
0
Yaş
25
2 HİZMET YILI
Python ile basit bir hile önleme yöntemi oluşturmak için şu temel adımları takip edebilirsiniz:

Bellek Monitörü: Oyun sürecinin bellek kullanımını izlemek için psutil kütüphanesini kullanabilirsiniz. Herhangi bir anormallik tespit ederseniz, bunun yanlış olduğunu göreceksiniz.

Dosyaların bütünlüğünü kontrol edin: tekrarlar ve DLL'ler gibi oyun dosyalarının karma değerini hesaplayın (örneğin, hashlib modülünü kullanarak) ve bunları bilinen karmalarla karşılaştırın. Dosyalarda yapılacak herhangi bir değişiklik hile yapıldığını gösterebilir.

Şüpheli İşlemleri Algıla: Çalışan tüm işlemleri listelemek ve bilinen hile işlemlerini veya şüpheli adlara sahip işlemleri kontrol etmek için bir psutil kitaplığı kullanın.

Klavye ve Fare Girişini Monitörle: Klavye ve fare girişini izlemek için pynput kitaplığını kullanın. Aşırı hızlı tıklamalar veya makrolar gibi şüpheli giriş kalıpları tespit ederseniz bu, tuzağa düşmenin işareti olabilir.

Sunucuyla İletişim Kurma: Oyununuzun çevrimiçi bir bileşeni varsa, verileri sunucuya gönderebilir ve oyuncunun eylemlerinin beklenenlerle tutarlı olduğunu doğrulayabilirsiniz.

Bu tedbirlerin uygulanması oyunun türüne ve oynandığı ortama göre değişiklik gösterebilmektedir. Bu, anti-hilenin önemli bir parçasıdır ve mükemmeldir, hileciler sürekli olarak bu önlemleri atlatmanın yeni yollarını geliştirmektedir.
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst