Knight Online Source Visual C++

  • HyperFilter | DoS Protection | DDoS Protection | DoS Mitigation | DDoS Mitigation | AntiDoS | AntiDDoS | Proxy Shielding
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

DuMaNLaR

Kayıtlı Üye
Katılım
31 Temmuz 2012
Mesajlar
89
Reaction score
0
Puanları
6
Yaş
38
Paylaşım Tamer'e ait sanırım ama nette gezerken buldum paylaşmak istedim.



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.



Cevap Yazdiginiz için tesekkürler.

Kod:

SetByte( send_buff, WIZ_MAGIC_PROCESS, send_index ); // 31

SetByte( send_buff, MAGIC_EFFECTING, send_index ); // 03

SetDWORD( send_buff, magicid, send_index ); // B5A80100

SetShort( send_buff, sid, send_index ); // 8400

SetShort( send_buff, casted_member[j], send_index ); // 8400

SetShort( send_buff, data1, send_index ); // 0000

SetShort( send_buff, result, send_index ); // 0000

SetShort( send_buff, data3, send_index ); // 0000

// NERO

SetShort( send_buff, pType->sDuration, send_index ); // 0A00

SetShort( send_buff, 0x00, send_index ); // 0000

SetShort( send_buff, pType->bSpeed, send_index ); // C800





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.
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Geri
Üst Alt
Reklam
Reklam