5

Wireshark以外の何も使用せずにUDPベースのカスタムゲームプロトコルをリバースエンジニアリングするにはどうすればよいですか?大量のトラフィックをログに記録できますが、それではどうしますか?私の目標は、最終的にゲームコマンドをデコードできるWireshark用のディセクタプラグインを作成することです。これは実行可能だと思いますか?どのような課題に直面する可能性がありますか?コマンドが暗号化されている可能性はありますか?

4

2 に答える 2

9

ええ、それは実行可能です。しかし、それがどれほど実用的かは、問題のゲームによって異なります。圧縮すると作業が難しくなり、暗号化すると不可能になります(少なくとも、Wiresharkを使用すると、メモリ内のデータを取得できます)。

おそらくこれを行うための最良の方法は、それを系統的に行うことです-「大量のトラフィック」をログに記録するのではなく、ゲーム内で単一のアクションまたはコマンドを実行し、それを伝達するために送信されるデータを確認します。次に、パケットを見て、興味のあるものを見つけようとします。通常、それから多くを学ぶことはないので、別のコマンドを試して、新しいメッセージを最初のメッセージと比較してください。同じ場所にあるパーツはどれですか?どの部分が移動しましたか?そして、どの部分が完全に変わったのですか?メッセージタイプを説明している可能性のある、パケットの先頭近くの固定位置にある値を特に探します。一般的に言えば、パケットの開始はヘッダーのような一般的なものであり、パケットの後半部分はメッセージ固有のものになります。

データ型を知ることは便利です。整数値は、たとえば、ビッグエンディアンまたはリトルエンディアンの形式で格納される場合があります。また、多くのゲームはデータを浮動小数点値として送信するため、位置または速度を表す可能性のある2つまたは3つの浮動小数点数が連続して表示されることに注意してください。

于 2009-09-16T10:02:49.977 に答える