Hexist
Gold Üye
- Katılım
- 9 Kas 2024
- Mesajlar
- 174
- Beğeniler
- 80
selamlar arkadaşlar bildiğiniz üzere kernel üzerinde çalışan arkadaşlara forumda anlatımlı konular paylaşıyorum, Konuların takipçisi arkadaşlar yorumda belirtsinler ki konulara devam ediyim konuları katılım az olduğu için bırakmayı düşünüyorum. kernelin ne olduğunu , çalışma mantığını , hilelerin çalışma şeklini anlatmaya çalışıyorum . Öncelikle konuya başlamadan önce her konuda olduğu gibi yine belirtmek isterim ; kardeşlerim abilerim ben bu konuları yaklaşık 30 dakikada hazırlıyorum fakat altında 12-13 seneyi geçen bir tecrübe yatıyor bundan mütevellit lütfen "şurası yanlış olmuş" "yanlız o kod öyle yazılmaz kardeşim" , yok burası yanlış gibi yorumu olanlar lütfen kendilerine saklasınlar , insanız elbet hatamız olabilir konuları açmadan önce gözden geçirmeye vaktim olmuyor genelde lütfen saçma sapan yorumlardan uzak duralım .
KISALTMA OLARAK KULLANILACAKLAR : (ANTI CHEAT : AC) - BYPASS : (BP)
Konuya geçelim başlıkla belirttiğimiz üzere anti cheatleri ele alacağız bu konuda genel olarak cevap bulacağımız sorular "Anti - Cheat nedir ? " , "Anti Cheat ( AC) nasıl çalışır" , "AC nasıl aşılır" , "Bypass nedir ? ".
Öncelikle tersine mühendisliğin altın kurallarından bahsetmek isterim bu konuyu çözmem benim yıllarımı aldı yapay zekanın olmadığı karanlık çağlardan bahsediyorum abilerimizden ne öğrenirsek kardır dediğimiz çağlardan, yıllar öncesinde işinin üstadı bir abim bir sistemi geçmek için önce sistemi tanımalısın demişti çok sallamamıştım o zamanlar fakat bu işte uzmanlaştıkça ne demeye çalıştığını anladım , bir sistemi geçmek için sistemin nasıl çalıştığını anlamanız gerekiyor yapmanız gereken ilk işlem AC'nin kodlarını incelemek ne yaptığını anlamaya çalışmak. Bir önceki konumuzda valorant wall hack yapımından bahsetmiştik buradan örnek verelim; şayet valorantın nasıl kodlandığını bilmeseydik valorantta hile yapamazdık bunun mantığı bu kadar düz , işte tecrübe ve kodlama bilgisi burada devreye giriyor . Başka bir oyun üzerinden hemen örnek vererek bu konuyu aydınlatalım ;
KnightOnline isimli oyunda karakterimizin istediğimiz koordinata gittiği bir fonksiyon yazmıştım bu fonksiyon üzerinden örnek verebiliriz şimdi sistemi çözmek için sistemi anlamak neden bu kadar önemli onu göreceğiz..
Hatta bu konuyu açarken kendi hatamı farkettim büyük ihtimalle kodu test etmedim nasılsa çalışıyor diye bu egoya siz düşmeyin .d float y1 = read_memory<float>(ko_ptr_chr + KO_OFF_GoY); x ve y koordinatını oyunun belleğinden okuduğum kısım fonksiyonun başında olmalı , fonksiyonun işleyişi açısından önemlidir sorun yaratabilir.
Devam edelim , yukarıda ki kodlardan ne anlamalıyız hemen bakalım oyun içerisinde karakterimizin bilgilerinin tutulduğu bellek adreslerini bulup bunu programımıza tanıtmışız akabinde bu adresleri kullanarak karakter işlemlerini gerçekleştirmişiz hemen görüntüye aktararak anlatayım ;
//mov eax, [KnightOnLine.exe + B58F70] bu koda denk geliyor oyunun belleğini incelediğim zaman bu adresten sonra karakter bilgilerinin sıralandığını gördüm bu tüm oyunlar için geçerlidir. Bu adresi bulabilmemin sebebi oyunun kodlanışını ve oyunun işleyişi bilmem oyunun ASM kodlarını inceleyerek ne yaptığını anlayabilmem ben şayet oyunun işleyişini ASM kodlarına bakarak anlayamasaydım yukarıda karakteri koordinata yürüten bir fonksiyon yazamazdım hemen devam edelim kodları incelemeye,
kodları yaklaşık 6 ay önce yazdığım için şu an adresleri hatırlamıyorum fakat for move olarak not düştüğüm bellek adreslerlerinden ilki 0x10C0 Adresi karakter harekete geçtiği anda değişiyordu karakter hareket halindeyken 0x10C0 adresi :256 oluyor bellekten incelediğim zaman eş zamanlı şekilde 0x444 adresi de 0 iken 1 oluyor buradan anlıyoruz ki karakteri harekete geçirince değişen öncelikle iki adres var 0-1 olarak değişen adres karakter hareketli mi hareketsiz mi kayıt ediyor hareketli ise 0x10C0 adresi 256 olarak güncelleniyor fakat x ve y kordinatını belirlemediğimiz sürece karakterimiz hareket etmez hemen bellekten x ve y koordinatının tutulduğu adresi buluyoruz ;
0x10CC olarak kaydetmişim 0x10D4 olarak kaydetmişim, bu adrese float cinsinden veri yazıyoruz bunu bir önceki konumda söylemiştim koordinat adresleri her zaman float olarak bellekte tutulur diye .
oyunun işleyişini bildiğim için karakterim belirlediğim koordinatlara otomatik olarak hareket ediyor birde video çekmiştim onuda paylaşıyım programın nasıl çalıştığını görün :
.
Öncelikle bir sistemi tanımanız tanıdıktan sonra sistemi tersine cevirip müdehale etmeniz gerekiyor sanırım yukarıda görsel ve videolu olarak gösterdiğim detaylı örneklerle bu konuya değinmiş oldum.
KISALTMA OLARAK KULLANILACAKLAR : (ANTI CHEAT : AC) - BYPASS : (BP)
Konuya geçelim başlıkla belirttiğimiz üzere anti cheatleri ele alacağız bu konuda genel olarak cevap bulacağımız sorular "Anti - Cheat nedir ? " , "Anti Cheat ( AC) nasıl çalışır" , "AC nasıl aşılır" , "Bypass nedir ? ".
Öncelikle tersine mühendisliğin altın kurallarından bahsetmek isterim bu konuyu çözmem benim yıllarımı aldı yapay zekanın olmadığı karanlık çağlardan bahsediyorum abilerimizden ne öğrenirsek kardır dediğimiz çağlardan, yıllar öncesinde işinin üstadı bir abim bir sistemi geçmek için önce sistemi tanımalısın demişti çok sallamamıştım o zamanlar fakat bu işte uzmanlaştıkça ne demeye çalıştığını anladım , bir sistemi geçmek için sistemin nasıl çalıştığını anlamanız gerekiyor yapmanız gereken ilk işlem AC'nin kodlarını incelemek ne yaptığını anlamaya çalışmak. Bir önceki konumuzda valorant wall hack yapımından bahsetmiştik buradan örnek verelim; şayet valorantın nasıl kodlandığını bilmeseydik valorantta hile yapamazdık bunun mantığı bu kadar düz , işte tecrübe ve kodlama bilgisi burada devreye giriyor . Başka bir oyun üzerinden hemen örnek vererek bu konuyu aydınlatalım ;
C++:
void RunMove(int ko_ptr_chr, float x, float y) {
//mov eax, [KnightOnLine.exe + B58F70]
//chr_base 0x400000
//ko_ptr_chr :: 0x400000 + 0xB58F70
write_memory<int>(ko_ptr_chr + 0x10C0, 1); // for move
write_memory<float>(ko_ptr_chr + 0x10CC, x); // y
write_memory<float>(ko_ptr_chr + 0x10D4, y); // x
write_memory<int>(ko_ptr_chr + 0x444, 2); // for move
float x1 = read_memory<float>(ko_ptr_chr + KO_OFF_GoX); //sanırım bu kısımda hata yapmışım pointerların okumaları write memory kodlarının önüne yazılmalı yoksa adreslere erişemez
float y1 = read_memory<float>(ko_ptr_chr + KO_OFF_GoY);
std::cout << "Gidilecek Koordinat: " << x << "," << y << std::endl;
}
KnightOnline isimli oyunda karakterimizin istediğimiz koordinata gittiği bir fonksiyon yazmıştım bu fonksiyon üzerinden örnek verebiliriz şimdi sistemi çözmek için sistemi anlamak neden bu kadar önemli onu göreceğiz..
Hatta bu konuyu açarken kendi hatamı farkettim büyük ihtimalle kodu test etmedim nasılsa çalışıyor diye bu egoya siz düşmeyin .d float y1 = read_memory<float>(ko_ptr_chr + KO_OFF_GoY); x ve y koordinatını oyunun belleğinden okuduğum kısım fonksiyonun başında olmalı , fonksiyonun işleyişi açısından önemlidir sorun yaratabilir.
Devam edelim , yukarıda ki kodlardan ne anlamalıyız hemen bakalım oyun içerisinde karakterimizin bilgilerinin tutulduğu bellek adreslerini bulup bunu programımıza tanıtmışız akabinde bu adresleri kullanarak karakter işlemlerini gerçekleştirmişiz hemen görüntüye aktararak anlatayım ;
Linkleri görebilmek için kayıt olmanız gerekmektedir
Yukarıda hazırladığım görselde bir oyunun bellek adresinde karakterimizle ilgili tutulan verilerin düzenini görüyorsunuz bu tüm oyunlarda böyledir tüm oyunlarda aynı şekilde yazar çünkü oyunun kodlaması böyledir aksi halde kodlanamaz oyunun kodlarını incelediğiniz zaman Karakter bilgilerinin başlagıcının altında karakter bilgilerinin depolanacağı adresleri yazdıklarını görürsünüz . Karakter bilgilerinin başlangıç adresi olarak görselde belirttiğim kısım ;//mov eax, [KnightOnLine.exe + B58F70] bu koda denk geliyor oyunun belleğini incelediğim zaman bu adresten sonra karakter bilgilerinin sıralandığını gördüm bu tüm oyunlar için geçerlidir. Bu adresi bulabilmemin sebebi oyunun kodlanışını ve oyunun işleyişi bilmem oyunun ASM kodlarını inceleyerek ne yaptığını anlayabilmem ben şayet oyunun işleyişini ASM kodlarına bakarak anlayamasaydım yukarıda karakteri koordinata yürüten bir fonksiyon yazamazdım hemen devam edelim kodları incelemeye,
C++:
write_memory<int>(ko_ptr_chr + 0x10C0, 1); // for move
write_memory<float>(ko_ptr_chr + 0x10CC, x); // y
write_memory<float>(ko_ptr_chr + 0x10D4, y); // x
write_memory<int>(ko_ptr_chr + 0x444, 2); // for move
kodları yaklaşık 6 ay önce yazdığım için şu an adresleri hatırlamıyorum fakat for move olarak not düştüğüm bellek adreslerlerinden ilki 0x10C0 Adresi karakter harekete geçtiği anda değişiyordu karakter hareket halindeyken 0x10C0 adresi :256 oluyor bellekten incelediğim zaman eş zamanlı şekilde 0x444 adresi de 0 iken 1 oluyor buradan anlıyoruz ki karakteri harekete geçirince değişen öncelikle iki adres var 0-1 olarak değişen adres karakter hareketli mi hareketsiz mi kayıt ediyor hareketli ise 0x10C0 adresi 256 olarak güncelleniyor fakat x ve y kordinatını belirlemediğimiz sürece karakterimiz hareket etmez hemen bellekten x ve y koordinatının tutulduğu adresi buluyoruz ;
0x10CC olarak kaydetmişim 0x10D4 olarak kaydetmişim, bu adrese float cinsinden veri yazıyoruz bunu bir önceki konumda söylemiştim koordinat adresleri her zaman float olarak bellekte tutulur diye .
oyunun işleyişini bildiğim için karakterim belirlediğim koordinatlara otomatik olarak hareket ediyor birde video çekmiştim onuda paylaşıyım programın nasıl çalıştığını görün :
VİDEO 1
.
Öncelikle bir sistemi tanımanız tanıdıktan sonra sistemi tersine cevirip müdehale etmeniz gerekiyor sanırım yukarıda görsel ve videolu olarak gösterdiğim detaylı örneklerle bu konuya değinmiş oldum.
Anti Cheatler de de durum aynı öncelikle forumda byPass'ın tam olarak anlamını bilen birine ben denk gelmedim bypass'ın ne anlama geldiğini kimse bilmiyor bu bilgiyi düzelteceğiz bunun ne olduğunu ne anlama geldiğini öğreteceğiz sonra bypass nedir anti cheat nasıl çalışır gibi konulara değineceğiz fakat bu günlük bu kadar konuyu açarken tamamlamayı düşünüyordum fakat burada bırakacağım konuyu yazmaya yarın devam edeceğim iyi forumlar..
Konu hakkında yorumu olan arkadaşlarla yorumlarda buluşalım lütfen bazen bu konuları açarken çok yanlız hissediyorum kendimi acaba boşa mı yazıyoruz o kadar yazıyı diyorum takip ediyorsanız yada merakınız varsa belirtin ki bende boşa yazmadığımı biliyim.
Son düzenleme: