Actually software developer are the backbone of internets world .Even now, making software is the most important job in the world, and you have solved it, thank you for your hard work, an excellent sharin
glad to see this working i really love youMerhaba 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..