Oyun hackleme: Magic: The Gathering Arena'da %100 kazanma oranına ulaşmak
- Magic: The Gathering Arena'da rakibin otomatik olarak oyundan çekilmesini sağlamanın bir yolu keşfedildi
- Sorunu bildirme niyetiyle birlikte kaynak kodu ve çözüm önerisi sunulması teklif ediliyor
Giriş
- İstemci tarafı kod karmaşıklaştırmasına dair görüş: obfuscation, az emek harcayan kişileri caydıran bir bariyer oluşturur, ancak güvenlik açıklarını bildiren tutkulu geliştiriciler için bir engeldir
- Kart oyunlarında oyun durumunu tamamen sunucu tarafı yönetir ve istemci yalnızca gerekli bilgileri alır
- İstemci sınırlı bilgiye sahip olduğundan hacklemek zordur
Başlarken
- Ağ iletişimini analiz ederek oyun hackleme sürecine başlandı
- C# ile yazılan MTGA'da çalışma zamanında oyun nesnelerini manipüle etmek kolaydır
- Özel alanlara ve metotlara erişebilen reflection kullanıldı
İpucu bulma
- C# decompilation, metadata token'larını kullanarak bunları insanların okuyabileceği adlarla eşler
JoinMatchfonksiyonu bulundu; bunun oyun sunucusuna ilk bağlanılan yer olduğu tahmin ediliyor
Sparky'nin implementasyonu
- MTGA'nın maskotu Sparky, yeni oyuncular için eğitim ve pratik amaçlı bir bottur
- Bot mantığı yerelde çalışır ve tüm karar alma süreci kullanıcının bilgisayarında gerçekleşir
Uygulamanın şeytanı (ayrıntılar)
- Bot maçı başladığında gerçek bot mantığı
HeadlessClientsınıfı üzerinden işlenir - Bot, oyun tahtasını render etmeye ihtiyaç duymadan oyun sunucusuna bağlanarak maçı oynar
Maçı ele geçirmek
- Reflection kullanılarak oyun nesnesinin davranışı değiştirilebilir
- Kendi koltuğunu tespit edip istemciyi diğer koltuğa bağlayarak rakibin oyundan çekilmesini sağlayan kod yazıldı
GN⁺'nin görüşü
Bu yazıdaki en önemli nokta, bir geliştiricinin oyun güvenlik açığını keşfedip bunu iyileştirmek için paylaşırken gösterdiği sorumlu tutumdur. Kart oyunları gibi oyun durumunun tamamen sunucu tarafından yönetildiği sistemlerde bile, istemci tarafı manipülasyonlarla oyun sonucunu etkileyebilen açıkların bulunması oldukça ilgi çekicidir. Bu tür bilgiler, oyun geliştiricilerine güvenliği güçlendirme ve oyunu daha adil hale getirme konusunda önemli dersler sunar.
1 yorum
Hacker News görüşü
Linux ile ilk kez tanışırken ağ trafiğini inceleme deneyimi
Magic: The Gathering oyunu için yapay zekanın şaşırtıcı verimliliği
Magic: The Gathering yapay zekası geliştirmenin karmaşıklığı ve verimliliği
MTGA için kişisel proje ve oyun hack'leme ilgisi
Oğluyla birlikte Magic 93/94 oynamanın keyfi
İstemci tarafı oyun mantığının önemi ve sunucu doğrulaması gerekliliği
League of Legends oyunundaki hata ve etkisi
Oyun sırasında yapay zekaya bağlanma ve rakibin pes etmesi işlemlerine dair soru işaretleri
Diablo 2 oyununda sunucu bağlantı paketlerini yeniden kullanma deneyimi
Sunucu emülatörü geliştirme ve LAN maçlarına ilgi