Hexist
Gold Üye
- Katılım
- 9 Kas 2024
- Mesajlar
- 176
- Beğeniler
- 80
Dc yolladım , forumda bu konu hakkında bilgili kimse yok ama şöyle bi 15 dk konuları gezin herkes 35 yıllık yazılımcı gibi atıyor tutuyor asıyor kesiyor .dkankam dc var mı
Dc yolladım , forumda bu konu hakkında bilgili kimse yok ama şöyle bi 15 dk konuları gezin herkes 35 yıllık yazılımcı gibi atıyor tutuyor asıyor kesiyor .dkankam dc var mı
hocam güzel konular paylaşıyorsunuz, bilgilerinizden daha fazla yararlanmak isterimHerkese selamlar iyi forumlar , son zamanlarda MMORPG oyunlarına merak saldım ve bazılarında hile & bot yazılımları geliştirmeye başladım ,oyunlar da ki hemen hemen tüm kontroller server taraflı korunuyor örneğin karakterin parası canı atağı aklınıza gelebilecek her türlü veriyi server iletiyor tabi ki olması gerektiği gibi . Çoğu işlem de paket alışverişi ile yapılıyor , örneğin bir moba saldırı , pot basma , mob seçme gibi temel MMORPG işlemleri client tarafında PTR_PACKET ve SND_FUNCTION olarak tanımladığım iki adet bellek adresi var PTR_PACKET gönderilecek paketi alıyor saklıyor ve SND paketi ile birlikte sunucuya iletiyor , basitçe bir pointer gönderilecek paketi temsil ediyor diğer bir pointer paketin gönderilmesini sağlıyor , bazı oyunlar send fonksiyonuna değişik kontroller koymuşlar sanırım bot yapımı engellemek ve illegal paket alışverişini gözlemlemek için .
C++:void send(BYTE* pBuf,int len) { __asm{ MOV ECX,PTR_PACKET // Paket pointerı MOV ECX,DWORD PTR DS:[ECX] PUSH len // paket uzunluğu PUSH pBuf // paket boyutu MOV EAX,SND_FUNCTION // send fonksiyonu CALL EAX } }
yukarıda paket iletişimi için hazırladığım bir send fonksiyonu mevcut kabaca bahsetmek gerekirse , dikkat edilmesi gereken hususlar ; paket ve send pointerı doğruluğu , paket uzunluğu tanımlaması , paket boyutu tanımlaması . Reserve eng. kullanarak illegal paket alışverişi yapacağımız için sunucuya istediğimiz paketleri iletebilmenin tek yolu sunucunun paketleri kabul ettiği şekilde göndermek . yaptığım incelemelerde sunucunun dikkat ettiği şeyin paket uzunluğu ve paket boyutu olduğunu farkettim . Örneğin basit bir base atma paketi 4800 olarak belirlenmiş bu paketi yukarıda yazdığımız fonksiyon 0x48, 00 olarak yollayacaktır ki paket sunucu tarafında doğru açılsın ve işleme geçirilsin. Bu konuyu açmamda ki sebep biraz beyin fırtınası yapıp ufku genişletme çabası . Lütfen konu hakkında bilgi sahibi olan arkadaşlar konuya fikirlerini yazsınlar her yorum benim için kıymetli sizin önemsiz gördüğünüz bir detay belki de çok farklı bir şeyi farketmemi sağlayacak. AYNI ZAMANDA RİCA EDİYORUM , ZERRE BİLGİSİ OLMAYAN ARKADAŞLAR BİLGİLİ GÖZÜKMEK İÇİN APTAL APTAL FİKİRLERİNİ BELİRTMEYE ÇALIŞMASINLAR FENA BOZARIM.
estağfurullah hocam teşekkür ederim.hocam güzel konular paylaşıyorsunuz, bilgilerinizden daha fazla yararlanmak isterim
gördüm ben sorun yok atıyorum.kanka dc paylasabilir misin ozelden ##edit,
mesajimi niye siliyonuz haci
Hocam bu send fonksiyonu 32bit clientler 24xx versionlarda çalışan bir paket send fonksiyonuydu.Herkese selamlar iyi forumlar , son zamanlarda MMORPG oyunlarına merak saldım ve bazılarında hile & bot yazılımları geliştirmeye başladım ,oyunlar da ki hemen hemen tüm kontroller server taraflı korunuyor örneğin karakterin parası canı atağı aklınıza gelebilecek her türlü veriyi server iletiyor tabi ki olması gerektiği gibi . Çoğu işlem de paket alışverişi ile yapılıyor , örneğin bir moba saldırı , pot basma , mob seçme gibi temel MMORPG işlemleri client tarafında PTR_PACKET ve SND_FUNCTION olarak tanımladığım iki adet bellek adresi var PTR_PACKET gönderilecek paketi alıyor saklıyor ve SND paketi ile birlikte sunucuya iletiyor , basitçe bir pointer gönderilecek paketi temsil ediyor diğer bir pointer paketin gönderilmesini sağlıyor , bazı oyunlar send fonksiyonuna değişik kontroller koymuşlar sanırım bot yapımı engellemek ve illegal paket alışverişini gözlemlemek için .
C++:void send(BYTE* pBuf,int len) { __asm{ MOV ECX,PTR_PACKET // Paket pointerı MOV ECX,DWORD PTR DS:[ECX] PUSH len // paket uzunluğu PUSH pBuf // paket boyutu MOV EAX,SND_FUNCTION // send fonksiyonu CALL EAX } }
yukarıda paket iletişimi için hazırladığım bir send fonksiyonu mevcut kabaca bahsetmek gerekirse , dikkat edilmesi gereken hususlar ; paket ve send pointerı doğruluğu , paket uzunluğu tanımlaması , paket boyutu tanımlaması . Reserve eng. kullanarak illegal paket alışverişi yapacağımız için sunucuya istediğimiz paketleri iletebilmenin tek yolu sunucunun paketleri kabul ettiği şekilde göndermek . yaptığım incelemelerde sunucunun dikkat ettiği şeyin paket uzunluğu ve paket boyutu olduğunu farkettim . Örneğin basit bir base atma paketi 4800 olarak belirlenmiş bu paketi yukarıda yazdığımız fonksiyon 0x48, 00 olarak yollayacaktır ki paket sunucu tarafında doğru açılsın ve işleme geçirilsin. Bu konuyu açmamda ki sebep biraz beyin fırtınası yapıp ufku genişletme çabası . Lütfen konu hakkında bilgi sahibi olan arkadaşlar konuya fikirlerini yazsınlar her yorum benim için kıymetli sizin önemsiz gördüğünüz bir detay belki de çok farklı bir şeyi farketmemi sağlayacak. AYNI ZAMANDA RİCA EDİYORUM , ZERRE BİLGİSİ OLMAYAN ARKADAŞLAR BİLGİLİ GÖZÜKMEK İÇİN APTAL APTAL FİKİRLERİNİ BELİRTMEYE ÇALIŞMASINLAR FENA BOZARIM.
üst satır alt satır olayını kullanmayı pek sevmiyorum ben hocam biraz ilkel kalıyor artık yani 10 yıllık geçmişi olan bir yöntem artık çalışmıyor herkes kendi clientine geçiş yaptı . 64 bit clientlerde kendilerince çok fazla sorun çıkarmaya başladılar , ben daha önce hiç select serverda aramadım hep pattern ile buluyordum ama manuel aramaya karar verdim çok mantıklı bir bakış açısı teşekkür ederim yeni bir fikir edindim bu gece servere login işlemlerinin yapıldığı bellek bölgesinde aramalar yapacağım tek tek elle inceleyeceğim. İsterseniz bittikten sonra da oto pointer projesini paylaşabilirim sizinle özelden.Hocam bu send fonksiyonu 32bit clientler 24xx versionlarda çalışan bir paket send fonksiyonuydu.
ptr_paket i bulmak için C.E yi oyuna bağlayıp "Select server" bulup onun yaklaşık 9 satır üstündeki pointer olarak buluyorduk. Snd_fnc ise aynı fonksiyonun yaklaşık 4 satır üzerinden buluyorduk. ama bu 32bit 24xx server için geçerli idi şidmi serverların çoğu. yani en azından büyük serverların çoğu 64bit cliente geçicne bu fonksiyonda artık çalışmaz oldu.
Yeni 64bit serverlarda oyuna dışardan paket gönderebilen insan sayısı pek azdır. Zaten bunu yapanlarda paylaşım yapmıyorlar.
Bu söylediklerim Knight için diğer MMORG oyunlar durum nasıl bilmiyorum.
Memnun olurum hocam.üst satır alt satır olayını kullanmayı pek sevmiyorum ben hocam biraz ilkel kalıyor artık yani 10 yıllık geçmişi olan bir yöntem artık çalışmıyor herkes kendi clientine geçiş yaptı . 64 bit clientlerde kendilerince çok fazla sorun çıkarmaya başladılar , ben daha önce hiç select serverda aramadım hep pattern ile buluyordum ama manuel aramaya karar verdim çok mantıklı bir bakış açısı teşekkür ederim yeni bir fikir edindim bu gece servere login işlemlerinin yapıldığı bellek bölgesinde aramalar yapacağım tek tek elle inceleyeceğim. İsterseniz bittikten sonra da oto pointer projesini paylaşabilirim sizinle özelden.
bu hooku ben yazdım bu arada daha doğrusu widex i güncelledim pushdegisiyo falan orjinal srclerde yok şuradan anladım önce snd_fnc +3 verdim sonra güncelleme geldi +4 e çevirdim yukarıda açıklama satırına almayı unutmuşummbotu inceledim fakat biraz çağ dışı ve basit kalıyor , silkroad'ın kullandığı anti cheatlerde mbota zaten izin veriliyor o yüzden send fonksiyonunda hiç bir değişikliğe gidilmeden doğrudan veri akışı sağlanıyor , şu durumda buna pek ihtiyacım yok yıllar öncesinden uzmanı olduğum bir konu . örnek vermek gerekirse orta düzey bir anti cheat ile karşılaştığımda dahi ;C++:void hooksend() { pushdegsyo = ReadLong(KO_SND_FNC + 3); BYTE jmp[] = { 0x78, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xAC }; // anti dev yeni send yazarsa adresleri güncelle. DWORD adr = (DWORD)SendFunc; memcpy(jmp + 1, &adr, 4); pushdegsyo = ReadLong(KO_SND_FNC + 4); // ++addr yada +0x08 atlamalara ihtiyaç duyabilirim notu kaldırma burdan std::string result; for (size_t i = 0; i < sizeof(jmp); ++i) { result += IntToHex(jmp[i], 2) + " "; } memcpy((void*)KO_SND_FNC, jmp, 7); }
send fonksiyonuna hook atmam gerekiyor , genel olarak paketler doğrudan tek fonksiyon ile iletilmiyor SEND1 , SEND2 ,SEND3, ... SEND9 gibi çok fazla fonksiyondan geçiyor ve en son send ediliyor .
Bak şidmi eski defterleri açacak olursak eski arkadaşlar çıkacazbu hooku ben yazdım bu arada daha doğrusu widex i güncelledim pushdegisiyo falan orjinal srclerde yok şuradan anladım önce snd_fnc +3 verdim sonra güncelleme geldi +4 e çevirdim yukarıda açıklama satırına almayı unutmuşum