- 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 ₺
Silkroad Online istemcisi (`sro_client.exe`) ile sunucu altyapısı (Gateway, Agent ve DownloadServer) arasındaki tüm iletişim; Winsock2 (`WS2_32.dll`) üzerinde IOCP (I/O Completion Ports) ve Overlapped I/O mimarisiyle çalışan, oturum bazlı simetrik şifreleme ve sahtecilik korumalı (anti-tamper / rolling CRC) tescilli bir TCP ikili protokolü üzerinden yürütülür.
Bu teknik monografta; Joymax ağ motorunun (`CNetEngine`) çekirdek mimarisi, **6 baytlık sabit paket başlığı**, **Blowfish ECB oturum şifrelemesi**, **32 iterasyonlu LFSR algoritmasıyla dönen güvenlik sayacı (Rolling CRC)**, `0x5000` / `0x9000` el sıkışma döngüsü ve 800'den fazla işlem kodunun (Opcode) yönlendirildiği **17 adet bellek içi atlama tablosu (Jump Table)** tersine mühendislik düzeyinde incelenmektedir.
---
### 1. Ağ Mimarisi ve İstemci-Sunucu Oturum Yaşam Döngüsü
İstemci, ağ motorunda tek bir soket yerine yaşam döngüsüne göre sıralı 3 sunucu katmanına bağlanır:
1. **GatewayServer (Port 15779):** Kimlik doğrulama, sürüm kontrolü ve sunucu kümesi (Farm/Division) listelemesi (`gateport.txt`, `divisioninfo.txt`).
2. **DownloadServer:** İstemci sürümü eksikse yama paketlerinin (`Replace.pk`) akış olarak indirildiği sunucu.
3. **AgentServer:** Karakter seçimi sonrasında asıl oyun dünyası, harita, dövüş, eşya ve sohbet paketlerinin aktığı ana oyun sunucusu.
Her yeni sunucu bağlantısında sıfırdan bir **El Sıkışma (Handshake)** icra edilir ve oturuma özgü şifreleme anahtarları dinamik olarak üretilir.
---
### 2. Paket Çerçeveleme (Framing) ve 6 Baytlık Başlık Yapısı
Silkroad Online protokolünde her TCP paketi, veri yükünün (payload) önünde yer alan **sabit 6 baytlık bir başlık** ile çerçevelenir:
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
#### 2.2 Akış Arabelleği İmleç Mekanizması (`CMsgStreamBuffer`)
Paket içerisindeki veriler, `CMsgStreamBuffer` sınıfı üzerinden sıralı (sequential) imleç okumalarıyla ayrıştırılır. Hata ayıklama dizesi formatı:
```text
"MSGID:0x%X,R(%d),W(%d),T(%d)"
```
- `R`: Okuma imleci konumu (`Read Cursor` - Oturum ofseti `+0x103C`).
- `W`: Yazma imleci konumu (`Write Cursor` - Oturum ofseti `+0x103E`).
- `T`: Toplam arabellek boyutu (`Total Buffer Size`).
Okuma imleci yazma imlecini aşamaz; aksi halde bellek taşması koruması devreye girerek oturumu kapatır.
---
### 3. Güvenlik Katmanı ve Dinamik El Sıkışma (Handshake)
Sunucuya TCP bağlantısı kurulduğu anda oturum güvensizdir. İstemci, sunucudan `0x5000` paketi gelene kadar başka hiçbir işlem paketini kabul etmez.
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. LFSR Tabanlı Dönen Güvenlik Sayacı (Rolling CRC Counter)
Paket sahteciliğini (tampering) ve paket yeniden oynatma (replay attacks) saldırılarını engellemek için Silkroad motoru, doğrusal geri beslemeli kaydırma yazmacı (**LFSR - Linear Feedback Shift Register**) tabanlı özel bir PRNG algoritması koşturur.
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. İşlem Kodu (Opcode) Dağıtım Motoru ve Atlama Tabloları (Jump Tables)
Gelen paketlerin işlenmesi, `CNetProcessIn` sınıfı üzerinden çok katmanlı ve yüksek performanslı bir dağıtım mekanizmasıyla gerçekleştirilir.
#### 5.1 Opcode Grubu Maskelemesi
İşlem kodunun en yüksek 5 biti (`0xF800` maskesi) paketin ait olduğu fonksiyonel kategoriyi belirler:
- `0x2000 – 0x27FF`: Kimlik Doğrulama ve Giriş Grubu.
- `0x3000 – 0x37FF`: Varlık / Dünya Durumu (Spawn, Despawn, Hareket).
- `0x3800 – 0x3FFF`: Genişletilmiş Varlık Operasyonları.
- `0x4000 – 0x47FF`: Oyun Eylemleri (Savaş, Büyü, Eşya Kullanımı).
- `0x5000 – 0x57FF`: Sistem ve Güvenlik El Sıkışması.
- `0x9000 – 0x97FF`: El Sıkışma Yanı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
---
### 6. İkili Analiz Referansı ve Bellek Ofsetleri (`CSession`)
Geliştiriciler ve bot/filtre yazarları için `sro_client.exe` belleğindeki `CSession` oturum nesnesinin kritik ofset haritası:
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
---
### 7. Filtre, Proxy ve Bot Geliştiricileri İçin Kritik Kurallar
1. **Rolling CRC Sayacı Takibi:** Bir proxy/filtre geliştirilirken istemci veya sunucu adına araya sahte paket enjekte edilecekse; `compute_security_bytes` fonksiyonunun iç durumu (`seed1`, `seed2`, `seed3`) her pakette birebir güncellenmelidir. Aksi halde karşı taraf sıradaki paketi sahte kabul edip bağlantıyı anında sonlandıracaktır.
2. **Massive Packet Bütünlüğü:** `data_size` alanındaki `0x8000` bayrağı asla rastgele silinmemeli; zlib açma işlemi tamamlanmadan ham parçalar oyun mantığına sunulmamalıdır.
3. **Opcode Maskelemesi:** Yeni paket kancaları (Hook) yazılırken `0xF800` maskeleme basamağı dikkate alınmalı; vtable çağrıları (`0x3000` bloğu) ile sabit switch-case atlama tabloları (`0x180B..0x7C2C`) birbirine karıştırılmamalıdı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!



