「exeファイルの中身って見られるの?」と疑問に思ったことはないでしょうか。
exeファイルはバイナリ形式のファイルですが、専用のツールを使うことで内部構造を確認したり、含まれているリソースを取り出したりすることができます。
この記事では、exeファイルの中身を見る方法について、バイナリエディタ・リソースエディタ・PE構造解析ツールなどを使った具体的な手順をわかりやすく解説しています。
プログラムの仕組みに興味がある方や、開発・調査目的でexeの内部を確認したい方はぜひ参考にしてください。
exeファイルの中身を見るための主なツールと方法
それではまず、exeファイルの中身を見るための主なツールと方法について解説していきます。
exeファイルの内部を確認する方法には大きく分けて、バイナリエディタで生のデータを見る方法、リソースエディタでアイコンや文字列を確認する方法、PE構造解析ツールで詳細な構造を分析する方法の三種類があります。
| ツールの種類 | 主な用途 | 代表的なツール |
|---|---|---|
| バイナリエディタ | 生のバイトデータの閲覧・編集 | HxD、010 Editor |
| リソースエディタ | アイコン・ダイアログ・文字列の閲覧・編集 | Resource Hacker、ResEdit |
| PE構造解析ツール | PEヘッダー・インポートテーブルなどの解析 | PE-bear、CFF Explorer |
| 逆アセンブラ | 機械語コードをアセンブリ言語に変換して解析 | x64dbg、Ghidra、IDA Free |
| 逆コンパイラ | .NETのexeをC#コードに近い形に変換 | dnSpy、ILSpy、dotPeek |
バイナリエディタでexeを開く方法
バイナリエディタはexeファイルの生のデータを16進数(HEX)形式と文字表示で確認できるツールです。
無料で使えるHxDなどをダウンロードしてインストールし、exeファイルをドラッグ&ドロップするだけで内容を表示できます。
exeファイルの先頭には「MZ」というマジックナンバー(4D 5A)があり、これがPE形式の実行ファイルであることを示すシグネチャです。
バイナリエディタで文字列を検索すると、exeに埋め込まれたエラーメッセージやバージョン文字列なども見つかることがあります。
リソースエディタでアイコンや文字列を確認する方法
Resource Hackerは、exeファイルに含まれるリソース(アイコン・ダイアログ・文字列・バージョン情報)を閲覧・編集できる定番ツールです。
Resource HackerでexeファイルをFile→Openで開くと、ツリービュー形式でリソースの一覧が表示されます。
アイコンの差し替えや表示される文字列の変更など、リソースの編集も可能なため、ローカライズ作業などにも活用されます。
PE構造解析ツールでヘッダー情報を確認する方法
PE-bearやCFF Explorerなどのツールを使うと、exeファイルのPEヘッダー・オプショナルヘッダー・セクションテーブル・インポートテーブルなど詳細な構造を視覚的に確認できます。
インポートテーブルを確認することで、そのexeがどのDLLのどの関数を使用しているかを把握でき、プログラムの挙動を推測する手がかりになります。
.NETのexeファイルを逆コンパイルして中身を確認する方法
続いては、.NETのexeファイルを逆コンパイルして中身を確認する方法を確認していきます。
C#などの.NET言語で作られたexeファイルは、中間言語(IL)の形式で格納されているため、逆コンパイルすることでC#に近いソースコードを再現できます。
dnSpyを使った逆コンパイルの手順
dnSpyは.NET製のexeやdllを逆コンパイルして、C#のソースコードに近い形で表示できるツールです。
dnSpyを起動し、File→Openからexeファイルを選択すると、アセンブリの構造がツリービューで表示されます。
各クラスやメソッドをクリックすることで、逆コンパイルされたC#コードをすぐに確認できます。
ILSpyやdotPeekを使う方法
ILSpyはオープンソースの.NET逆コンパイラで、dnSpyと同様に.NET製exeのソースコードを確認できます。
JetBrains製のdotPeekも高機能な逆コンパイラとして知られており、IDE連携が充実しています。
これらのツールは開発目的やデバッグ、自身が作成したexeの確認には有用ですが、他者の著作物の無断解析には著作権法上の問題が生じる可能性があるため注意が必要です。
ネイティブのexeを逆アセンブルする方法
C/C++などでコンパイルされたネイティブなexeファイルを解析するには、x64dbgやGhidra(NSA提供の無料ツール)、IDA Freeなどの逆アセンブラ・逆コンパイラを使います。
これらのツールは機械語をアセンブリ言語に変換して表示し、プログラムの処理フローを解析できますが、高度な専門知識が必要な作業です。
exeファイルの解析における注意事項
続いては、exeファイルの解析における注意事項を確認していきます。
exeファイルの内部を確認する行為は、目的や対象によって法的・倫理的な問題が生じる場合があります。
著作権とリバースエンジニアリングのルール
他者が作成したソフトウェアのexeファイルを逆コンパイル・逆アセンブルするリバースエンジニアリングは、著作権法やライセンス契約によって制限されている場合があります。
日本の著作権法では、一定の目的(相互運用性のための解析など)においては認められる場合もありますが、商業ソフトウェアのリバースエンジニアリングはほとんどの場合EULAで禁止されています。
自分で作成したプログラムや、解析を許可している教育・研究目的のソフトウェアの確認に限って活用しましょう。
マルウェア解析では安全な環境を使う
不審なexeファイルの解析を行う場合は、必ず仮想マシン(VirtualBoxやVMwareなど)上の隔離された環境で行うことが重要です。
不審なファイルを通常のPC環境で実行・解析すると、マルウェアに感染するリスクがあります。
VirusTotalなどのオンラインサービスでexeファイルをスキャンすることで、実行前に安全性を確認できます。
まとめ
この記事では、exeファイルの中身を見る方法について、バイナリエディタ・リソースエディタ・PE解析ツール・逆コンパイラなどのツールを使った手順を解説しました。
目的に合わせて適切なツールを選ぶことがexeファイル解析のポイントであり、.NET製exeにはdnSpyやILSpy、ネイティブなexeにはPE-bearやGhidraが適しています。
解析にあたっては著作権や法律上のルールを守り、適切な目的と環境のもとで行うことが大切です。
今回の内容を参考に、exeファイルの構造への理解を深めていきましょう。