- 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ı
Ebenezer > Cliente skill basıldığını özellikleri ile cevap olarak yolladı
Ebenezerden cliente gelen paketin çözümlenmiş hali
Şimdi, ayıkladığımız magicid yi decimale çeviriyoruz, ama önce tersine çevirmeliyiz
Aşağıdaki komutu uygulayıp Type1 ve Type2 sütunlarına bakıyoruz.
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.
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.
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.
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.