- 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 istemcisinin çalıştırılması, güncellenmesi ve çalışma zamanı (runtime) parametrelerinin yönetimi; birbirine sıkı sıkıya bağlı çoklu yürütülebilir ikili dosyalar (executable binaries) ve ikili/şifreli (binary/encrypted) yapılandırma dosyalarından oluşan modüler bir mimariye dayanır.
Bu teknik monografta; oyun istemcisinin başlatma halkası (**Launcher - silkroad.exe**), dosya değiştirme ve bütünlük motoru (**Replacer - replacer.exe**), hata telemetri servisi (**silkerrsender.exe**) ve istemcinin kök ile `Setting/` dizinlerinde yer alan ikili yapılandırma dosyalarının (`silkcfg.dat`, `SROptionSet.dat`, `wndpos.dat`, `Silkload.dat`, `xtrap.dat`) tersine mühendislik ve bellek haritaları akademik bir titizlikle incelenmektedir.
---
### 1. Sistem Mimarisi ve Yürütülebilir Dosya Rol Dağılımı
Silkroad Online istemci başlatma süreci, tek bir monolitik binary yerine yetki ve kilit ayrımı (file-locking isolation) sağlayan 3 yardımcı yürütülebilir dosya ve 1 ana oyun motoru (`sro_client.exe`) etrafında organize edilmiştir:
1. **`silkroad.exe` (Launcher - 760 KB):** MFC (Microsoft Foundation Classes) mimarisinde derlenmiş, kullanıcı arayüzünü, sürüm denetimini (version check) ve sunucu bağlantısını yöneten ana giriş kapısıdır.
2. **`replacer.exe` (Updater - 320 KB):** Launcher tarafından indirilen yama paketlerinin kilitli dosyalar üzerine güvenli bir şekilde yazılmasını sağlayan izole güncelleme modülüdür.
3. **`silkerrsender.exe` (Crash Reporter - 252 KB):** İstemci çökme anında Windows SEH (Structured Exception Handling) filtresi tarafından tetiklenen bellek dökümü (minidump) aktarım aracıdır.
4. **`sro_client.exe` (Oyun Motoru):** Asıl 3D rendering ve oyun mantığını yürüten ana modüldür.
---
### 2. Başlatıcı Alt Sistemi (`silkroad.exe`)
`silkroad.exe`, istemci yaşam döngüsünün ilk halkasıdır. GatewayServer ve DownloadServer ile ağ soketi kurarak istemci sürümünü ve sunucu durumunu sorgular.
#### 2.1 Ağ ve El Sıkışma Mekanizması
Launcher, oyun istemcisiyle aynı ağ yığınını (`CPacket`, `CSocket`) kullanır:
- **GatewayServer:** Başlangıç bağlantısı, sürüm doğrulaması ve sunucu listesi (Server List) çekimi.
- **DownloadServer:** Yama paketlerinin (`Replace.pk`) akış olarak indirildiği özel dosya sunucusu.
- **AgentServer:** Oyun oturumunun koordine edilmesi için referanslanan uç nokta.
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
---
### 3. Dosya Değiştirici ve Bütünlük Motoru (`replacer.exe`)
`replacer.exe` (320 KB), `CReplacerApp` ve `CReplacerDlg` sınıflarından türetilmiş bir MFC uygulamasıdır. Başlatıcının açık tuttuğu veya kilitlediği dosyaları (`silkroad.exe`, `Media.pk2` vb.) güvenle değiştirebilmek amacıyla ayrı bir işlem (isolated process) olarak yürütülür.
#### 3.1 Yama ve Değiştirme Akışı
1. İndirilen yama paketleri `%s\%s\Replace.pk` dizin kalıbından okunur.
2. `GFXFileManager.dll` API'leri kullanılarak paket içeriği ilgili PK2 arşivlerine veya kök dizine yazılır.
3. Değiştirme tamamlandıktan sonra `Media.pk2` arşivinin bütünlük kontrolü (CRC ve header validity) icra edilir.
4. Başarılı doğrulamanın ardından Windows Kayıt Defteri'ne (Registry) yeni sürüm numarası işlenir.
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. Çökme Telemetri Sistemi (`silkerrsender.exe`)
`silkerrsender.exe` (252 KB), MFC mimarisinde `CFTPSenderApp` ve `CFTPSenderDlg` sınıfları ile yapılandırılmış bir otomatik hata raporlayıcıdır.
#### 4.1 MiniDump ve Telemetri Protokolü
Oyun istemcisi (`sro_client.exe`) beklenmeyen bir istisna (unhandled exception) ile karşılaştığında, Win32 `MiniDumpWriteDump` API'sini tetikler. Oluşan `.dmp` dosyası FTP protokolü üzerinden analiz sunucularına iletilir.
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. İstemci Yapılandırma Dosyaları ve İkili (Binary) Ayrıştırma
Silkroad istemcisi, ayarlarını metin tabanlı INI/JSON yerine sıkılaştırılmış ikili (binary) veya onaltılık (hex-encoded) şifreli dosyalarda saklar.
#### 5.1 `silkcfg.dat` — Kök Yapılandırma Bloğu (23 Bayt)
İstemcinin kök dizininde bulunan ve motorun temel çalışma parametrelerini tutan 23 baytlık ikili dosyadır:
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.2 Şifreli Yükleyici Dosyaları: `Silkload.dat` ve `xtrap.dat`
Bu iki dosya, ASCII onaltılık (hex-encoded) karakter dizisi olarak saklanan şifreli güvenlik yükleridir.
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.3 `Setting/SROptionSet.dat` — Grafik, Ses ve Kullanıcı Arayüzü Ayarları (681 Bayt)
İstemcinin çözünürlük, gölge, doku kalitesi, ses seviyeleri ve arayüz tercihlerini tutan dinamik ikili kayıt dosyasıdır.
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.4 `Setting/wndpos.dat` — Arayüz Pencere Konum Matrisi (96 Bayt)
Oyun içerisindeki pencerelerin (Envanter, Karakter Durumu, Yetenek Ağacı vb.) ekran koordinatlarını ve boyutlarını kalıcı olarak saklar.
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.5 Diğer Yapılandırma ve Çalışma Zamanı (Runtime) Dosyaları
- **`Setting/SRChattingBlockingList.dat` (8 Bayt):** Engellenen oyuncu listesi. İlk 4 bayt kayıt sayısını (`uint32_t`), sonraki 4 bayt boş listeyi (`0x00000000`) temsil eder.
- **`Setting/SRExtQSOption.dat` (10 Bayt):** Genişletilmiş hızlı erişim barı (Quick-slot) seçenekleri. İlk 4 bayt sürüm (`1`), sonraki 4 bayt aktif slot bayrakları (`01 01 01 01`), son 2 bayt pasif bayraklar (`00 00`).
- **`Setting/Exception.dat`:** Çökme esnasında yazılan yapılandırılmamış istisna günlüğü.
- **`Setting/GNGWCRank.txt`:** GNGWC turnuva ve lonca savaş sıralama verisi.
- **`Setting/srch.txt`:** Oyun içi pazar ve tezgah arama geçmişi.
- **`[[Log_%d]]_%s.txt`:** İstemci çalışma zamanında oluşturulan sıra numaralı operasyon logları.
---
### 6. Sonuç ve Geliştirici Tavsiyeleri
Silkroad Online başlatma altyapısı incelendiğinde; dosya kilitleme ve sürüm kontrolünün kesin kurallarla korunduğu görülmektedir:
1. **İkili Yapılandırma Tutarlılığı:** `SROptionSet.dat` ve `silkcfg.dat` doğrudan bayt düzeyinde düzenlenirken struct hizalamasına (`#pragma pack(1)`) ve Little-Endian formatına mutlak suretle uyulmalıdır.
2. **Kayıt Defteri ve Arşiv Bütünlüğü:** `Media.pk2` sağlaması doğrulanmadan `SILKROADVERSION` değerinin haricen değiştirilmesi, istemcinin başlatıcı tarafından döngüsel olarak yama indirme moduna girmesine yol açar.
3. **Hata Yakalama ve Minidump:** Geliştiriciler yerel hata ayıklama süreçlerinde `silkerrsender.exe` parametrelerini taklit ederek istemci çökmelerini `.dmp` formatında yakalayabilir ve WinDbg / Visual Studio ortamında sembolsüz yığın analizini başarıyla gerçekleştirebilir.
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!



