Meretas game: mencapai win rate 100% di Magic: The Gathering Arena
- Ditemukan cara membuat lawan otomatis menyerah di Magic: The Gathering Arena
- Menyatakan niat untuk melaporkan masalah tersebut serta menawarkan kode sumber dan usulan solusi
Pendahuluan
- Pandangan tentang obfuscation kode sisi klien: obfuscation memang menaikkan hambatan bagi orang yang berinvestasi sedikit, tetapi menjadi penghalang bagi pengembang bersemangat yang ingin melaporkan kerentanan keamanan
- Dalam game kartu, status permainan sepenuhnya dikelola di sisi server dan klien hanya menerima informasi yang diperlukan
- Karena klien hanya memiliki informasi terbatas, peretasan menjadi sulit
Memulai
- Peretasan game dimulai dengan menganalisis komunikasi jaringan
- MTGA yang ditulis dalam C# mudah memanipulasi objek game saat runtime
- Menggunakan reflection yang dapat mengakses field dan method privat
Mencari petunjuk
- Decompilasi C# menggunakan metadata token untuk menghubungkan ke nama yang dapat dibaca manusia
- Menemukan fungsi
JoinMatch, yang diduga sebagai titik pertama terhubung ke server game
Implementasi Sparky
- Sparky, maskot MTGA, adalah tutorial dan bot latihan untuk pemain baru
- Logika bot berjalan secara lokal, dan seluruh proses pengambilan keputusan berlangsung di komputer pengguna
Iblis dalam implementasi (detail)
- Saat memulai match bot, logika bot sebenarnya diproses melalui kelas
HeadlessClient - Bot terhubung ke server game dan menjalankan permainan tanpa perlu merender papan permainan
Mengambil alih pertandingan
- Dengan menggunakan reflection, perilaku objek game dapat diubah
- Menulis kode untuk mengidentifikasi kursi sendiri lalu menghubungkan klien ke kursi lain sehingga lawan menyerah
Opini GN⁺
Poin terpenting dari tulisan ini adalah tindakan bertanggung jawab dari pengembang yang membagikan temuannya untuk membantu memperbaiki kerentanan keamanan game. Sangat menarik bahwa bahkan dalam sistem seperti game kartu, di mana server sepenuhnya mengelola status permainan, masih ada kerentanan yang memungkinkan hasil pertandingan dimanipulasi melalui modifikasi sisi klien. Informasi seperti ini memberi pelajaran penting bagi pengembang game untuk memperkuat keamanan dan membuat permainan lebih adil.
1 komentar
Komentar Hacker News
Pengalaman pertama mengenal Linux sambil menganalisis lalu lintas jaringan
Efisiensi luar biasa AI untuk game Magic: The Gathering
Kompleksitas dan efisiensi pengembangan AI untuk Magic: The Gathering
Ketertarikan pada proyek pribadi terkait MTGA dan peretasan game
Keseruan bermain Magic 93/94 bersama anak
Pentingnya logika game di sisi klien dan perlunya validasi server
Bug di game League of Legends dan dampaknya
Pertanyaan tentang koneksi AI dan penanganan lawan yang menyerah saat bermain
Pengalaman menggunakan kembali paket koneksi server di game Diablo 2
Ketertarikan pada pengembangan emulator server dan match LAN