0

楽しみのために、クラスの vtable を変更して迂回を作成することにより、メンバー関数を迂回する簡単な迂回ライブラリを作成しようとしています。私は奇妙な振る舞いをしています。これがプログラム全体です(私はMSVC++ 2010を使用しています):

fixed

新しい関数のjmpアドレスに正しく ing していますが、その後クラッシュします。ollydbg でクラッシュの原因を確認すると、非常に奇妙なことが起こります。何もせずにいくつかの命令を通り抜けます。デバッガーでa が表示push xxxされている場合、スタックは変更されません。私が a を見ているところは、sretn 4で満たされた機能の間の空間へと進み続けint 3ます。なぜこれが起こっているのか誰にも分かりますか?

編集:気にしないで、答えを見つけました。

4

2 に答える 2

0

MSVC の場合、Microsoft Research には "Detours" というライブラリがあります: http://research.microsoft.com/en-us/projects/detours/ 既に利用可能で、32 ビット バージョンは無料だと思いますので、使用することをお勧めします。

于 2011-01-22T20:07:21.637 に答える
0

問題が見つかりました。アドレスを正しく計算するには、アドレスから 5 を引く必要があります。これは、命令の最後ではなく最初からの相対アドレスであるためです。

于 2011-01-22T18:41:39.650 に答える