- 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ü] Sistem ve Altyapı Mesajları (0x0000 - 0x2FFF): Keepalive, Ping ve Gateway Doğrulaması
Silkroad Online ağ mimarisinde `0x0000 - 0x2FFF` aralığı, oyun içi mantıksal eylemlerden (savaş, hareket, envanter vb.) tamamen bağımsız olan çekirdek işletim ve altyapı katmanına tahsis edilmiştir. Bu aralıktaki paketler; soket canlılığının izlenmesi (heartbeat/keepalive), uçtan uca gecikme süresinin (latency/RTT) ölçülmesi, küresel oturum kimliğinin saptanması ve Gateway sunucusu üzerinden harici kimlik doğrulama API'lerinin tetiklenmesi gibi kritik altyapı işlevlerini üstlenir.
Bu monografide, tersine mühendislik (Reverse Engineering) verileriyle doğrulanmış `0x0FFC`, `0x0FFD`, `0x2000`, `0x2001`, `0x2002` ve `0x2113` opcode'larının ikili serileştirme düzeni ve binary kanıtları incelenmektedir.
1. Sistem Düzeyi Mesaj Taksonomisi
Sistem mesajları, istemci ile sunucu arasındaki TCP soketinin "hayatta" olup olmadığını denetleyen ve NAT/güvenlik duvarı zaman aşımlarını (timeout) önleyen en düşük seviyeli protokoldür.
2. İkili Alan Düzenleri ve Protokol Alan Analizleri
### A. Opcode 0x0FFC — SYSTEM_KEEPALIVE (17 Bayt)
`sro_client.exe` binary'sinde `0x008A5230` sanal adresindeki handler tarafından ayrıştırılır. Toplam 17 baytlık sabit bir bellek yerleşimine sahiptir:
1. `dwTimestamp` (uint32_t, 4B): Paketin istemci veya sunucu tarafından üretildiği milisaniye cinsinden yerel sistem zamanı (`GetTickCount()`).
2. `byFlag` (uint8_t, 1B): Paket durumu bayrağı (0x00: Normal, 0x01: Senkronizasyon talebi).
3. `dwSequence` (uint32_t, 4B): Artan sıra numarası; aradaki paket kayıplarını ve sıra bozulmalarını tespit etmek için kullanılır.
4. `dwLatency` (uint32_t, 4B): Son ölçülen gidiş-dönüş süresi (Round-Trip Time / RTT, milisaniye).
5. `dwChecksum` (uint32_t, 4B): Başlık ve gövde bütünlüğünü denetleyen hafif matematiksel sağlama değeri.
### B. Opcode 0x0FFD — SYSTEM_PING (0 Bayt)
Bu paket, Joymax protokolünün en hafif mesajıdır. `sro_client.exe` içerisinde `0x00888DA0` adresindeki handler fonksiyonu tarafından karşılanır.
Kapsamlı Binary Taraması Kanıtı:
SR_GameServer.exe, GatewayServer.exe, AgentServer.exe ve ShardManager.exe binary'lerinde yapılan derinlemesine araştırmada `PUSH 0x0FFD` buyruğu aranmış ve hiçbir sunucu binary'sinde gövde okuma (`ReadField`) veya yazma çağrısına rastlanmamıştır. Bu durum, paketin 0 baytlık boş yük (zero-payload) taşıdığını kesinleştirmiştir. Alındığında istemci hata ayıklama konsoluna `SMSG[0x%04X] %02d:%02d:%02d` format string'i ile log düşer.
### C. Opcode 0x2000 — LOGIN_AUTH (Gateway Kimlik Doğrulama)
GatewayServer.exe üzerinde `0x00414a90` fonksiyonunda işlenir. Kullanıcıdan alınan kimlik bilgilerini (kullanıcı adı ve parola) ayrıştırarak harici kimlik doğrulama sunucusuna iletir.
3. GatewayServer Binary İncelemesi ve Kod Kanıtları
4. Geliştirici ve Özel Sunucu Entegrasyon Notları
1. Ping / Keepalive Ayrımı: Özel bir proxy veya anti-cheat filtresi geliştirirken `0x0FFD` paketine asla sahte bir gövde eklenmemelidir. İstemci `0x00888DA0` fonksiyonunda herhangi bir `ReadField` çalıştırmadığı için gövdede kalan baytlar deseralizasyon sıra kaymasına (desync) yol açar.
2. Zaman Aşımı Süreleri: AgentServer ve GatewayServer, istemciden ardışık 3 periyot boyunca `0x0FFC` veya `0x0FFD` alamazsa soketi `WSAECONNRESET` ile sonlandırır (varsayılan periyot 30 saniyedir).
3. X-Trap Tanımlaması (0x2113): X-Trap modülü devreden çıkarılmış (XTrap bypass) vSRO istemcilerinde `0x2113` opcode'u ya sunucu tarafından yok sayılır ya da doğrudan boş yanıtla geçiştirilir.
5. Özet
`0x0000 - 0x2FFF` aralığındaki altyapı paketleri, Silkroad ağ iletişiminin omurgasıdır. Bu paketlerin doğru yönetilmesi, oyuncuların sebepsiz bağlantı kopmalarının (random DC) ve Gateway sunucusundaki kimlik doğrulama tıkanıklıklarının önüne geçilmesini sağlar.
Silkroad Online ağ mimarisinde `0x0000 - 0x2FFF` aralığı, oyun içi mantıksal eylemlerden (savaş, hareket, envanter vb.) tamamen bağımsız olan çekirdek işletim ve altyapı katmanına tahsis edilmiştir. Bu aralıktaki paketler; soket canlılığının izlenmesi (heartbeat/keepalive), uçtan uca gecikme süresinin (latency/RTT) ölçülmesi, küresel oturum kimliğinin saptanması ve Gateway sunucusu üzerinden harici kimlik doğrulama API'lerinin tetiklenmesi gibi kritik altyapı işlevlerini üstlenir.
Bu monografide, tersine mühendislik (Reverse Engineering) verileriyle doğrulanmış `0x0FFC`, `0x0FFD`, `0x2000`, `0x2001`, `0x2002` ve `0x2113` opcode'larının ikili serileştirme düzeni ve binary kanıtları incelenmektedir.
1. Sistem Düzeyi Mesaj Taksonomisi
Sistem mesajları, istemci ile sunucu arasındaki TCP soketinin "hayatta" olup olmadığını denetleyen ve NAT/güvenlik duvarı zaman aşımlarını (timeout) önleyen en düşük seviyeli protokoldür.
| Opcode | Mesaj Adı | Yön (Direction) | Payload Boyutu | Doğrulama Kaynağı | Birincil İşlev |
|---|---|---|---|---|---|
| 0x0FFC | SYSTEM_KEEPALIVE | İki Yönlü (Bidirectional) | 17 Bayt | Client RE (0x008A5230) | Soket zaman damgası, gecikme ve sağlama toplamı takibi |
| 0x0FFD | SYSTEM_PING | İki Yönlü (Keepalive) | 0 Bayt (Gövdesiz) | Client / Server RE | Saf kalp atışı (heartbeat); soket zaman aşımını engeller |
| 0x2000 | LOGIN_AUTH | Client -> Server | Değişken (ASCII String) | Server RE (GatewayServer) | Kullanıcı adı ve parola ile Gateway kimlik doğrulama |
| 0x2001 | GLOBAL_IDENTIFICATION | Sistem / Çekirdek | 0 Bayt / Başlık | Server RE | Uç nokta servis tanıtımı ve oturum el sıkışması |
| 0x2002 | GLOBAL_PING | Sistem / Çekirdek | 0 Bayt / Sabit | Server RE | Servisler arası ve küresel ping sinyali |
| 0x2113 | GLOBAL_XTRAP_IDENTIFICATION | Sistem / Güvenlik | Değişken Token | Server RE | X-Trap anti-hile modülü kimlik ve oturum token doğrulaması |
2. İkili Alan Düzenleri ve Protokol Alan Analizleri
### A. Opcode 0x0FFC — SYSTEM_KEEPALIVE (17 Bayt)
`sro_client.exe` binary'sinde `0x008A5230` sanal adresindeki handler tarafından ayrıştırılır. Toplam 17 baytlık sabit bir bellek yerleşimine sahiptir:
1. `dwTimestamp` (uint32_t, 4B): Paketin istemci veya sunucu tarafından üretildiği milisaniye cinsinden yerel sistem zamanı (`GetTickCount()`).
2. `byFlag` (uint8_t, 1B): Paket durumu bayrağı (0x00: Normal, 0x01: Senkronizasyon talebi).
3. `dwSequence` (uint32_t, 4B): Artan sıra numarası; aradaki paket kayıplarını ve sıra bozulmalarını tespit etmek için kullanılır.
4. `dwLatency` (uint32_t, 4B): Son ölçülen gidiş-dönüş süresi (Round-Trip Time / RTT, milisaniye).
5. `dwChecksum` (uint32_t, 4B): Başlık ve gövde bütünlüğünü denetleyen hafif matematiksel sağlama değeri.
### B. Opcode 0x0FFD — SYSTEM_PING (0 Bayt)
Bu paket, Joymax protokolünün en hafif mesajıdır. `sro_client.exe` içerisinde `0x00888DA0` adresindeki handler fonksiyonu tarafından karşılanır.
Kapsamlı Binary Taraması Kanıtı:
SR_GameServer.exe, GatewayServer.exe, AgentServer.exe ve ShardManager.exe binary'lerinde yapılan derinlemesine araştırmada `PUSH 0x0FFD` buyruğu aranmış ve hiçbir sunucu binary'sinde gövde okuma (`ReadField`) veya yazma çağrısına rastlanmamıştır. Bu durum, paketin 0 baytlık boş yük (zero-payload) taşıdığını kesinleştirmiştir. Alındığında istemci hata ayıklama konsoluna `SMSG[0x%04X] %02d:%02d:%02d` format string'i ile log düşer.
### C. Opcode 0x2000 — LOGIN_AUTH (Gateway Kimlik Doğrulama)
GatewayServer.exe üzerinde `0x00414a90` fonksiyonunda işlenir. Kullanıcıdan alınan kimlik bilgilerini (kullanıcı adı ve parola) ayrıştırarak harici kimlik doğrulama sunucusuna iletir.
3. GatewayServer Binary İncelemesi ve Kod Kanıtları
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
4. Geliştirici ve Özel Sunucu Entegrasyon Notları
1. Ping / Keepalive Ayrımı: Özel bir proxy veya anti-cheat filtresi geliştirirken `0x0FFD` paketine asla sahte bir gövde eklenmemelidir. İstemci `0x00888DA0` fonksiyonunda herhangi bir `ReadField` çalıştırmadığı için gövdede kalan baytlar deseralizasyon sıra kaymasına (desync) yol açar.
2. Zaman Aşımı Süreleri: AgentServer ve GatewayServer, istemciden ardışık 3 periyot boyunca `0x0FFC` veya `0x0FFD` alamazsa soketi `WSAECONNRESET` ile sonlandırır (varsayılan periyot 30 saniyedir).
3. X-Trap Tanımlaması (0x2113): X-Trap modülü devreden çıkarılmış (XTrap bypass) vSRO istemcilerinde `0x2113` opcode'u ya sunucu tarafından yok sayılır ya da doğrudan boş yanıtla geçiştirilir.
5. Özet
`0x0000 - 0x2FFF` aralığındaki altyapı paketleri, Silkroad ağ iletişiminin omurgasıdır. Bu paketlerin doğru yönetilmesi, oyuncuların sebepsiz bağlantı kopmalarının (random DC) ve Gateway sunucusundaki kimlik doğrulama tıkanıklıklarının önüne geçilmesini sağlar.
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!



