/dev: アンチチート カーネルドライバ
免責事項:今回の投稿は技術的な内容となっており、『リーグ・オブ・レジェンド』以外にも使用されるチート対策ツールについて取り上げています。この新たなチート対策はLoLよりも先に、『プロジェクト A』のような別タイトルで導入される予定です。
連邦政府による2000万ドルの支援と8年近い歳月を費やした共同研究の中で、一流の科学者たちは紀元前35億年から1985年11月20日までの時間軸に、チート開発の種を蒔くことに成功しました。明確な起源は現在も明らかになっておりませんが、現実問題として「ある事実」が一般に認知されるようになりました。つまりそれは、「チーターはチートをするものだ」ということです。
過去20年にわたり、チート開発とその対策技術は、「ゲームクライアントのメモリをめぐる名誉をかけた戦い」から、「チーターが使用する機器のオペレーティングシステム(あるいは使用するハードそのもの)の改変を試みる手段」へと発展していきました。こうしたチートの技術は、チート対策機能が「ユーザーモード」で動作する場合、正しいデータを読み込めなくしてしまい、影響はいっそうひどくなります。
ユーザーモードとは何ですか?
ユーザーモードはオペレーティングシステムの実行権限のレベル(特権レベル)の一つで、具体的には、ソフトウェアが実行されるもっとも制限された層のことです。ウェブブラウザや正式なWinRARソフト、皆さんの大好きなゲームもすべてユーザーモードで起動しています。このモードの中では、アプリケーションが直接、アプリケーション自身の“外側を見る”ことはできません。そのかわりに、通常アプリケーションのコードは自分自体のプロセス内ではなく、OSが提供するAPI(アプリケーション プログラミング インターフェース)を呼び出して、メモリの読み込みや書き込みを行わなくてはなりません。分かりやすいように少し言い方を変えるとこういうことです:(ユーザーモード内にいる)私たちがビーフシチュー(リーグ・オブ・レジェンド)の具材を確認するには、キッチン(Microsoft Windows)に聞かなくてはなりません。
もし余裕ぶった天才が「俺のチートはリング0でも検出されないから(笑)」と煽ってきたら、この図のことを言っています(もちろんバンされます)。
ここ数年、チート開発者たちはカーネルレベルでチートアプリ(またはその一部)を機能させるため、脆弱性の利用やWindowsによる署名検証の改ざんを始めました。ここで問題になるのは、カーネルモードで実行されているコードは、ゲームデータの読み込みに用いるシステムコール自体を横取りできるため、検出するのが難しい形で、正しい結果であるかのように改ざんできてしまうということです。中には、システムメモリの読み込み処理を行うDMA1──ユーザーモードで検出されることなく、完璧に実行されるベクタ2──を利用した特殊なハードウェアすらありました。
さて、これで多くのプレイヤーが改ざんされたWindowsを使用することは悪いことだと理解したかと思います。ですが、数多くのチーターがオーブウォーク(AAを効率よく撃つ技術)をできるようにするため、躊躇なく怪しいボットネットを夢中になって使用しています。つまり、現在のチートの多くが、チート対策よりも特権レベルの高いところで機能していることになります。キッチンで例えるならこういうことです:私たちが料理長に「シチューの材料は本当に産地直送か」と聞くと、どこからかニット帽をかぶった怪しげな男が現れて「ここは俺に任せな」とレストランの経営者を納得させ、「もちろん産地直送です、安心してお食べください」と私たちに返答するのです。
1 DMAとは“ダイレクトメモリアクセス”のことで、その名称からご想像のとおり、ハードウェアの一部がWindows APIを用いず直接メモリにアクセスできるようにする方式のことです。巧妙なチートコミュニティによっては、ターゲットのコンピューターのメモリの内容を別のコンピューター再中継してその後の処理をしてESP(Extra Sensory Perception、通常のプレイでは分からない情報を取得する行為)をするために、この方式を利用している場合もかつてありました(英語サイト)。
2 この技術を検出するため、すぐさまその開発者を雇い入れました。
なんでこんなことをプレイヤーに伝えるんですか?
歴史的には、みなさんが大好きなチート対策チームはユーザーレベルでチーターとの戦いせざるを得ず、ゴルフでいえばチーターに実質12のハンデを与えているような状態でした(すごいハンデです)。ですが私たちは、チーターに比べて安定した収入と、十分ある睡眠時間を削ることもできるというアドバンテージを活かして、これまでは全力を出さずとも迅速な処理が可能でした。終わりなきセキュリティ戦争を続けていくのも悪くないかもしれませんが、ライアットゲームズはマルチゲームという宇宙に突入しようとしています。対応にかかる時間が増えて睡眠不足が加速すれば、現在のセキュリティが保たれなくなってしまいます。
ですので、今後ライアットゲームズがリリースする一部のタイトルでは、カーネルドライバを用いた保護がなされます。
それって大丈夫なんですか?
ご心配の必要はありません。理由は次のようになっています:
- ストレスは身体不調の原因になります。具合が悪くなるなんて苦しみは必要ありません。
- 今までになかった新しい監視機能が追加されるわけではありません。その気になれば、おばあちゃん秘伝のクリスマスケーキのレシピをユーザーモードから正確に入手して、食品業界に売り払うことも可能ですが、このアップグレードの目的は、整合性についてゲームシステムの状態を監視し(これで信頼できるデータが得られます)、チーターがゲームを改ざんしづらくすることにあります(これでゲーム中に失敗してもエイムボットのせいにはできません)。
- これはわざわざお伝えすることでもありませんが、一部のサードパーティー製チート対策システム(EasyAntiCheatやBattleye、Xigncode3など)は、大人気のAAAゲームタイトルを保護するのにカーネルドライバを利用しています。ライアットゲームズはWindowsというキッチンにこの副料理長を配置することで、肉の産地がどこかと聞けば、正直な回答がもらえるというわけです。
- 検出されないチートを作成するのは、著しく困難になります。エイムボットから皆さんを守り、Reddit,から私たちを守り、そしてチートからチーターを守る。関わっている全員にとっての絶対的な勝利です。
マルチプレイヤーで行うオンラインゲームにおいて、チート対策は非常に重要な要素であると考えています。また、皆さんが対戦相手の能力を疑うことなくプレイできる環境にしたいと思っています。「チートしたい」病に治療法はありませんが、最高の競技体験をしてもらうために、必要なことは何でも行うつもりです。
私からの通信は以上ですが、400万秒ほど経過しましたら、文学賞ものの中編小説「LOLからチーターを追放」の続編として、ランダムミッドにいるボットについてお伝えします。