楽しみのために、クラスの vtable を変更して迂回を作成することにより、メンバー関数を迂回する簡単な迂回ライブラリを作成しようとしています。私は奇妙な振る舞いをしています。これがプログラム全体です(私はMSVC++ 2010を使用しています):
fixed
新しい関数のjmp
アドレスに正しく ing していますが、その後クラッシュします。ollydbg でクラッシュの原因を確認すると、非常に奇妙なことが起こります。何もせずにいくつかの命令を通り抜けます。デバッガーでa が表示push xxx
されている場合、スタックは変更されません。私が a を見ているところは、sretn 4
で満たされた機能の間の空間へと進み続けint 3
ます。なぜこれが起こっているのか誰にも分かりますか?
編集:気にしないで、答えを見つけました。