20

ゲーム用の自動ボットを作成する予定です。

トリッキーな部分は、プロトコルをどのようにエンコードしたかを理解することです...ボットを実行させるのは簡単です。キャラクターを実行させ、wiresharkで何をするかを記録するだけです。ただし、環境の解釈はより困難です...アイドル状態の場合、毎秒約5パケットを受信するため、大量のガーバージが発生します。

私の計画:ゲームはTCPで実行されるため、freecap(http://www.freecap.ru/eng)を使用して、ゲームを自分のマシンで実行されているプロキシに強制的に接続します。このプロキシがパケットインジェクションに対応できるようにするか、キャプチャされたパケットを再送信できるサーバーが必要になります。このようにして、サーバーが送信するものを再作成していじくり回し、プロトコルエンコーディングを理解することができます。

  1. パケットインジェクションを可能にするプロキシをどこで入手できるか、またはパケットインジェクションを実行できる場所を誰かが知っていますか(ワイヤレスなどの場合のようにハードウェア経由ではありません!)
  2. キャプチャされたパケットを再送信する(つまり、接続を再生する)サーバー/プロキシを見つけることができる場合はどこにありますか。
  3. パターンマッチングのためのより良いツールや方法論はありますか?複数のメッセージからパターンを強調できるものは素晴らしいでしょう。

または、ここでこれを解読するためのより良い方法はありますか?おそらく分解戦略(winsock関数をフックしてそこから分解を開始することによる)?私はこれまでこれを行ったことがないので、よくわかりません。または、他のアイデアはありますか?

4

5 に答える 5

20

ネットワークトラフィックの傍受とプロトコル分析は、一般的に、ここでの目標を達成するためにあまり好まれない方法です。最近のほとんどのゲームでは、暗号化が深刻な要因であり、最も一般的なゲームプレイシナリオの些細な要因以外のプロトコル分析に関連する深刻な頭痛の種があります。

あなたがやろうとしていることの最新の実装*のほとんどは、実行中のクライアントのメモリ空間とプロセスの読み取りと操作に依存しています。クライアントは、トラフィックの復号化や、はるかに読みやすいデータ構造への分類など、すべての難しい部分をすでに実行しているはずです。サーバーと対話するために、一連のパケット全体を最初から作成する代わりに、クライアントに組み込まれている関数を呼び出すことができます。このアプローチの利点は、データを解釈してアクティビティを生成するために必要な作業がはるかに少ないことです。マイナス点は、ボットには役立つがクライアントによって破棄されるデータがネットワークトラフィックに含まれていることが多いこと、またはクライアントが生成できないトラフィックをサーバーに送信したい場合があることです(これは私自身もそうです) -そのために開発された階層は、「不正行為」のさらに数歩下にあります

* ...これは、MMORPGのボッティング/ハッキングコミュニティの大部分が、ShowEQOdin's Eye / Excaliburなどのネットワークプロトコルアナライザーから、 MacroQuestInnerSpaceなどのメモリベースのアプリケーションに進化したことを示しています。その点で、InnerSpaceは、試行しているもののメモリ/プロセスベースのバリアントに優れた拡張可能なフレームワークを提供します。ネットワーク分析アプローチを放棄する場合は、プロジェクトの基礎としてそれを検討する必要があります。

于 2009-02-12T03:01:15.017 に答える
3

A)私はMMOをプレイし、ボットをサポートしていません。投票します... B)Backtrack v.3をダウンロードし、デフォルトゲートウェイとホストでarpspoofを実行します。リモートホストのSSL証明書sslmitm(名前だと思います)を偽装するアプリケーションがあります。これにより、ホストを介した完全な接続を作成できます。次に、tcpdump / ethereal / wiresharkを起動し(pcapポイズンを選択)、ランダムな処理を実行して、どのパケットが何を実行しているかを調べます。それがあなたの最大の課題になります。しかし、中間者攻撃で自分自身を代理するのが道のりです。

C)私はこの活動を容認しません、この情報は無料の情報としてのみ提供されています。

于 2009-02-12T02:59:23.697 に答える
3

おそらく、タスクを大幅に簡素化するために行うことができるいくつかの合理的な仮定があります。ただし、それらを最大限に活用するには、思ったよりも袖をまくったプログラミングを快適に行う必要があるでしょう。

まず、彼らが使用している暗号化が次の 3 つのカテゴリのいずれかに分類されることは間違いありません。

  • なし
  • 安っぽい
  • あなたがクラックする可能性が高いよりもはるかに優れています

ミドルケースの可能性は非常に低いです。

次に、パケットがプログラムのエッジの近くで暗号化/復号化され (パケットが入ってくる直前、出て行く直前)、ゲームの本体がそれらを復号化された形式で処理することは安全な賭けです。

最後に、彼らが使用しているプロトコルは、おそらく次のいずれかで構成されています

  • データブロック付きASCII
  • バイナリグー

したがって、暗号化されていない ascii のプロミスキャス モードに設定されたカードを使用して、パケット スニッフィングを少し行います。あなたがいくつか見れば、素晴らしいです、あなたはゲームに先んじています. しかし、ラインタップのアイデア全体をあきらめず、代わりにブレークポイントを指定してデバッガーでステップ実行することにより、データの送信から返されるコードをたどり始める場合。最も外側の 1 つまたは 3 つの層が標準のネットワーク要素であり、次に暗号化層が来て、その先には暗号化されていないプロトコルを処理する膨大な量のものがあると考えてください。

元気な人なら 1 時間でここまでたどり着くことができますし、それなりのスキルとやる気と勤勉さがあれば週末でも達成できるはずです。しかし、原則的に可能です (実際には間違いなくはるかに簡単です)。

暗号化されていないグーのように見える何かが入ってきて、改ざんされ、改ざんされた形が消える場所にたどり着いたら、それが何を意味するのか心配し始めます。

-- マーカスQ

于 2009-03-03T05:20:31.973 に答える
0

暗号化が行われていないように聞こえるので、ネットワーク アプローチを実行できます。

開始するのに最適な場所は、パケット ID を見つけることです。ほとんどの場合、パケットの先頭近くにある何かが、パケットのタイプの ID になります。たとえば、移動は 1、射撃は「2」、チャットは「4」です。

ゲームが接続するために 1 つのポートでリッスンし、サーバーに接続する独自のプロキシを作成できます。プロキシにキーを押してコマンドを起動させるか、プロキシにデバッグ情報を書き出させて、さらに先に進むことができます。

(私はPHPでオンラインゲーム用のボットを作成しました-すべてのもの。)

于 2009-03-05T21:47:14.237 に答える