•         

            

            

  • HyperFilter | DoS Protection | DDoS Protection | DoS Mitigation | DDoS Mitigation | AntiDoS | AntiDDoS | Proxy Shielding

KO1089 Sourceleri için skill paketi ayıklama ve uygulama

bigahega

Administrator
Yönetici
KoCuce.Com
Katılım
7 Mart 2012
Mesajlar
12,842
Paketler server ile clientin haberleşmesini sağlar,

eğer paketler hakkında bilginiz yoksa kısa bir özet geçeyim.



paket dediğimiz hexdecimal kodlama türüne çevirilmiş sayılar ve yazılardır.



byte 2 hanelidir (FF), decimal hali 0 ile 255 ten büyük olamaz

short 4 hanelidir (FFFF), 2 bytenin birleşmesi ile oluşur.

dword 8 hanelidir (FFFFFFFF) 2 short un birlesmesi ile oluşur.

int64 16 hanelidir (FFFFFFFFFFFFFFFF) 2 dwordun birleşmesi ile oluşur.



short, dword, int64'ün içerisinde bulunan sonuncu bytelar sırayla ön tarafa taşınılır bu şekilde decimal hali bulunur.



C++ da byteların önüne "0x" konulur, basic te ise "&H"



Örnek olarak light feet paketini ayıklıcaz, orjinal sourcelerde bu paket eksik ve skill basıldığında charın kitlenmesine yol açıyor.



Paketi komple isteyenler oluyor vermek istemiyorum çünkü daha bunu yapamadıktan sonra kopyala yapıstır ile o dosyalar bir yere gelmez, tamer şunuda ver, tamer bunuda veriver diye uzar gider 🙂



Skill bastık, Client > Ebenezere skill isteği yolladı

Kod:
SEND-->WIZ_MAGIC_PROCESS[MAGIC_EFFECTING]-->31+03+B5A80100+8400+8400+0000+0000+0000+0000+0000+0000



Ebenezer > Cliente skill basıldığını özellikleri ile cevap olarak yolladı

Kod:
RECV-->WIZ_MAGIC_PROCESS[MAGIC_EFFECTING]-->31+03+B5A80100+8400+8400+0000+0000+0000+0A00+0000+C800



Ebenezerden cliente gelen paketin çözümlenmiş hali

Kod:
31 wiz_magic_process (hangi işlemin yapılacağını belirleyen paket)

03 magic_effecting (sub packet, paket içerisinde hangi işlemin yapılcağını belirliyor)

B5A80100 magicid

8400 sid

8400 tid

0000 data1

0000 result

0000 data3

0A00 (MagicType4 tablosunda bulunan duration ; Decimal 10)

0000 bos

C800 (MagicType4 tablosunda bulunan speed ; Decimal 200)



Şimdi, ayıkladığımız magicid yi decimale çeviriyoruz, ama önce tersine çevirmeliyiz

Kod:
0001A8B5 (Decimal hali 108725)



Aşağıdaki komutu uygulayıp Type1 ve Type2 sütunlarına bakıyoruz.

Kod:
Select Type1, Type2 From MAGIC Where MagicNum = 108725



Type1 de 4 yazıyor, bu demektir ki MAGIC_TYPE4 tablosuna bağlı. (ExecuteType4)



bu kodu uyguluyoruz ve paket ile gelen verileri decimale çevirdikten sonra tablodaki sütunları inceliyoruz.



Kod:
Select * From MAGIC_TYPE4 Where iNum = 108725



Duration ve Speed gelen paketimizde gizli, 10 ve 200 ü decimale çevirdiğimizde bulduk. Sütunlarda incelediğimizde gördük ki 10 Duration, 200 ise Speed sütunundaki sayılar ile aynı.



MagicType4 üzerinde çalıştık, paketimizi ayırdık. Fakat bunu filese geçirmesi var 🙂



MagicProcess.cpp içerisindeki ExecuteType4 fonksiyonumuzda bulunan success paketlerini değiştiricez, 2-3 yerde bulunuyor bu, failed paketlerinede 3 adet short ekleyin (0)



succes olaylarındaki send_buffa hexdecimalleri atayan bölüm ise bunun gibi olacak.



View hidden content is available for registered users!



Eğer sorunsuz bir şekilde uyguladıysanız, light feet, swift, sprint skilleri sorunsuz çalışacaktır. Bunun gibi diğer ExecuteType ları düzeltebilirsiniz, kolay gelsin.



Fakat bilmenizi isterim ki paketleri düzeltmeniz sadece client tarafında çoğu şeyin sorunsuzmuş gibi görünmesini sağlayacaktır, önemli olan alt yapısını sağlayan kodları düzeltmek ve yeni olanları eklemek.



Bu paketleri mypackettool (knighta özel yapılmıs ve pointerlar ile calısıyor), wireshark gibi snifferlar ile bulabilirsiniz.
 
Geri
Üst