0

WinDbg (ネイティブ x64 -- Itanium ではない) を使用して、マネージド DLL とアンマネージド DLL の両方をロードする x64 (アンマネージド) アプリケーションをデバッグしています。

アンマネージ DLL の 1 つにブレークポイントを設定しようとしています。ブレークポイントに到達してステップスルーすると、表示される指示が本来あるべきものとはまったく異なります。2 つの異なる逆アセンブラーを使用して、ステップ実行時に WinDbg が正しい逆アセンブリを表示していないことを確認しました。

アプリケーションにアタッチすると、次のような行が表示されます。

ModLoad: 00000000`XXXXXXXX 00000000`YYYYYYYY  C:\MyDLL.DLL

ベース アドレス XXXXXXXX を反映するように、2 つの逆アセンブラのアドレスを調整しました。

何が問題なのですか?

4

2 に答える 2

0

uf modname!FuncName は正しい結果を返しますか? 奇妙な場所でアンアセンブル/ブレークポイントを設定すると、WinDbg をだますことができる場合があります。x86/x64 は可変幅の命令セットであるため、命令の途中から読み始めると、逆アセンブラが混乱することに注意してください。

于 2009-12-21T20:47:31.553 に答える
0

どこかで、これが DLL の不適切なエントリ ポイントに関連している可能性があるという情報に気付きました。しかし、この情報をどうすればよいかわかりません (私は初心者です)。

于 2010-01-18T09:55:36.450 に答える