

        i.j Shell Property Sheets Export/Import 32 ver.1.01 簡易説明書


概要
        　エクスプローラのプロパティにて、実行ファイルの PE 構造、インポートと
        エクスポートを表示する。
        　VC++ 名の時は、可能な限りデコードする。


著作権者
        　本ソフトウェアの著作権は、i.j こと 加藤 勲 が有しています。
        E-mail : VYG04631@nifty.ne.jp
        Web    : http://member.nifty.ne.jp/~ij/


分類
        フリーソフト


動作環境
        Windows 95/98 (3.1+Win32s, NT 不明)
        要 MFC42.DLL, MSVCRT.DLL, MSVCP50.DLL


帰属
        MS-Windows 95/98 は米国マイクロソフト社の登録商標です。


ご使用の前に
        　本ソフトウエアを使用する前に、この章を最後までお読み下さい。

        ◎本ソフトウエアは、i.j こと 加藤 勲 が、その全権を所有しています。
        ◎この権利は、私が国籍を持つ日本国の法律、および、国際法によって
        　保護されています。
        ◎この権利は、誰にも譲渡されることはありません。

        ◎本ソフトウエアは、フリーソフトです。

        ・本ソフトウエアを使用する時に、お金を払う必要はありません。
        ・i.j は 本ソフトウエアを無償で供給していますが、本ソフトウエアを
        入手する時にかかった費用については、i.j は一切関与しません。
        ・本ソフトウエアは、以下を除いた方々は、自由に使うことができます。

                ９９年７月現在、該当者はいません。

        ◎本ソフトウエアは、自由に配布してかまいません。

        ・本ソフトウエアの配布を妨げてはいけません。
        ・本ソフトウエアの配布を、i.j に連絡する義務は現在、免除しています。
        ・配布に際しては、オリジナル・アーカイブ内の全てのファイル、および、
        文章が含まれていなければなりません。
        ・オリジナル・アーカイブを改変した時は、改変個所、改変者名と、改変者の
        連絡先を明記しなければなりません。　また、改変を、i.j に連絡する義務は
        現在、免除しています。
        ・オリジナル・アーカイブには無いファイル、および、文章については、
        i.j は一切関与しません。

        ◎本ソフトウエアによって生じた全ての損害に、i.j は一切責任を取りません｡

        ・i.j は 本ソフトウエアにバグが無いことを保証しません。
        ・i.j は 本ソフトウエアのバグを修正する義務を負いません。
        ・i.j は 本ソフトウエアに対する改変の依頼を受ける義務を負いません。
        ・i.j は 本ソフトウエアのサポートを、いつでも打ち切ることができます。
        ・同梱のソースを改変して作成された 本ソフトウエアの亜種によって生じた
        問題・損害については、i.j は一切関与しません。改変者に連絡してください｡

        ◎本ソフトウエアを使用することに不安があるのなら、ただちに使用を
        　中止してください。

        ・i.j は 本ソフトウエアの使用を強要しません。
        ・本ソフトウエアは、あなたの好きな時に使用開始でき、あなたの好きな時に
        使用中止できます。


インストール
        　ijexp32.inf を右クリックし、インストールを選んで下さい。
        「再起動しますか？」と聞いて来た時は、再起動後から本ソフトウエアが
        使用可能になります。聞いて来ない時は、すぐに使用可能になります。


アンインストール
        　以下の手順でアンインストールします。

        1) "コントロールパネル" の "アプリケーションの追加と削除" を選ぶ。
        2) "i.j Shell Property Sheets Export/Import 32 (Remove only)" を
          クリックする。
        3) "追加と削除" ボタンを押す。
        4) 問答無用で削除開始します。

        　「削除してもいいですか」と聞いて来ないのは、マイクロソフト側の
        バグだと思うのですが...


レジストリ
        　Win95/98 の場合、以下のレジストリが追加されます。
        上記の "アンインストール" で、全ての変更は削除されるはずです。

        +- HKEY_CLASSES_ROOT
        |  +- CLSID
        |  |  +- 00000001-23D0-0001-8000-004026419740  ←追加
        |  |  |  +- 以下全部
        |  |  +- 00000002-23D0-0001-8000-004026419740  ←追加
        |  |  |  +- 以下全部
        |  |  +- 00000003-23D0-0001-8000-004026419740  ←追加
        |  |     +- 以下全部
        |  +- dllfile
        |  |  +- shellex
        |  |     +- PropertySheetHandlers
        |  |        +- 00000001-23D0-0001-8000-004026419740  ←追加
        |  |        +- 00000002-23D0-0001-8000-004026419740  ←追加
        |  |        +- 00000003-23D0-0001-8000-004026419740  ←追加
        |  +- exefile
        |     +- shellex
        |        +- PropertySheetHandlers
        |           +- 00000001-23D0-0001-8000-004026419740  ←追加
        |           +- 00000003-23D0-0001-8000-004026419740  ←追加
        +- HKEY_LOCAL_MACHINE
           +- SoftWare
              +- Microsoft
                 +- Windows
                    +- CurrentVersion
                       +- Uninstall
                          +- ijexp32  ←追加


