- Yasaklandı
- #1
Banlı Üye
Bu yazımda sizlere X-Trap için hepimizin kurtuluşu, ilacı, hızır acili olan Bypass dll'inin kodlanma ma
ntığından bahsedeceğim.
İnternette bunu anlatan bir yazı, kaynak vs. bulmak şuan imkansız. Ben de bu işe başlamak veya en azından mantığını öğrenmek isteyen arkadaşlarım için üreticilerle görüştüm, birsürü şey araştırdım ve hepsini kısaca bu yazımda birleştirdim.
İsterseniz yavaş yavaş konuya doğru bir giriş yapalım.
•
•
•
•
•
Öncelikle bu iş için bize gereken şeylerden biraz bahsedelim. Benim anlatmak üzere olduğum yöntem bu işin en kullanışlı ve basit yöntemlerinden biridir arkadaşlar. Fakat x64 işletim sistemleri için çalışmaktadır. Yani bu yazıyı referans alarak bir Bypass kodlamak istiyorsanız, işe Windows 7 x64 işletim sistemini kullanmakla başlamalısınız.
Daha sonra bize gereken iki program var, linkleriyle birlikte vereceğim:
-
-
-
Bağlantıları görmek için lütfen
Giriş Yap
-
Bağlantıları görmek için lütfen
Giriş Yap
Programlarımızı kurduktan sonra işe başlamak için önümüzde bir engel kalmıyor arkadaşlar. İsterseniz şimdi neler yapmamız gerektiğine geçelim.
Öncelikle x64 sistemlerde XTrap Bypass işlemi nasıl yapılır onu öğrenelim. İki adım vardır arkadaşlar. Birinci adım XTrap'ın açık olan işlemleri yakalamasını engeller. Örneğin biz Cheat Engine programını oyunumuzla birlikte açtığımızda XTrap bizim Cheat Engine ile oyun üzerinde bir işlem yapmamızı beklemeden oyunu kapatır. Çünkü Cheat Engine açtığınızda niyetinizin ne olduğu az çok bellidir. İkinci adım ise Cheat Engine ile oyunun Memory'sine eriştiğimizde oyunun kapanmasını engeller. Yani ilk işlemi yapıp bıraksaydık Cheat Engine açtığımızda oyun kapanmayacaktı ama Cheat Engine ile oyun üzerinde herhangi bir değişiklik yaptığımızda XTrap oyunu kapatacaktı.
Şimdi bu adımları hayata geçirmek için neler yapmamız gerektiğini öğrenelim.
Sevgili arkadaşlarım 1. adımımızın ismi Process Name Detection Bypass'tır. Bu işlemi yapmamız için x64 bir sistemde yapmamız gereken şey System32'mizin içerisindeki kernel32.dll ve psapi.dll deki bir prosedürde değişiklik yapmaktır. Peki neden ? Çünkü XTrap açık olan işlemlerin isimleri vs. için kernel32.dll deki "K32EnumProcesses" prosedürüne ve psapi.dll'deki "EnumProcesses" prosedürüne başvurur. K32EnumProcesses'in açınımı Kernel32 Enumerating Processes'tir. psapi.dll Process Status Helper olarak da geçer. Bunu bildiğimize göre yapmamız gereken tek şey kernel32.dll'i açıp K32EnumProcesses'a ve psapi.dll'i açıp EnumProcesses'a bir jump attırmaktır. Burada işin içine kodlama giriyor arkadaşlar. Ben bypass'ların en güzel C++'ta kodlanabileceğine inanırım. Bunun için size kodları C++ şeklinde vereceğim. Ama AutoIT kullanan arkadaşlarımı da unutmayacağım tabi. Şimdi kodlarımıza bir bakalım.
C++ için :
Arkadaşlar kodlamaları detaylı olarak anlatacağım ayrıca bir yazım daha olacak. O yüzden C++'ta yeni olan arkadaşlarım sakın korkmasın, bir dahaki yazım için beklesinler. Şimdilik sadece Main.h'mizde olması gereken bir parçayı paylaşıp kodlamadan anlayan arkadaşlarımın ne demek istediğimi daha iyi anlamalarını sağlamak istiyorum.
Arkadaşlarım BYPASS isimli bir class tanımladıktan sonra bypass'ımızın ikinci admı için ProcessDetection isminde bir int tanımlıyoruz. İçini de şu şekilde dolduruyoruz :
Kod:
int BYPASS::ProcessDetection()
{
DWORD K32EnumAddr = (DWORD)GetProcAddress(LoadLibraryA("Kernel32.dll") ,"K32EnumProcesses");
DWORD EnumAddr = (DWORD)GetProcAddress(LoadLibraryA("Psapi.dll"),"EnumProcesses");
DWORD old;
VirtualProtect((LPVOID)K32EnumAddr,sizeof(K32EnumAddr),PAGE_EXECUTE_READWRITE,&old);
VirtualProtect((LPVOID)EnumAddr,sizeof(EnumAddr),PAGE_EXECUTE_READWRITE,&old);
memcpy((LPVOID)K32EnumAddr,(LPVOID)"\xC2\x0C\x00", 3);
memcpy((LPVOID)EnumAddr,(LPVOID)"\xC2\x0C\x00",3);
return 0;
}
AutoIT için:
Sevgili dostlarım AutoIT kodlarını bulduğum kaynak farklı bir kaynak o yüzden 3 Byte'lı çarpma işlemi ile değil de direkt olarak farklı bir adrese yönlendirme şeklinde çalışıyor. Ama bu da sabit merak etmeyin.
Öncelikle $moduleKernel32 değişkenine kernel32.dll imizi atıyoruz.
Daha sonra $adressK32EnumProcesses değişkenimize $moduleKernel değişkeninden faydalanarak K32EnumProcesses'in adress'ini çekiyoruz.
Kodları şöyledir :
Kod:
$moduleKernel32 = DllCall(DllOpen("Kernel32.dll"), "ptr", "LoadLibrary", "str", "Kernel32.dll")
$addressK32EnumProcesses = DllCall(DllOpen("Kernel32.dll"), "ptr", "GetProcAddress", "ptr", $moduleKernel32[0], "str", "K32EnumProcesses")
Kod:
$P_Open = OpenProcess(ProcessExists("TwelveSky2.exe"))
Daha sonra ise son işlemimizi yapıp ProcessNameDetectionBypass işlemimizi tamamlıyoruz :
WriteProcessMemory($P_Open, $addressK32EnumProcesses[0], "dword", 0x90000CC2)
Sevgili arkadaşlarım 1. işlemimiz bunlardan ibaret. Yeterince uzun bir yazı olduğu için ikinci işlemi ikinci bir yazımda ilerleyen günlerde anlatacağım. Daha sonra ise baştan sona XTrapBypass.dll kodladığımız bir anlatım yapıp bu seriyi bitirmeyi planlıyorum inşallah.
Güzel bilgiler bulduğunuzu umuyorum. Sorularınızı, sorunlarınızı, isteklerinizi, şikayetlerinizi ve en önemlisi teşekkürlerinizi yorumlarınıza yazmaktan lütfen çekinmeyin.