ゲーム (Red Alert 3) を「ハッキング」しようとしています。対戦相手のユニット リストを表示するプログラムを作成しようとしています。それに関しては、最初に、シングルプレイヤーで実行できる自分のリストへの (静的) ポインターを見つける必要があります。
私はこの動作に気付きました: (どのアドレスが add_unit コードによって変更されたかを見ることによって):
- ユニットがまだ構築されていない場合は、新しいアドレスを作成し (ランダム?)、値を 1 (そのタイプのユニットの数) に設定します。
- ユニットがゲーム内で一度ビルドされている場合、ユニット タイプの元のアドレスを 1 増やします。
これは std::vector の動作のように見えます。現在、ベクトルの「ベース」アドレスを見つけるのに問題があり、さらに大きな問題があります。インデックスでアクセスするにはどうすればよいですか? std::vector は要素のアドレスをどこに格納しますか?
追加情報:
コードは (アセンブリから読み取ったものから) MS Visual C++ 2005 でコンパイルされています (再生するには MSVCR80 dll が必要です)。
ベクトル内のアドレスは次のようになります。
(強調表示されたアドレスは、最初の要素として表示されたアドレスです - 最初のユニット ビルド)
これは、定数値を追加して反復できるようには見えませんか?
新しいアドレスが追加されるたびに、他のすべてのアドレスは完全に有効であり、変更されません。