İçeriğe geç
Türkiye'nin SRO tanıtım & topluluk platformu

vSro Paylaşım [Joymax Ağ Protokolü] 364 Paketlik Ana Mesaj İndeksi, Opcode Dağılım Taksonomisi ve RPC Yaşam Döngüsü

Cevaplar0
Görüntüleme6
Ticaret Puanı
0
Katılım
19 Ocak 2026
Mesajlar
277
Tepkime puanı
225
Puanları
0
Web sitesi
www.youtube.com
Discord
ayzekk.
Mevcut Bakiye
4605 ₺
[Joymax Ağ Protokolü] 364 Paketlik Ana Mesaj İndeksi, Opcode Dağılım Taksonomisi ve RPC Yaşam Döngüsü

Silkroad Online istemci-sunucu haberleşmesi, Joymax tarafından geliştirilen yüksek verimli, durumsal (stateful) ve asenkron bir ikili (binary) RPC protokolüne dayanır. Protokolün temel amacı, devasa çok oyunculu bir dünyada binlerce istemcinin hareket, savaş, envanter, ticaret ve çevre güncellemelerini milisaniyeler seviyesinde ve minimum bant genişliğiyle yönetebilmektir.

Bu monografik rehberde, sro_client.exe ve GameServer binary'lerinin tersine mühendisliği (Reverse Engineering) sonucu doğrulanmış 364 ağ mesajının sayısal aralıkları, işlem yönleri (Direction), opcode matematiksel bağıntıları ve paket yaşam döngüsü eksiksiz bir akademik disiplinle incelenmektedir.


1. Joymax İkili Protokol Mimarisi ve Paket Anatomisi

Silkroad ağ paketleri, TCP/IP akışı üzerinde 6 baytlık sabit bir başlık (header) ve değişken uzunluklu bir gövdeden (payload) oluşur. Tüm tamsayı ve kayan nokta alanları Little-Endian bayt sıralamasına sahiptir.

OfsetAlan AdıVeri TipiBoyut (Bayt)Açıklama
0x00Payload Lengthuint16_t2Başlık hariç gövde boyutu (0 - 4096 bayt arası)
0x02Opcodeuint16_t2Paketin fonksiyonel işlem kimliği
0x04Security / Sequenceuint16_t2Güvenlik bayrakları, sayaç ve şifreleme bilgisi

Sunucu ve istemci arasındaki tüm oturumlar, el sıkışma (handshake) tamamlanana kadar düz metin (plaintext) başlıklarla çalışır; el sıkışma sonrasında ise güvenlik bayraklarına bağlı olarak Blowfish şifrelemesi ve CRC32 bütünlük denetimi devreye girer.


2. Opcode Sayısal Aralıkları ve Matematiksel Bağıntı Kuralı

Joymax mühendisleri, protokol opcode'larını gelişigüzel seçmemiş; mesajın işlevine, yetki düzeyine ve akış yönüne göre katı sayısal aralıklara ayırmıştır. Bu tasarım, istemci ve sunucu tarafındaki `switch-case` ve dizi tabanlı fonksiyon işaretçisi (function pointer table) aramalarını O(1) karmaşıklığına indirmek üzere optimize edilmiştir.

Temel Aralık Dağılımı:
1. 0x0000 - 0x2FFF (Sistem & Çekirdek Protokolü): Bağlantı yaşatma (Keepalive), gecikme ölçümü (Ping), küresel tanımlama (Identification) ve X-Trap anti-hile el sıkışması.
2. 0x3000 - 0x4FFF (Sunucu -> İstemci Olay & Bildirim Akışları): İstemci tarafından talep edilmeksizin (unsolicited) sunucunun dünyaya ve oyuncuya duyurduğu asenkron durum güncellemeleri. Varlıkların doğması (Spawn), yok olması (Despawn), hareket senkronizasyonu, can/mana değişimleri, sohbet mesajları ve hava durumu.
3. 0x5000 - 0x9FFF (Güvenlik, Kimlik & El Sıkışma): Bağlantı açılış el sıkışması (`0x5000`), istemci kabul onayı (`0x9000`), Blowfish anahtar üretimi ve tohum takası.
4. 0x6000 - 0x7FFF (İstemci -> Sunucu İstek Paketleri - RPC Requests): Oyuncunun yaptığı her aktif eylem (Giriş isteği, karakter seçimi, yürüme, hedef seçme, eşya taşıma, beceri kullanma, tezgah kurma).
5. 0xA000 - 0xBFFF (Sunucu Yanıt Paketleri - RPC Responses): İstemcinin 0x6000-0x7FFF aralığında gönderdiği isteklere sunucunun verdiği resmi onay, red veya sonuç paketleri.

Kritik Matematiksel İlişki: `+0x4000` Kuralı
Silkroad protokolünde istemci istekleri ile sunucu yanıtları arasında deterministik bir simetri bulunur. Bir istemci isteğine doğrudan karşılık gelen sunucu yanıtının opcode'u, istek opcode'una tam olarak 0x4000 eklenerek hesaplanır:

Kod:
Yanıt Opcode = İstek Opcode + 0x4000

