他人の空似自作物置場

dll_import_list.zip/Readme.txt

プログラム名:dll_import_list

用途:
.dllや.exeでimportしている外部関数一覧を表示します。

使い方:
・コマンドプロンプトにて「dll_import_list.exe #{対象の.dllや.exeへのパス}」

ファイル解説:
dll_import_list.exe プログラム本体
Readme.txt          今読んでいるこれ
dll_import_list     ソースコードなど
dll_import_list.sln ビルド用ソリューションファイル


免責事項:
これに同梱されたプログラムその他が原因で発生したいかなる損害も当方は一切関知しません。
また、全てのプログラムがウイルスではないという証明も、ウイルスに感染していないという証明もありません。
自己責任でお使いください。


Q&A:
  Q:importしている関数って何?
  A:要するに、利用しているAPIの一覧です。

  Q:動的リンクしているのもわかる?
  A:わかりません。
  そういったものはデバッガーをかませるなどして調査してください。

  Q:実際にリンクしている.dllとは別の名前が表示されるんだけど
  A:.dllには別.dllへリダイレクトする指定が可能なので、その指定が入っていると思われます。
  また、Win7以降であればVirtualDLLによりリダイレクトされている可能性もあります。

  Q:これ何の役に立つの
  A:主に解析用途です。
  何のAPIを呼び出しているかがわかれば、どういったアプリなのかはなんとなくわかりますし
  dllインジェクションを試みるなら、その方針を考えるのにも使えます。

  Q:これで指定した.dllって実行されるの?
  A:LoadLibraryを用いずに自前で読み込んでいるので
  本アプリに脆弱性がない限りは、悪意ある.dllを対象に実行しても問題はありません。

  Q:クラッシュしたんだけど
  A:LoadLibraryを用いない独自のローダーもどきを使用している上に
  チェックが甘いので、場合によりクラッシュすることもあり得ます。
  連絡をもらえれば修正しますので、下記メールアドレスまでどうぞ。

  Q:その他バグをみつけた or 動作しない or 要望がある
  A:確認次第対応可能であれば対応します。
  公開しても問題が無いメールアドレスにて
  下部に記載されたアドレスまでメールをどうぞ。


メールアドレス:sweetie(あっと)click3.org


ライセンス:
・本ライセンスにおいて、全ての条項は「変更の有無を問わず、明示暗示を問わず、商業慈善を問わず、
	個人法人を問わず、保持使用を問わず、有料無料を問わず、全体一部を問わず、コピー派生を問わず
	実行ファイルソースファイルを問わず、故意錯誤を問わず」と装飾されている物として扱う。
・著作権者は本ソフトウェアに関する一切の保障義務をもたない。
・上記条項唯一の例外として、本ライセンスに違反した場合を除いて著作権者から
	本ソフトウェアに関する一切の法的措置を受ける事が無い事のみ保証される。
・著作権者やその他保持者がこのライセンスの範囲で行う活動に支障が無い範囲であれば何を行っても構わない。
・上記条項の”何を行っても構わない”には本ソフトウェアの製作者を偽っての再配布も含まれる。
・全ての権利の行使において、著作権者への連絡、著作権者やライセンス条項の記載、
	適用ライセンスなどの制限は一切存在しない。
著作権者名:sweetie


面倒な人向けライセンス解説:
作者やライセンスの記載義務すらありません。
再配布や改造など申告なし記述なしで好きにできます。


技術情報(と、どうでもいい話):
過去にLoadLibraryを自作しようとした際の副産物。
セクションなど仮想アドレスを持つ物をすべてメモリー上に割り当てるまでをやっている。
理由としては、IATがどのセクションに属するかはとくに規定がないため。
理解を深めるためという名目で各種構造体の定義は独自の物を使っている。
winnt.hにちゃんとした定義は置いてあるので、特に理由がないならそちらを使うことを勧める。
↑せっかくなので2.00でwinnt.hを使うよう書き直した。
IATにはOriginalFirstThunkという定義と、FirstThunkという実体があるのだが、
ロード時リンク前はどちらも同じ物を指していて、リンク時にFirstThunkを書き換えて動作する仕組み。
なので、リンク後にこいつはどのAPIを指しているかの情報が要らない場合はFirstThunkだけあれば動く。
というわけで、OriginalFirstThunkがある前提のコードからFirstThunkを使うように修正を入れたのが2.00。