2012-04-10 7 views
1

PEファイルのインポートテーブルを読み込んでいますが、IMAGE_IMPORT_DESCRIPTOR構造体からインポートするDLLの名前を取得できますが、見つかりませんDLLパスはどこにありますか。 どうすれば読むことができますか?PEインポートテーブルからDLLのフルパスを取得する

+0

代わりに実行時にこれを行うオプションですか?それはずっと簡単でしょう。 –

+0

いいえ...私はexeが動作する前にこのことを知っておく必要があります。 :/ – Idov

+1

これは手動で行う必要がありますか?あなたが望むパスであれば、 'depends'コマンドラインを実行することでこれを達成できます:http://www.dependencywalker.com/help/html/hidr_command_line_help.htm –

答えて

4

インポートされたDLLへのパスを取得できるようにするには、実行時まで待つ必要があります。これは、答えがライブラリがロードされている時点の実行時環境に依存するためです。

例えば、2つの異なるプログラムは、2つの異なるDLL検索パスを持つことができます。したがって、これらの2つのプログラムでは、インポートされたDLLへのパスが異なる可能性があります。

+0

ええと...私はこの情報を直前に必要としているので実行、私はWindowsのように、ファイル名のためにこれらのパスを自分自身で "検索"することができます。右? :)理論では – Idov

+0

はい、しかし、ウィンドウアルゴリズムに完全に一致するには非常に困難になります。 –

1

実行できません。システムは、実行時に適切な場所から対応するdllをロードします。その時点までの道のりを理解することは不可能です。

1

PEイメージには依存性の名前と拡張子が含まれていません。

関連する問題