VCで作成した*.exe がダイナミックリンクしている
ファイル名の一覧を取得したいと思っています。
Dependency Walker, Dependency Viewerなどの
ツールもありますが対象*.exeが何百ファイルもある為
1個1個手作業で確認するのも非常に辛い状況です。
そのためVBでツールを作成し、各*.exeに対し上記の情報を取得、
リンクしているファイルに間違いは無いかなどの
チェックを行いたいと考えています。
単にダイナミックリンクしているファイル名さえわかれば良いだけなのですが
対象 *.exe に対しどういうアプローチで
取得すれば良いのか?皆目検討がついていません。
ご存知でしたら御教授していただけると助かります。
開発環境は VB6SP5 、OSは Win2000SP4 です。
*.exe自身をバイナリエディタで覗いた所
DLL名が中に書かれていることがわかりました。
直接ファイルをバイナリオープンして覗いてみる以外に
方法はないのでしょうか。。。
> 対象 *.exe に対しどういうアプローチで
> 取得すれば良いのか?
低レベルな操作でも構わなければ、IMPORT Directory Tableを列挙して、
Name RVAフィールドが指す文字列を調べる事で取得できるかと思います。
Public Type IMAGE_IMPORT_DESCRIPTOR
Characteristics As Long
TimeDateStamp As Long
ForwarderChain As Long
Name As Long '☆ここ☆
FirstThunk As Long
End Type
MSDNライブラリの、以下の項を参照してみてください。
[技術仕様書]
└[技術仕様書 (日本語)]
└[プラットフォーム]
└[Microsoft Portable Executable および Common Object File Format 仕様書]
├[3. ファイル ヘッダ]
│└[3.4 オプション ヘッダ(通常はイメージのみ)]
│ └[3.4.3 オプション ヘッダのデータ ディクショナリ(イメージのみ)]
├[5. 他のファイル内容]
│└[5.8 遅延ロード インポート テーブル (イメージのみ)]
│ └[5.8.3 名前]
└[6. 特殊セクション]
└[6.4 .idata セクション]
└[6.4.1 インポート ディレクトリ テーブル]
魔界の仮面弁士様
情報ありがとうございます。非常に助かります。
早速御教授いただいた情報を元に調査検討してみます。
どうもありがとうございました。
今回始めてPEフォーマットという言葉を知り
PEフォーマットについていろいろ調べていた所、
サンプルコードも見つかり
なんとか無事読み出すことが出来ました。
どうもありがとうございました。
ツイート | ![]() |