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

vSro Paylaşım Silkroad Online Motor Sabitleri ve Enum Mimarisi: Assert İfadeleri, Durum Maskeleri ve Opcode Haritası

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 ₺
⚙️ Silkroad Online Motor Sabitleri ve Enum Mimarisi: Assert İfadeleri, Durum Maskeleri ve Opcode Haritası

Bir oyun istemcisinin tersine mühendisliğinde (reverse engineering) en güvenilir ve tartışmasız veri kaynakları; derleyicinin kod içerisine yerleştirdiği **`assert()` makroları, çalışma zamanı hata ayıklama (debug) dize kütüphaneleri ve RTTI (Run-Time Type Information)** sembolleridir. Joymax mühendisleri Visual C++ derleyicisinde assert denetimlerini istemci binary'sinde (`sro_client.exe`) bıraktığı için, oyun motorunun dahili değişken adları, enum sabitleri, kaynak dosya yapısı ve iş mantığı matematiksel kesinlikle çözülebilmektedir.

Bu teknik monografta; Silkroad Online istemci ikilisinden çıkarılan **motor enum ve sabitleri, parti/meslek mantığı, arayüz sınırları, durum etkisi (abnormal state) maskeleri, 288 işleyicinin assert haritası ve RTTI ağ sınıf hiyerarşisi** akademik bir derinlikle ortaya konmaktadır.

---

### 1. Durum Bilgisi ve Canlılık Maskeleri (Vital Info Mask)

İstemci ile sunucu arasında varlıkların yaşam/güç güncellemeleri (`0xB045` vb. paketler) koşturulurken, bant genişliğinden tasarruf etmek amacıyla bit düzeyinde maskeleme (bitmasking) kullanılır.

#### 1.1 `byMask` Alanı ve Bit Denetimi
Motor düzeyinde varlığın MP değişimini ve anormal durum (buff/debuff) etkilerini izleyen assert kuralları şunlardır:
- `VITAL_INFO_MP`: Karakterin büyü puanı (MP) güncelleme bayrağı (`!(byMask & VITAL_INFO_MP)`).
- `VITAL_INFO_ABNORMAL`: Karakterin üzerindeki anormal durumların (zehirlenme, donma, yanma vb.) güncelleme bayrağı (`!(byMask & VITAL_INFO_ABNORMAL)`).

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. Parti ve Meslek (Job) Sistem Sabitleri

Parti yönetiminde üyelerin ayrılma sebepleri ve meslek dinamikleri doğrudan assert ve debug dizelerinde kayıtlı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


---

### 3. Envanter, Yetenek ve Eşya Sınır Değerleri

Motor belleğinde taşma (buffer overflow) ve bellek bozulmalarını önlemek için sabit sınırlar assert denetimlerine tabi tutulmuştur.

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. Ağ Protokolü ve Doğrulanmış C++ Assert Haritası

Ghidra ve IDA Pro ile 288 adet paket işleyicisi (packet handler) çözümlendiğinde, Joymax'ın C++ kaynak kod dosya isimleri ve kritik koşulları gün ışığına çıkmaktadı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. RTTI Ağ Sınıf Hiyerarşisi ve Kaynak Modülleri

Visual C++ RTTI tablolarından çıkarılan ağ katmanı, katı bir Nesne Yönelimli Programlama (OOP) soyutlaması sergiler.

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. Geliştiriciler ve Tersine Mühendisler İçin Kazanımlar

1. **Paket Enjeksiyonunda Assert Önceliği:** Özel istemci modülleri veya bot sistemleri geliştirilirken; sunucuya gönderilen `0x70A2` veya `0x7202` isteklerinde istemcinin `IsLearnedSkill` ya da `IsLearnedMastery` assert koşulları göz ardı edilirse istemci sessizce çöker (crash).
2. **Meslek Güvenliği:** `g_pMyPlayerObj->GetJobType()` denetimi, istemcinin hileli paketlerle meslek eylemlerini manipüle etmesini engelleyen yerel bir denetim noktasıdır.
3. **Zaman Eşitlemesi:** `0x3017` paketindeki `InitTimer` çağrısı, sunucu ile istemcinin koordinat hesaplamalarında ve yetenek animasyonlarında desync (desenkronizasyon) yaşamasını önleyen matematiksel temeldir.

🙏 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 18,011 Aktif Kullanıcı
Çevrimiçi üyeler
Konular 1,209
Mesajlar 4,051
Kullanıcılar 1,597
Son üye serkankacan
Geri
Üst