Doğrulanmış Örnekler:
- Karakter Seçim Giriş İsteği: 0x7001 + 0x4000 = 0xB001 (Karakter Seçim Giriş Yanıtı)
- Karakter Hareket İsteği: 0x7021 + 0x4000 = 0xB021 (Hareket Yanıtı / Echo)
- Sohbet Mesajı İsteği: 0x7025 + 0x4000 = 0xB025 (Sohbet Gönderim Yanıtı)
- Envanter Eşya Taşıma: 0x7034 + 0x4000 = 0xB034 (Eşya Taşıma Sonucu)
- Varlık Hedef Seçimi: 0x7045 + 0x4000 = 0xB045 (Hedef Seçim Onayı)
- Beceri/Mastery Yükseltme: 0x70A1 + 0x4000 = 0xB0A1 (Mastery Seviye Yanıtı)


3. Tersine Mühendislik Kaynakları ve İsimlendirme Çelişkileri

Topluluk kaynaklarında ve eski paket botlarında birçok opcode hatalı isimlendirilmiştir. Bunun temel sebebi, eski analizlerin yalnızca istemci PE binary'sindeki (`sro_client.exe`) handler fonksiyonlarının yüzeysel incelenmesine dayanmasıdır (`Client RE`).

Buna karşılık, GameServer ve ShardManager binary'lerinin kaynak kod assert'leri ve hata ayıklama sembolleri (`Server RE`), Joymax mühendislerinin gerçek terminolojisini açığa çıkarmıştır:

OpcodeEski Yanıltıcı İsim (Client RE)Doğrulanmış Gerçek İsim (Server RE)Gerçek Fonksiyonu
0x3015SERVER_CHARACTER_DELETE_RESPONSESERVER_ENTITY_SPAWNGörüş alanına yeni bir varlığın (oyuncu, NPC, mob, skill bölgesi) girmesi
0x3016SERVER_CHARACTER_RESTORE_RESPONSESERVER_ENTITY_DESPAWNGörüş alanından bir varlığın çıkması veya silinmesi
0x3017SERVER_GROUP_SPAWN_STARTSERVER_ENTITY_GROUPSPAWN_BEGINToplu varlık spawn akışının başlatılması
0x3018SERVER_GROUP_SPAWN_ENDSERVER_ENTITY_GROUPSPAWN_ENDToplu spawn akışının sonlandırılması
0x3020SERVER_CELESTIAL_UPDATESERVER_ENVIROMENT_CELESTIAL_POSITIONGüneş/Ay gök cisimlerinin açısal konumu


4. Protokol Güvenlik Katmanı ve Kritik Teknik Detaylar

Bu gizli bloğun içeriği yalnızca şu üyeler tarafından görülebilir. Bu İçerik Premium Üyelere Özeldir. Engelsiz Tüm Gizli İçerikleri Görmek İçin Premium Üyelik satın alabilirsiniz. Ücretli Üyelikler



5. Sonuç ve Sonraki Bölümler

Bu ana indeks rehberi, Joymax ağ mimarisinin haritasını ortaya koymaktadır. Takip eden monograflarda bu 364 mesajın her biri sayısal aralıklarına göre:
- **0x0000 - 0x2FFF (Sistem ve El Sıkışma)**
- **0x3000 - 0x4FFF (Sunucu Olay ve Bildirim Paketleri)**
- **0x5000 - 0x9FFF (Güvenlik, Anahtar Değişimi ve Handshake)**
- **0x6000 - 0x7FFF (İstemci İstek Paketleri - RPC Requests)**
- **0xA000 - 0xBFFF (Sunucu Yanıt Paketleri - RPC Responses)**

başlıkları altında wire format struct'ları, Ghidra disassembly referansları ve sunucu doğrulama algoritmalarıyla detaylandırılacaktır.

🙏 Silkroad Geliştirici Camiasına Teşekkür ve Saygı

Bu kapsamlı teknik dokümantasyon, tersine mühendislik mimarisi ve protokol analizlerinin gün ışığına çıkmasında Silkroad ekosistemine yıllardır karşılıksız devasa emekler veren ve bu mirası ileriye taşımaya devam eden öncü geliştiricilerimize en içten teşekkürlerimizi sunarız:

⭐ DaxterSoul — Paket filtreleme, proxy mimarileri ve sunucu güvenliğindeki temel çalışmaları ve topluluğa kazandırdığı standartlar için,
⭐ florian0 — İstemci (Client) ve GameServer ikili (binary) tersine mühendisliği, hook ve assembly düzeyindeki rehber niteliğindeki araştırmaları için,
⭐ JellyBitz — Açık kaynak Silkroad araçları, paket analiz kütüphaneleri ve geliştirici ekosistemine sunduğu paha biçilmez açık kaynak yazılımlar için,
⭐ ferdoran — İstemci-sunucu protokol analizlerinin, opcode referanslarının ve teknik dokümantasyonun derlenip topluluğa kazandırılmasındaki büyük gayretleri için.

Silkroad geliştirici topluluğuna kattığınız değer, paylaştığınız bilgi birikimi ve sunduğunuz vizyon için sonsuz teşekkürler. İyi ki varsınız!
 

Konuyu görüntüleyenler

Yükleniyor...
Yükleniyor...
Şu anda sitemizde 17,791 Aktif Kullanıcı
Çevrimiçi üyeler
Konular 1,209
Mesajlar 4,051
Kullanıcılar 1,597
Son üye serkankacan
Geri
Üst