BattlEye, EAC, VAC LSASS.EXE kullanarak bypasslamak !

Słyszę, słyszę letni powiew.
Kurucu
Katılım
20 Haz 2015
Mesajlar
7,666
Çözümler
136
Tepki puanı
20,724
Ödüller
25
10 HİZMET YILI
Merhaba arkadaşlar, yaklaşık beş ay önce yabancı bir forumdan çevirdiğim makaleyi tam olarak bitmemiş olsa dahil sizinle paylaşmıştım. Makale linki : https://memoryhackers.org/konular/hwid-ban-anti-cheat-bypasslama-ve-daha-fazlasi.58068/
Bundan tam beş ay sonra sizlerle bahsi geçen konudaki lsass.exe konuşacağım. Neden bu kadar uzun sürdü diyorsanız normalde paylaşım yapmayacaktım çünkü saatlerimi verip Türkçeye çevirdiğim makale her zamanki gibi başka forum siteleri tarafından çalındı ve kaynak belirtilmedi. Her neyse, bu tür insanların hala aramızda dolaştığından dolayı utanç duyuyor ve yeni yazımıza geçiyorum:

Kaynak: unknowncheats
Yayınlayıcı: sagaantheepic
Çeviren: nader11ndeu

Öncelikle bu cümleden sonra yazacağım her şey bir "translate" ürünüdür. Yani yabancı kaynaktan çevrilmiştir.


Eminim ki böyle bir yazı görmek sizin için kullanışlı olacaktır, her neyse. Herkese dikkatli olması için uyarıyorum:
*Ani cheatlar LSASS'ın potansiyelinin farkındalar ve şuan onu izliyorlar.
*Sağlıklı inject yaptığınızdan emin olmalısınız (injection işleminden sonra hiçbir şekilde yeni thread, yeni handle, extra yüklenmiş modül, yeni oluşturulmuş bellek sayfası, vs olmamalıdır!)
Benim görüşüme göre bu işlemleri yapsanız bile eğer internette bulunan herhangi bir "injector" kullanıyorsanız kesinlikle güvenli değildir. Bundan dolayı her halükarda Anti cheatlar tarafından yakalanacaksınız.
Kullanıcı modu sağlıklı oyun hilesi yazma işlemleri git gide zorlaşıyor, bundan dolayı Process HAcker yada buna benzer uygulamalar kullanarak bypassınızı inceleyiniz. Eğer herhangi bir şekilde bypassını detectliyebiliyorsanız, anti cheatlar da detectleyebiliyordur.

Önemli:
Çok zaman geçtiğini biliyorum, fakat bu işi nasıl yaptığımı paylaşmak istedim. Bu paylaşım sizlere yardımcı olabilir ve işte bu yüzden paylaşıyorum. Bu bilgiler ne yaptığını bilen insanlara yardımcı olamayabilir fakat umuyorum ki yeni başlamış kişilere yardımcı olacaktır.

Uyarılar:
* Sadece windows 7 de denendi.
* Bypassı geliştirebilmeniz için C++ bilmeniz gerekli.
* Az sonra paylaşacağım kodlar çoktan anti cheatlar tarafından detectlenmiş olabilir.
* Ben profesyonel değilim, sadece insanlara yardım etmeye çalışan bir coderim.

Başlangıç olarak, lsass.exe nedir ? : Bu program sizin bilgisayarınızdaki handleleri ve diğer önemli şeyleri depolar. Bu bir windows programı yani Windows 10 tarafından korunuyor olabilir. Bunlar haricinde lsass.exe gerçekten çok önemli bir programdır. Yani: eğer sizin hileniz crash atarsa, windowsu yeniden başlatmanız gerekir.

Peki nereden başlayacağız ve nasıl başlayacağız ? : Benim methodum lsass.exe ye inject atarak lsass.exe içinde depolanan tüm handleleri çekmek ve hile yapacağımız oyunun handlesini filtrelemek. Yani kısaca BattlEye, Eac gibi anti cheatlar oyunun handlesini almamızı engelliyor. Bizde her türlü programın handlesinin depolandığı lsass.exe'den tüm depolanan handleleri çekiyoruz ve istediğimiz oyunun handlesini buluyoruz.

