1 ポイント 投稿者 GN⁺ 2023-12-06 | 1件のコメント | WhatsAppで共有

ゲームハック:マジック:ザ・ギャザリング アリーナで勝率100%を達成

  • マジック:ザ・ギャザリング アリーナで、相手を自動的に投了させる方法が発見された
  • 問題を報告する意思とともに、ソースコードおよび解決策の提示を提案

序論

  • クライアント側コードの難読化に対する見解:難読化は、投資の少ない人々を防ぐための障壁を高くするが、セキュリティ脆弱性を報告する熱意ある開発者にとっては障害となる
  • カードゲームはサーバー側でゲーム状態を全面的に管理し、クライアントは必要な情報だけを受け取る
  • クライアントは限られた情報しか持たないため、ハッキングは難しい

始める

  • ネットワーク通信の分析を通じてゲームハックを開始
  • C#で書かれたMTGAは、ランタイムでゲームオブジェクトを操作しやすい
  • 非公開フィールドおよびメソッドにアクセス可能なリフレクションを使用

手がかり探し

  • C#のデコンパイルはメタデータトークンを使って人間が読める名前と結び付ける
  • JoinMatch 関数を発見し、ゲームサーバーに最初に接続する場所だと推定

Sparkyの実装

  • MTGAのマスコットであるSparkyは、新規プレイヤー向けのチュートリアルと練習用ボット
  • ボットロジックはローカルで実行され、あらゆる意思決定プロセスがユーザーのコンピュータ内で行われる

実装の悪魔(詳細)

  • ボットマッチ開始時、HeadlessClient クラスを通じて実際のボットロジックを処理
  • ボットはゲームボードをレンダリングする必要なくゲームサーバーに接続し、対戦を進行する

試合の乗っ取り

  • リフレクションを使ってゲームオブジェクトの挙動を変更できる
  • 自分の席を特定し、別の席にクライアントを接続して相手を投了させるコードを作成

GN⁺の見解

この記事で最も重要なのは、ゲームのセキュリティ脆弱性を発見し、それを改善するために共有する開発者の責任ある行動だ。カードゲームのようにサーバーがゲーム状態を全面的に管理するシステムでも、クライアント側の操作によってゲーム結果を改ざんできる脆弱性が存在するという点は非常に興味深い。このような情報は、ゲーム開発者にとってセキュリティを強化し、ゲームをより公正なものにするうえで重要な教訓を与える。

1件のコメント

 
GN⁺ 2023-12-06
Hacker News の意見
  • Linuxに初めて触れた頃、ネットワークトラフィックを調査した経験

    • EverQuest向けのShowEQプログラムを使って、暗号化されていないトラフィックを分析
    • ハブを使ってLinuxマシンにトラフィックを複製し、リアルタイムのマップ描画とキャラクター位置表示を実現
    • モブが持っているアイテムを確認でき、特定のモブを選んで狩ることも支援
    • パッシブで検知不能な方法だったが、後にSOEがトラフィックの暗号化を開始
  • Magic: The Gathering向けAIの驚くべき効率性

    • ローカルマシンで動作可能なAIの小さなメモリ使用量に驚き
    • サーバーよりローカルでAIを実行するほうが合理的かもしれない
    • サーバーとローカルマシンのCPU差やマルチコア対応についての考慮
  • Magic: The Gathering AI開発の複雑さと効率性

    • MTGの複雑なAI開発に関する誤解を解消
    • Sparkyロジックのアクセスしやすさと、開発者たちの実装上の選択
    • ゲームがほぼチューリング完全であることと、AI戦略開発への言及
  • MTGAに関する個人プロジェクトとゲームハッキングへの関心

    • 非公式のMTGAクライアントを開発中だが、まだ初期段階
    • ゲームハッキングの経験、バグ公開、クライアント構造への関心を表明
  • 息子と一緒に楽しむMagic 93/94

    • 実際のカードを使って息子と対戦を楽しむ
    • マドリードで開かれる世界選手権への参加と、息子の成果を誇らしく語る
  • クライアント側ゲームロジックの重要性とサーバー検証の必要性

    • リアルタイムゲームにおけるクライアント側ロジックの応答性を強調
    • カードゲームではサーバー検証が重要であり、対戦相手の情報は制限されるべきだと指摘
  • League of Legendsのバグとその影響

    • 特定のチャンピオンとアイテムの組み合わせによりサーバーエラーが発生し、試合結果を操作できた
  • ゲーム中のAI接続と対戦相手の降参処理に対する疑問

    • 実際の試合中にAI接続が許可されるのか、また降参がどのように処理されるのかという質問
  • Diablo 2でのサーバー接続パケット再利用の経験

    • LANサーバーのキャラクターを公式インターネットサーバーに接続する方法を共有
  • サーバーエミュレーター開発とLANマッチへの関心

    • すべてのカードがアンロックされたLANマッチ向けに、サーバーエミュレーターを開発できる可能性を探る