*.exe がダイナミックリンクしているファイル名の一覧を取得したい

解決


ruru  2004-11-12 23:10:29  No: 86653

VCで作成した*.exe がダイナミックリンクしている
ファイル名の一覧を取得したいと思っています。

Dependency Walker, Dependency Viewerなどの
ツールもありますが対象*.exeが何百ファイルもある為
1個1個手作業で確認するのも非常に辛い状況です。

そのためVBでツールを作成し、各*.exeに対し上記の情報を取得、
リンクしているファイルに間違いは無いかなどの
チェックを行いたいと考えています。

単にダイナミックリンクしているファイル名さえわかれば良いだけなのですが
対象 *.exe に対しどういうアプローチで
取得すれば良いのか?皆目検討がついていません。

ご存知でしたら御教授していただけると助かります。

開発環境は VB6SP5 、OSは Win2000SP4 です。


ruru  2004-11-16 04:01:57  No: 86654

*.exe自身をバイナリエディタで覗いた所
DLL名が中に書かれていることがわかりました。
直接ファイルをバイナリオープンして覗いてみる以外に
方法はないのでしょうか。。。


魔界の仮面弁士  2004-11-16 08:24:38  No: 86655

> 対象 *.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 インポート ディレクトリ テーブル]


ruru  2004-11-16 21:07:38  No: 86656

魔界の仮面弁士様

情報ありがとうございます。非常に助かります。
早速御教授いただいた情報を元に調査検討してみます。

どうもありがとうございました。


ruru  2004-11-17 06:39:31  No: 86657

今回始めてPEフォーマットという言葉を知り

PEフォーマットについていろいろ調べていた所、
サンプルコードも見つかり
なんとか無事読み出すことが出来ました。

どうもありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加