Bypass Nedir ? Nasıl Yapılır ? Irispanel Anti-Cheat Üzerinde Örnek Uygulama 04.08.2021

Bu kullanıcıyla herhangi bir iş veya ticaret yapmak istiyorsanız, forumdan uzaklaştırıldığını sakın unutmayın.
eline yüzüne sağlık cnm
 
Bu kullanıcıyla herhangi bir iş veya ticaret yapmak istiyorsanız, forumdan uzaklaştırıldığını sakın unutmayın.
Merhaba arkadaşlar bu konu hakkında bu forumda ilk konum ama devamının gelip gelmemesi sizin geri dönüşlerinize göre olacak fazla uzatmadan başlayalım.
1- Bypass Nedir ?
Arkadaşlar ben bypass ı istemediğimiz bir fonksiyonu ortadan kaldırmak, devre dışı bırakmak veya istediğimiz gibi çalışmasını sağlamak olarak tanımlıyorum burada teknik bilgi vermeye gerek yok çünkü tam anlamını bilmek hiçbir işimize yaramayacak.
2- Bypass Nasıl Yapılır ?
Bypass yapabilmek için öncelikle temel seviye win api bilgimiz olmalı. örneğin USER32.FindWindowA nın isminden de anlaşılacağı gibi pencere bulmaya yaradığını bilmeliyiz. Hadi devam edelim.
Gerekli Programlar : Öncelikle şu programlama dili bu programlama dili demeyeceğim çünkü handle bağlantısı kurabiliyorsanız ve hafızaya veri yazabiiyorsanız iş bitmiştir ve hangi dili kullandığınızın pek bir önemi yoktur.
Cheat Engine veya Ollydbg tarzı programlar kesinlikle lazım çünkü bypasslayacağımız adresi öncelikle tespit etmeliyiz.
Tercih ettiğiniz programlama dilinin idesi (Örneğin Visual Studio , C++ Builder , Vb6 , Dev c++ vs.)
İhtiyacımız olan programlar bunlar fazlasına gerek yok.
Not : Unutmayın bunlar temel düzey bir bypass için gerekli olan programlar
Öncelikle Cheat Engine mizi oyuna bağlayıp View -> Referanced Functions tıklıyoruz ve tarama yapana kadar bekliyoruz.
7msVGMK.png

1- Tarama bitti ve aşağıda gördüğünüz gibi bir ekran geldi karşımıza.
smqPuZz.png

2- FindWindow fonksiyonunu bulduk ve üzerine tıklayınca sağ tarafta 2 tane adress çıkardı karşımıza en üstteki adrese çift tıklayıp gittik.
nTmjKar.png

3- Bizi böyle bir yere getirdi kodları biraz incelediğimizde aslında bizi FindWindowA fonksiyonunun çağrıldığı yere getirdiğini görüyoruz. Şimdiye kadar şansımız yaver gitti ve bütün adresleri tek seferde bulduk bu adresi devre dışı bırakmamız hiç bir işe yaramayacaktır çünkü fonksiyon içersinde birden fazla kontrol olabilir mesela return kontrolü FindWindowA dan değer dönmez ise bypass ı algılayabilir. Bunun için bizde Anti-Cheat in pencere tarama fonksiyonunu tamamen devre dışı bırakacağız bunun için yukarıya doğru çıkıyoruz ve fonksiyon başına gidiyoruz. Fonksiyon başları genellikle Push ebp diye başlar ve mov ebp,esp diye devam eder.
9gGDWVH.png

4- Aha bulduk şimdi resmi dikkatli incelediyseniz push ebp nin üzerinde bir adress var ve yanında parantez içinde Call yazıyor hemen olmayan ingilizcemiz ile çevirme yapalım ( Call -> çağırmak ) yani bu tarama fonksiyonunun nereden çağrıldığını gösteriyor bize bulunmaz nimet diyip atlıyoruz üzerine ve o parantez içersinde Call yazan yere 2 kere tıklıyoruz.
Not : Eğer üzerinde Call adresi olmasaydı yapmamız gereken işlemler uzayacaktı push ebp ye break point dediğimiz bir kesme noktası atacaktık ve fonksiyonumuz çağrıldığı anda bize return adresi verecekti nereden çağrıldığına dair. Neyse uzatmadan konuya devam.
O8E8afR.png