C++:
typedef NTSTATUS(NTAPI* NtQuerySystemInformationFn)(ULONG, PVOID, ULONG, PULONG);
using namespace std;

static HANDLE GetProcessHandle(uint64_t targetProcessId)
{
    auto NtQuerySystemInformation = reinterpret_cast<NtQuerySystemInformationFn>(GetProcAddress(GetModuleHandleA("ntdll.dll"), "NtQuerySystemInformation"));
    NTSTATUS status;
    ULONG handleInfoSize = 0x10000;

    auto handleInfo = reinterpret_cast<PSYSTEM_HANDLE_INFORMATION>(malloc(handleInfoSize));

    while ((status = NtQuerySystemInformation(SystemHandleInformation, handleInfo, handleInfoSize, nullptr)) == STATUS_INFO_LENGTH_MISMATCH)
        handleInfo = reinterpret_cast<PSYSTEM_HANDLE_INFORMATION>(realloc(handleInfo, handleInfoSize *= 2));

    if (!NT_SUCCESS(status))
    {
        throw runtime_error("NtQuerySystemInformation failed!");
    }

    for (auto i = 0; i < handleInfo->HandleCount; i++)
    {
        auto handle = handleInfo->Handles[i];

        const auto process = reinterpret_cast<HANDLE>(handle.Handle);
        if (handle.ProcessId == GetCurrentProcessId() && GetProcessId(process) == targetProcessId)
            return process;
    }

    free(handleInfo);

    return nullptr;
}
std::uint32_t find(const wchar_t* proc)
{
    auto snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    auto pe = PROCESSENTRY32W{ sizeof(PROCESSENTRY32W) };

    if (Process32First(snapshot, &pe)) {
        do {
            if (!_wcsicmp(proc, pe.szExeFile)) {
                CloseHandle(snapshot);
                return pe.th32ProcessID;
            }
        } while (Process32Next(snapshot, &pe));
    }
    CloseHandle(snapshot);
    return 0;
}


Nasıl kullanırım ?
C++:
HANDLE GameHandle = GetProcessHandle(find(L"RainbowSix.exe"));

Unutmayın: bunu lsass.exe ye injectlediğiniz zaman return olarak oyun handlelerini elde edersiniz. Oyununuzun handlesini aldıktan sonra istediğiniz gibi RPM ve WPM işlemlerini gerçekleştirebilir, oyunu hackleyebilirisiniz. RPM / WPM den sonra şimdi ne yapacağız diye sorabilirsiniz.. Doğrusunu isterseniz şu kodları kullanarak bir named pipe oluşturup kendi overlayınız ve lsass.exe arasında data transferini yapabilirsiniz:

Read:
C++:
DWORD Read(void*)
{
    HANDLE hPipe;
    char buffer[1024];
    DWORD dwRead;
    while (1)
    {

        hPipe = CreateNamedPipe(TEXT("\\\\.\\pipe\\Pipe"),
            PIPE_ACCESS_DUPLEX,
            PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | PIPE_WAIT,   // FILE_FLAG_FIRST_PIPE_INSTANCE is not needed but forces CreateNamedPipe(..) to fail if the pipe already exists...
            1,
            1024 * 16,
            1024 * 16,
            NMPWAIT_USE_DEFAULT_WAIT,
            NULL);
        while (hPipe != INVALID_HANDLE_VALUE)
        {
            while (1)
            {
                if (ConnectNamedPipe(hPipe, NULL) != FALSE)   // wait for someone to connect to the pipe
                {
                    ReadFile(hPipe, buffer, sizeof(buffer), &dwRead, NULL);
                                        cout << buffer << endl;
                }
                DisconnectNamedPipe(hPipe);
            }
        }
      
    }
}

