1

test1.exeサンプル ライブラリを使用するサンプル プログラムがありますtest2.dll

  • test.dllA()B()同じタイプの関数が含まれています。
  • test1.exe呼び出しAてから終了します。

ここで次の呼び出しを見つけましたA(): test.exe が A を呼び出す行 ( http://i.stack.imgur.com/5W9Jd.jpg )

さて、私が間違っていなければ88FDFFFF、 の正しいオフセットに置き換える必要がありますが、の代わりに呼び出されるB()ように計算するにはどうすればよいですか?B()A()

4

3 に答える 3

2

これが x86 呼び出し相対命令の場合、オフセット値は、呼び出しに続く命令のアドレス (= 呼び出し命令の場所 + 5 バイト) をターゲットのアドレスから減算することによって計算されます。したがって、オフセットをアドレス(B)-アドレス(callinstruction+5)になるようにパッチする必要があります。

于 2012-12-03T04:24:52.693 に答える
0

が test1.exe にインポートされている場合bは簡単です。それ以外の場合は、LoadLibrary と GetProcAddress を使用する必要があります。

を押して、インポートされているかctrl+Nどうかを確認します。b

于 2016-03-14T15:25:12.460 に答える
-1

最初に asm の基本を学び、HIEW hexeditor/disassemblyr を使って単純なコードを変更することをお勧めします。

于 2012-12-04T18:31:40.453 に答える