一部のMMOでクライアントのメモリを編集すると、不正行為が許可されるのはなぜですか?


19

ゲームクライアントのメモリの編集が機能する理由 なぜ多くの「ハック保護」ツールがクライアントに付属しているのですか?

クライアントサーバーゲームを設計する場合、すべてはサーバーで行われ(ゲームワールドのシミュレーション)、クライアントはキャラクターの近くの世界の一部のステータス更新を受信する受動的な消費者であり、次のような情報のみを送信します。キーストロークまたは移動/アクションコマンド。たぶんここに何かが欠けているかもしれませんが、その設計では、クライアントメモリでSTRを200上げるようなハック(値が存在する場合)は効果がありません。

私が考えることができる唯一の説明は、メモリ編集が機能するゲームでは、シミュレーションの一部がクライアントとサーバーで実行され、その後すべてのクライアントが定期的に同期されるだけだということです。試合が設定されると、プレイヤーの数が固定されたリアルタイム戦略ゲームの設計を理解できますが、MMORPGではなぜですか?サーバーの負荷を減らす戦略ですか?


2
サーバーの負荷だけでなく、待ち時間の問題もあります。たとえば、Minecraftはすべての動きをクライアント側で処理するのは、それが最も簡単なソリューションだからです(純粋なクライアント側の動き、クライアント側の予測、またはラグのある動きから)。(Minecraftには通常、ペースの遅いゲームであるため、予測フレームワークがありません。そのため、動きの予測には多くの作業が必要になり、おそらく信頼性が低くなります)
user253751

回答:


21

理想的ではありますが、計算負荷とクライアントの入力確認の待ち時間の両方の観点から、サーバーに対してすべての単一の入力を検証することは実際にはありえません。

その結果、多くのMMOのサーバー上で検証されないものが通常いくつかあります。場合によっては、これには特定のクラスのキャラクターの動きが含まれ、テレポーテーションとスピードハックが存在する理由です。クライアント側の保護は、これらのハッキングに対する追加の障壁を提供するのに役立ちますが、もちろん十分な時間で、それらを迂回することができます。これに対抗するため、このようなゲームの多くは、ログ記録と事後検証、採用された実際の保護のローテーションの戦略を採用します。

また、情報を照合し、キープレスやその他の入力を、人間が通常反応するよりも速くクライアントに送信できる、他の単純なメモリスクレイピングハックの画面の問題もあります。または、クライアントに送信される可能性があるが、まだ表示されていない可能性のある情報を探します(初期のディアブロマップハックでよく見られたように、近くにあるがまだどこにも表示されていないクリーチャーの位置など)。


それは、ゲームクライアントの記憶を見ることに興味を持ち、それを防ぐことへの興味を説明するでしょう。私が最後にプレイしたゲームで個人的に見たテレポーテーションハック。
半蔵悟

2
興味深いことに、Ark:Survival Evolvedというゲームでは、サーバー上ですべてが検証されている(入力に至るまで、iirc)と述べています。正確にはWoWタイプのMMOではありませんが、アルファ版の70pplサーバー(さらに、大量のnpcディノとプレイヤーが構築した構造)をサポートします。あなたは確かに遅れを感じることができますが、それは良くなっています。これは技術が向上するにつれてますます一般的になると思います。
スライスされたヒキガエル

5
「70人」はサポートしているMMOに比べて、サーバーあたり少なくとも1桁(実際には数人)少ない人です。また、ハッカーがハッキングの開発に足を踏み入れないようにするために、ほぼすべての人がサーバー上ですべてを行うと言っいることにも注意してください。

@slicedtoad私はそれについて言及しようとしていました。とにかくほとんどのMMOはインスタンス化を使用するため、ARKメソッドはそれらの内部で機能することに注意してください。大量のプレイヤーに対してこれを行うことは(まだ)不可能です。
マスト

10

保護がある理由の1つは、ゲームの状態を読み取ることで、ボットがゲームの状態を把握し、それに応じて行動できるようになる可能性があることです。

たとえば、MMOを粉砕する:「ボット」が周りにいるMobを知っている場合、ゲームクライアントにコマンドを送信してMobを選択し、寿命が0になるまでヒットさせ、戦利品を拾い、洗い流して繰り返します。これにより、シミュレーションに対するすべての変更がサーバー側で行われた/確認されたとしても、一部のプレーヤーはチートする可能性があります。コマンドは、偽のマウスクリックまたはキーダウンを介して、またはメモリ書き込みを介して送信できます。

これが、MMOがメモリ保護を使用する理由の1つです。


わかりました。ボットは、神モードに自分自身を置くことができなくても、もっと意味があります。しかし、なぜ私がプレイしていたゲームの「ハッカー」が一発で殺すことができるのでしょうか?これは、ゲームメモリとサーバーを編集することで、それらの変更を何らかの方法で検証することを示すものではありません。
半蔵悟

1
@HatoruHansouはい。面倒な部分は、無人ボットが単独で実行できることです。1人の金農家の従業員が監視する10台のコンピューターの束、オンラインで24時間アクティブなキャラクターを想像してください。MMOが台無しになります。一部では、(「私の芝生の上に滞在しないでください、これは他のプレイヤーのための特別な処理があります、私(の部屋」があった。..初めにリネージュII))。
ベイランクール

ボットの人口が制御なしで成長し、ゲームがすぐに廃業する可能性があります。OK、ボットだけでアンチハック保護を正当化できます。答えを受け入れる前に、もう少し待ちます。
半蔵悟

@HatoruHansou確かに:)私はとにかくメモリ保護のすべての理由があるかどうかわからない:)
Vaillancourt

6

多くのMMOは、クライアント側のヒット予測を使用して設計されています。そのため、クライアントでヒットがあった場合、その結果をヒットがあったサーバーに送信します。この場合、サーバーは真に信頼できるものではないため、不正行為が可能です。

正直に言うと、MMOを設計している場合、クライアントはサーバーにクランプされた入力値のみを送信し、サーバーは結果を解決して、サーバーに完全な権限を与えます。

これが多くのMMOによってまだ行われていない理由については、ゲームの感触と応答性を損なうだけで、追加のサーバー負荷と、完全に権限のあるサーバーを持つことで発生する「応答の遅れ」しか考えられません。


それはメモリハッキングが効果的であることを説明するでしょう。信頼できるサーバー設計に関する記事/論文へのリンクはありますか?
半蔵H

4
負荷だけが問題ではありません-応答性が重要です。ネットワーク化されたリアルタイムゲームで、レイテンシを非表示にする手法を使用する必要があります。全員が同意することを確認するために、サーバーは各クライアントで発生したイベントを順序付ける方法を持っている必要があります-「最初に撃った」「最初に撃った」などの状況を回避しようとします。Counter-StrikeのようなゲームのSpeedhacksは、サーバーなどによって認識されるレイテンシーを操作することにより、この同期を悪用することに依存しています(ほとんどのCSサーバーが100-200msを超えるレイテンシーでプレイヤーを蹴る理由の1つです)。
ルアーン

3
厳密にターンベースのゲームを作成しているのでなければ、これを避けることはできません。レイテンシーは常に存在し、ネットワークゲームに関与するすべてのコンピューターは、イベントを注文するために「共通の時間」に同意する必要があります。遅延を管理するのに最適なシステムであっても、常に矛盾がありますが、それらを隠すのは非常に得意です。問題は、これらの小さなものを作成し始めると、微妙なバグをすり抜けさせるのが簡単になることです-たとえば、最初のキルの前に 2番目のキルが発生したふりをすると、クライアントが同じモンスターを2回キルすることを許可することができます。それはだハード
ルアン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.