1

いじっていた古いゲームをリバース エンジニアリングしようとしていますが、それはもはや維持されていません。現在、接続 IP を編集して、サーバーがオンラインであることを偽装しようとしていますが、アプリケーション内で IP を追跡する際に問題が発生しました。Wireshark テストを実行した後、プログラムが接続しようとする IP アドレスは 24.56.108.156 ですが、16 進編集プログラム (具体的には XVI32) を使用して 16 進またはテキストでスキャンしても結果は返されません。

それで、私は永遠に使用していない ollydbg をいじり、ロードし続け、アセンブリに関する私の知識は間違いなく急落しました。とにかく、最初に参照された文字列を調べたところ、「RemoteHostIP」関数がリモート ホストの IP を返すことを示すテキスト (コード コメントのようです) がそこに残っていることがわかりました。そのため、呼び出しのアセンブリを見つけてブレークポイントを作成し、それが正しい関数であり、クライアントが接続を試みたときに正しく呼び出されることを確認しました。そのためのアセンブリは次のとおりです。

MOV EAX, DWORD PTR DS:[C98FA8]
OR EAX, EAX
JE SHORT Eternal.0043629F //Jumps back to the MOV call.

EAX の値を調べたところ、75843918 であり、DS は 002B であることがわかりましたが、EAX 値 (10 進数または ascii に戻すと) は、クライアントが接続しようとしている IP アドレスと等しくありません。したがって、DS がデータ セグメント レジスタ以外に正確に何を意味するのか、または参照解除されたポインターにどのように影響するのか見当がつかないので、式 00C98FA8 に移動し、同じ値の 75843918 を取得しましたが、これは探しているものではありません。

私はここでアイデアを使い果たしています。私が見逃した可能性のある具体的なものはありますか? その DS には、私が知らない何らかの効果がありますか? どんな助けでも大歓迎です。役立つ情報を省略した場合は、教えてください。

-- 新たに追加された情報
-- typ1232 への対応と詳細情報:

アドレスには、個々の番号の間にいくつかのパディングがあり、次のようになりました: 32、00 の乱数、およびその他のがらくた..などなので、直接追跡することはできません。

4

1 に答える 1

1

私はいくつかの推測でそれを見つけました.アプリケーションの各部分は、IPのすべての部分の前に00で分割されているようです.00 32 00 34 00 2Eなど.

于 2013-09-24T00:31:13.137 に答える