5- Karşımıza böyle bir yer geliyor.
AAAAAAAAAAAAAAAAAAAAAAAAAA Oda ne
Anti-Cheat in FindWindowA ile pencere tarama fonksiyonunu bulduk. hiç zaman kaybetmiyoruz ve bypass ı mızı koda dökmeye başlıyoruz.
Öncelikle bypasslamamız gereken adresler kesinlikle mov ecx veya call ın içersinde yazan adressler değil bunda hem fikir olalım bizim bypasslamamız gereken adressler call ın adresi
yani metin2client.exe+57146 bu adress call satırının adresi eğer biz o call ı çağırmasını engellemek istiyorsak call komutunun olduğu adrese byte patch atmamız gerekiyor.
Call komutu 5 byte yer kaplar (E8 B51C0200) bu call metin2client.exe+78e00 adresinin byte halidir. biz bunun yerine 5 adet 90 yazacağız ki o satırı pas geçecek yani yeni değerimiz 9090909090 olacak
Şimdi koda dökelim.
Öncelikle External olarak yazdığımızı düşünerek kodları projemize eklemeye başlayalım.
Handle çekmemiz lazım ve projemizin üst taraflarına handle tanımlıyoruz.
C++:
HANDLE KO_HANDLE;
Şimdi Fonksiyonlarımızı (Method) ekleyelim.
Base Address Çekerken kullandığımız fonksiyon

C++:
static DWORD dwGetModuleBaseAddress(DWORD dwProcessIdentifier, TCHAR *lpszModuleName)
{
    HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwProcessIdentifier);
    DWORD dwModuleBaseAddress = 0;
    if(hSnapshot != INVALID_HANDLE_VALUE)
    {
        MODULEENTRY32 ModuleEntry32 = {0};
        ModuleEntry32.dwSize = sizeof(MODULEENTRY32);
        if(Module32First(hSnapshot, &ModuleEntry32))
        {
            do
            {
                if(_tcscmp(ModuleEntry32.szModule, lpszModuleName) == 0)
                {
                    dwModuleBaseAddress = (DWORD)ModuleEntry32.modBaseAddr;
                    break;
                }
            }
            while(Module32Next(hSnapshot, &ModuleEntry32));
        }
        CloseHandle(hSnapshot);
    }
    return dwModuleBaseAddress;
}
Şimdide Byte patch için yazdığımız fonksiyon
C++:
void irisbypass(DWORD ptr)
{
    DWORD bytes;
    BYTE examplebytes[5] = {0x90,0x90,0x90,0x90,0x90};
    WriteProcessMemory(KO_HANDLE, (void*)ptr, &examplebytes, sizeof(examplebytes), &bytes);
}

Şimdi kaldı en kolay yeri bypass ı nerede yapacağınızı belirliyorsunuz artık butondaysa butonun içersine girip şu komutu yapıştırıyorsunuz.

C++:
KO_HANDLE=OpenProcess(PROCESS_ALL_ACCESS,false,pidnum); //Not Pidnum yazan yere metin2 nin pid adresini yazacaksınız bunu çekme komutları google da var zaten pid çekme yazarsanız çıkar.
DWORD BaseAddress = dwGetModuleBaseAddress(pidnum,(TCHAR *)"metin2client.exe"); //Not : burada da aynı şekilde pid yazan yere metin2 nin pid adresini yazacaksınız.
irisbypass((DWORD)((DWORD)(BaseAddress +0x057146))) ;

Evet artık irispanel Anti-Cheat pencere taraması yapamayacak. Size bir tüyo vereyim üzerindeki ve altındaki callar da birer koruma fonksiyonu çağırıyor tam listeyide buraya bırakıyorum :)


Kod:
 irisbypass((DWORD)((DWORD)(BaseAddress +0x0570D6))) ;//tarama  1
        irisbypass((DWORD)((DWORD)(BaseAddress +0x0570E6))) ;//tarama  2
        irisbypass((DWORD)((DWORD)(BaseAddress +0x0570F6))) ;//tarama  3
        irisbypass((DWORD)((DWORD)(BaseAddress +0x057106))) ;//tarama  4
        irisbypass((DWORD)((DWORD)(BaseAddress +0x57110))) ;//tarama  5
        irisbypass((DWORD)((DWORD)(BaseAddress +0x57126))) ;//tarama  6
        irisbypass((DWORD)((DWORD)(BaseAddress +0x057136))) ;//tarama  7
        irisbypass((DWORD)((DWORD)(BaseAddress +0x057146))) ;//tarama  8
        irisbypass((DWORD)((DWORD)(BaseAddress +0x057156))) ;//tarama  9
        irisbypass((DWORD)((DWORD)(BaseAddress +0x057166))) ;//tarama  10
        irisbypass((DWORD)((DWORD)(BaseAddress +0x057176))) ;//tarama  11
        irisbypass((DWORD)((DWORD)(BaseAddress +0x057186))) ;//tarama  12


Direk kernel mode üzerinden read/write yaparsam protectli algılar mı hocam? (metin2 de)
 
CE ile oyuna bağlanmak için acces lazımdır acces olan oyunlarda kullana blirsiniz başarılı
 
Direk kernel mode üzerinden read/write yaparsam protectli algılar mı hocam? (metin2 de)
driver taraması yok zaten bildiğim kadarıyla ama driver a erişmek için bir arayüz programı kullanman gerekiyor onunda handle kapatırsan yakalanmaz
 

  Şuanda konuyu görüntüleyen kullanıcılar


Üst Alt