Write:
C++:
hPipe = CreateFile(TEXT("\\\\.\\pipe\\Pipe"),
                    GENERIC_READ | GENERIC_WRITE,
                    0,
                    NULL,
                    OPEN_EXISTING,
                    0,
                    NULL);
                if (hPipe != INVALID_HANDLE_VALUE)
                {
                    WriteFile(hPipe,
                        Buffer.c_str(),
                        sizeof(Buffer),   // = length of string + terminating '\0' !!!
                        &dwWritten,
                        NULL);


                }
                CloseHandle(hPipe);

Evet, şimdi lasass.exe den aldığınız datayı yazabilir ve overlayınızdan datayı okuyarak playerleri çizebilirsiniz. Bu adımdan sonra kolaylıkla tüm playerleri çizebilir, tüm RPM,WPM işlemlerini lsass.exe içinde yapabilirsiniz. Devam etmek için birkaç not, Manual map inject etmek isterseniz XENOs yada extreme injector kullanabilirsiniz..

Evet, bütün bunlarla birlikte, işte hepsinin çalışmasını sağlamak için yapmanız gereken adımlar:
1- lsass.exe içerisinde depolanmış handleleri çekmek için bir DLL oluşturun.
2- Çektiğiniz handleler arasında istediğiniz oyunun handlesini bulmak için filtreleme yapın.
3- Filtrelenmiş handle ile Read Process Memory / Write Process Memory kullanın
4- Yukarıda verdiğim kod ile Named Pipe oluşturun.
5- Write adlı paylaştığım Named Pipe fonksiyonunu lsass.exe içerisine ekleyin.
6- Read adlı paylaştığım Named pipe fonksiyonunu overlayınıza ekleyin.
7- Okuduğunuz verileri Write yardımı ile lsass.exe ye gönderin.
8- Bir thread oluşturun ve Named Pipe fonksiyonlarını okumak için döngü kullanın (while etc gibi)
9- Elde ettiğiniz bilgilerle istediğiniz gibi ESP nizi çizin.

Bitirmeden önce son bir şey, eğer debug veya farklı bir şey için bir messagebox istiyorsanız işte kodu:
C++:
VOID MessageBox_(LPCSTR Text, LPCSTR Title)
{
    DWORD response;

    WTSSendMessageA(WTS_CURRENT_SERVER_HANDLE,       // hServer
        WTSGetActiveConsoleSessionId(),  // ID for the console seesion (1)
        const_cast<LPSTR>(Title),        // MessageBox Caption
        strlen(Title),                   //
        const_cast<LPSTR>(Text),         // MessageBox Text
        strlen(Text),                    //
        MB_OK,                           // Buttons, etc
        10,                              // Timeout period in seconds
        &response,                       // What button was clicked (if bWait == TRUE)
        FALSE);                          // bWait - Blocks until user click
}

Normal Message Box çalışmayacaktır, kişisel mesajları görüntülemek için yukarıdaki messagebox'u kullanın...

Split fonksiyonu:
C++:
void split(const string& s, char c,
    vector<string>& v)
{
    string::size_type i = 0;
    string::size_type j = s.find(c);

    while (j != string::npos) {
        v.push_back(s.substr(i, j - i));
        i = ++j;
        j = s.find(c, j);

        if (j == string::npos)
            v.push_back(s.substr(i, s.length()));
    }
}

Split nasıl kullanılır ?

C++:
vector<string> v;
split(buffer, '|', v);
for (int i = 0; i < v.size(); ++i)
{
    cout << buffer << endl;
}

Başka notlar: Öncelikle bu adımlar external uygulamalarınız için geçerliydi. Eğer daha iyi bir yol olan internali kullanacaksanız herhangi bir şekilde named pipe ve diğerlerini oluşturmanıza gerek yok. Sadece elde ettiğiniz doğru oyunun handlesine injecti gerçekleştirin. Unutmadan bir not, battleye oyunları için internal inject kolay olmayacak. Inject işlemini gerçekleştirebilmeniz için uygun bir methoda ihtiyacınız olcak.

Eğer lsass.exe CPU nuzun %100 ünü kullanıyorsa bazı loopların içerisine 50 ms lik sleep ekleyin. Fakat gidipte 10 threadın içine falan eklemeyin. Yoksa bu durum bilgisayarınızın laglanmasına yol açar. LSASS.exe için saçma sapan kodlar denemeye kalkmayın, yoksa bilgisayarınız restart atacaktır.

