6

デバッガー (OllyDbg など) を使用してプログラムをデバッグすると、逆アセンブルされたアセンブリ コードで、次のような関数名が表示されます。

push 0
call msvcrt.exit

デバッガーは関数名をどのように認識しますか? 彼らはどこから来たのか?マシンコードでは、 として表されcall addressます。では、デバッガーはどのようにそれを認識しているのでしょうか?

4

1 に答える 1

4

コンパイラは「シンボル」ファイルを生成し、特定のアドレスまたはオフセットに対応するシンボルの名前をデバッガに表示する方法を提供します。これはシステムに大きく依存します。たとえば、Windows の VS ツールチェーンはこれらのシンボルを個別の .pdb ファイルに配置しますが、一部の UNIX フレーバーでは、これらのデバッグ シンボルは実行可能ファイルに埋め込まれます。編集:コメントによると、OllyDbg は、実行可能ファイルに埋め込まれたインポート アドレス テーブルからシンボルを取得します。

シンボルが実行可能ファイルに埋め込まれている場合、コンパイラ ベンダーはこれらのシンボルを削除するツールを提供します。たとえば、GNU はstripツールチェーンを操作するためのユーティリティを提供しています。

于 2013-09-15T17:57:31.360 に答える