使い方
        　.dll の場合、プロパティに ExeHdr,Export,Import タグが追加されます。
        .exe の場合、プロパティに ExeHdr,Import タグが追加されます。

        　ExeHdr タグでは、.exe や .dll の PE ヘッダー情報を表示します。
        DOS ヘッダーと PE ヘッダーの基本部分を表示させる時は Hdr ボタンを、
        データディレクトリを表示させる時は Dir ボタンを、セクションを
        表示させる時は Sec ボタンを押してください。
        　Save ボタンを押すと、３つまとめてファイルに保存できます。

        　Export タグでは、.dll のエクスポート名がリストアップされます。
        VC チェックボックスが ON の時は、VC++ 名を解析して、可能な限り
        クラス構造を再構築します。OFF の時は、１６進４桁の順序数と
        非解析のエクスポート名がリストアップされます。
        　どちらの時も Save ボタンで、ファイルに保存できます。
        特に OFF の時のファイルは、エクスポート名リストとして、
        次の Import タグで使用可能です。

        　Import タグでは、.exe や .dll が使用するサーバー名、順序数、
        そしてインポート名がリストアップされます。VC チェックボックスが
        ON の時は、可能な限りインポート名を C++ 構文に解析して表示します。
        FN チェックボックスが ON の時は、サーバー名のみ表示します。
        　括弧で囲われている順序数は、参考値です。サーバーによっては
        間違った値の時があります。どれが正しいのか間違っているのか見分ける
        客観的な方法を、私は知りません。どちらにしても、インポート名は
        正しいものです。
        　括弧に囲われていない順序数は、実は、クライアントにはインポート名が
        書かれていません。順序数のみ書かれています。これではあんまりなので、
        順序数とエクスポート名のリストを元に、エクスポート名を補っています。
        このため、サーバーのバージョンによっては、間違ったエクスポート名が
        表示される可能性があります。また、エクスポート名リストに無いものは
        <unknown name> として表示されます。
        　こちらも、Save ボタンで、ファイルに保存できます。


VC++ 名の解析
        　添付の vcbungle.txt を参照して下さい。


エクスポート名リスト
        　代表的ないくつかのサーバーのリスト(.exp)を添付しています。
        特に mfc??.dll のエクスポート名リストは、VC++ を持っていないと
        作成できない様です。リリース版のみ添付しています。

        　デバッグ版 mfc??d.dll のリストは、サイズの関係で添付していません。
        必要な方は VC++ を持っていると思いますので、各自で作成して下さい。
        以下のファイルを加工します。

                <VC++ のディレクトリ>\mfc\src\intel\mfc??d.def

        　このファイルを awk で変換します(perl は知らないので)。

            {
                if ($2 == "@") {
                    printf "%04x,%s\n", $3, $1
                }
            }

        　ちなみに、.def の方は MFC の一部なので、許可無く配布できません。
        　添付の加工して作った mfc??.exp は、MFC として使えなくなっていますが、
        ひょっとすると配布するのは、まずいかもしれません(法律の専門家で無いので
        判断しかねます)。しかし、これが無いと困る実行ファイルも多いので、
        添付しています。ですから、その内、添付しなくなるかもしれません。

        　一般のサーバーの場合、Export タグで VC チェックボックスを OFF にして
        保存したファイルを、エクスポート名リストとして使用できます。
        格納先は、<Windows システムディレクトリ>\ShellExt\ ディレクトリです。

        　しかし、インポートの時、順序数だけでも関数アドレスが取得できるので、
        無名のエクスポート関数が存在します。この場合、エクスポート名リストを
        作成しても、いくつかのインポート名は <unknown name> になってしまいます。


参考文献
        MSJ #31 : Win32 PE ファイルフォーマットを解析する : Matt Pietrek


履歴
        制作日    ver.     概要
        10may99   1.00     VC++ 名の解析のまとめと、シェル拡張プロパティの
                           習得のために作成した。
        10jul99   1.01     PE ヘッダータグ追加。
                           Import タグに FN ボタン追加。