Bazı detect yöntemleri:
Named Pipe LSASS.EXE içerisinde iz bırakıyor, isterseniz datayı transfer etmek için kolaylıkla başka yol bulabilirsiniz.

Teşekkür ederim! Lütfen kaba olmayın. Eğer bunun kullanışsız olduğunu düşünüyorsanız, o zaman hayatınıza devam edin.
~ Happy Hacking xD


** Makalemiz burada sona ermiştir. Ekleyeceğim bir kaç şey var:
Öncelikle bu method çoktan fix yedi, yani eğer direk yukarıdaki kodları kopyala yapıştır yaparak oyunun handlesini çekip tavşan gibi battleye yada eac üzerinden zıplamak istiyorsanız önce soğuk bir su için. Çünki öyle bir şey yok! Bu makaleyi neden çevirdin diye soracaksanız, kısa ve öz cevap olarak makaleyi paylaşan neden paylaştıysa işte ben de o yüzden çevirdim: Yardımcı olmak için.

İyi forumlar..
 
İyi olmak kolaydır, zor olan adil olmaktır.
Griffin Premium
Katılım
4 Şub 2018
Mesajlar
757
Çözümler
234
Tepki puanı
464
Ödüller
8
Yaş
34
8 HİZMET YILI
yararlı paylaşım eline sağlık
 
Donator
Katılım
4 Şub 2016
Mesajlar
870
Çözümler
4
Tepki puanı
637
Ödüller
15
Sosyal
10 HİZMET YILI
Hocam elinize kolunuza sağlık çok güzel çeviri olmuş handleleri process hackerden close edebiliriz sanırım akşam eve gidince aynı korumaya sahip bi oyun indirip bu methodla bir şeyler yapmaya çalışacağım başarılı olursam bir konu açabilirim bu makale sayesinde aklıma daha çok method geldi

Bu konuda bir kaç şey daha eklemek istiyorum bildiğiniz gibi pubg emulatör versiyonunda çoğu hileler paralı key istiyorlar bunuda handles kısmı sayesinde çok kolay şekilde key vermeden giriş yapmanız mümkün oluyor kısaca burada söylemek istediğim handlesin ne kadar önemli olduğunu bir uygulama açarak handles kısmına bakarsanız uygulamanın nereleri açtığını hangi uygulamalara eriştiğini çok rahat bir şekilde görebilirsiniz
 
Son düzenleme:
Onaylı Üye
Katılım
8 Şub 2019
Mesajlar
122
Çözümler
1
Tepki puanı
13
Yaş
39
7 HİZMET YILI
:rem: emek var iki türkü ana makaleci yede teşekkürler.
 
Onaylı Üye
Katılım
11 Ocak 2019
Mesajlar
73
Tepki puanı
11
Ödüller
6
7 HİZMET YILI
Konu güzel fakat C# tan C++ öğrenmeye iten şeylerden biride bu tür şeyler konuda uzman hale gelmek için C++ öğrenmek gerek
 
Üye
Katılım
10 Şub 2019
Mesajlar
9
Tepki puanı
1
Yaş
25
7 HİZMET YILI
İnsanların uzun bir süre fix yemeyecek bir eac bypass'ı public bulmayacağını bilmeli. Yararlı bir konu teşekkürler.
 
AMATÖR TASARIMCI
Süper Üye
Katılım
8 Şub 2019
Mesajlar
817
Tepki puanı
137
Ödüller
6
7 HİZMET YILI
eline sağlık.
 
Onaylı Üye
Katılım
3 Mar 2019
Mesajlar
51
Çözümler
1
Tepki puanı
3
Ödüller
3
Yaş
27
7 HİZMET YILI
sırf bunları anlamak için c++ öğreniyorum xd
 
Bir Gün Ölmek İçin Her Gün Yaşıyoruz
Süper Üye
Katılım
6 Nis 2017
Mesajlar
748
Çözümler
9
Tepki puanı
90
Ödüller
9
9 HİZMET YILI
adamın dibisi emegine saglık
 
Üst