Exportテーブル内に含まれるすべてのWin32(PEファイル)関数またはクラスメソッドを知る必要があります。この情報はどこで入手できますか?PEファイル形式のすべてのセクションを理解していますが、続行する方法がわかりません。
2 に答える
Visual Studio C ++ Expressdumpbin
に付属しているものを使用するか、 OpenWatcom C / C ++パッケージをダウンロードすると、それに関連付けられています...wdump
Watcom実行可能イメージダンプユーティリティバージョン1.8を開きます 一部Copyright(c)1984-2002 Sybase、Inc.無断複写・転載を禁じます。 ソースコードは、Sybase Open WatcomPublicLicenseの下で入手できます。 詳細については、http://www.openwatcom.org/を参照してください。 使用法:wdump [-?abdefipqrsx] [-A] [-B] [-D] [-S] DOS EXEファイル、WindowsまたはOS / 2実行可能ファイル、またはDLLであり、 PharLap実行可能ファイル、NLM、QNX実行可能ファイル、 ELF実行可能ファイル、共有ライブラリまたはオブジェクトファイル、 またはCOFFオブジェクト。
編集:プログラムによる方法でこれらのエクスポート関数を直接抽出することはできません。上記のユーティリティは、コマンドラインスイッチを使用してアドレスを表示します。これには、「LoadLibrary」、「FreeLibrary」のエクスポート関数のアドレスの表示も含まれます。'GetProcAddress'の呼び出しが内部的に使用される場合、エクスポートされた関数の関数ポインターを返す前に、エクスポートされた関数の関連アドレスを見つけるためにエクスポートディレクトリを検索します。
Edit#2: @UsMan:エクスポート関数のアドレスをダンプできますが、関連するEXEを分解し、呼び出しスタックを調べてパラメーターを計算する必要があるため、署名を見つけるのは簡単ではありません。それ以外に、サードパーティのDLLがあり、ヘッダーファイルとlibファイルが付属していない場合は、関数の署名を表示します...コードを分解する以外はほとんど運が悪いです...リリースEXEまたはDLLについて話すと、デバッグ情報が削除されてデバッガーにロードされ、スタック、使用される呼び出し、および重要なポイントとなるパラメーターが処理されるため、より困難になります。
質問を編集して、私が自分の足を撃ち、この回答に対する不満の結果として反対票を投じられるリスクがあるため、あなたの目的がより明確になるようにしてください。それはMFCですか。 ATL、DLL、EXE、DLLなどとは...
エクスポートテーブルには、エクスポートされた関数のエントリのみが含まれます。利用可能な情報をデバッグする場合、通常、他のほとんどの機能のエントリもあります。それがなければ、実行可能ファイルにエクスポートされていない関数に関する情報が含まれていない可能性が非常に高くなります。