ファイル・バイナリ・圧縮

実行ファイルヘッダ解析三形式の構造をバイト単位で追う

ローカルファイルか小さなサンプルを選び、ヘッダーを手動で解析します。

実行ファイルヘッダ解析

バイナリ入力

ELF・PE・Mach-Oファイルを1つドロップするか選択してください。

ファイル未選択

ブラウザー内でのみ読み取り、アップロードも実行もしません。

ヘッダー結果

ファイルまたはサンプルを選んでください。

ファイルまたはサンプルを選んでください。

ビルドが読み込めないとき、実行ファイルヘッダ解析ならアーキテクチャ、入口点、セクションのオフセットを先に確認できます。ELFヘッダビューアやELFインスペクタを探す目的にも対応します。

実行ファイルヘッダ解析はPEヘッダ解析とMach-Oヘッダ確認も同じページで扱い、各形式の固有名を残します。コードは実行しません。

実行ファイルヘッダ解析を使う理由

実行せずに構造と実際のバイトを照合できます。

三形式を固有の構造で表示

実行ファイルヘッダ解析はELFのプログラムヘッダーとセクションを分け、DOSヘッダーからPEの追加ヘッダーをたどり、Mach-Oのロードコマンドを列挙します。

異なる三種類のヘッダー配置と、選択したフィールドにつながるバイト範囲。

ユニバーサル形式の各スライスを確認

Mach-Oには複数のアーキテクチャが入る場合があります。arm64またはx86-64を選び、そのスライス自身のオフセット、サイズ、ヘッダーを確認できます。

一つのコンテナー内に分かれた二つのアーキテクチャ領域と、それぞれのヘッダー。

入力から正しいオフセットまで

01

読み込む前にサイズを見る

ファイル名とバイト数を先に表示します。32MiB超は読込前に拒否します。内蔵サンプルは実行できない小さなヘッダーです。

  • 拡張子ではなくマジックバイトで形式を決めます。
02

明示的に解析する

「ヘッダーを解析」またはCtrl/Cmd+Enterを使います。ファイルを替えると前の結果は失効し、再解析が成功するまで出力は無効です。

  • ELFにセクション表がないことは合法ですが、範囲外を指す表は不正です。
03

範囲を追って出力する

フィールドを選ぶと絶対オフセットと先頭の生バイトが見えます。ユニバーサルMach-Oではスライス変更後に再解析してJSONを出力します。

  • JSONに元の実行ファイルのバイト列は含まれません。

読み取る構造の詳細

両エンディアンのELF32とELF64

ファイル、プログラム、セクションの各ヘッダーを完全な整数幅で読みます。拡張番号は0番の項目から解決し、表がない場合は空と表示します。

PE32とPE32+のヘッダー連鎖

DOSヘッダーからPE署名、COFF、オプショナルヘッダー、セクション表へ進みます。入口RVAとイメージベースは区別します。

thinとuniversalのMach-O

32/64ビットのヘッダー、ロードコマンド、セグメント、セクションを列挙します。fat形式では壊れたスライスも範囲情報を残します。

保存されたバイトへ戻れる

フィールドから十六進数のファイル範囲を確認できます。ELFのNOBITSやMach-Oのゼロ埋めセクションに存在しないディスク上のバイトは作りません。

解析できる範囲と制限

読み取り専用でローカル
ブラウザーのFile APIで読むだけです。アップロード、URL取得、ファイル内コードの実行はしません。署名らしいデータがあっても安全性は判定できません。
逆アセンブルは対象外
ELFのシンボルとDWARF、PEのインポートとリソース、Mach-Oのdylibパスは深く解析しません。ソースを復元する機能もありません。
32MiBと厳密な境界検査
最大33,554,432バイトです。表の件数、幅、オフセット、長さをファイルまたはスライスの範囲内で確認してから走査します。
JSONは構造だけ
コピーと保存には現在のスライスのフィールド、フラグ、範囲が入ります。元の実行ファイルの中身は含めず、公開URLも作りません。

実行ファイルヘッダ解析の質問

バイナリはどこかにアップロードされますか?

いいえ。実行ファイルヘッダ解析はブラウザーのFile APIでローカルに読み、ファイルを送る処理を持ちません。

逆アセンブラや逆コンパイラですか?

いいえ。ヘッダー、セクション、セグメントとバイト範囲を示します。命令列の翻訳やソースの復元はしません。

対応アーキテクチャは?

ELF、PE、Mach-Oのヘッダーに書かれたCPU種別を示します。未知の値も数値のまま残します。

どのくらいのサイズまで開けますか?

32MiBまでです。大きいファイルは読込前に拒否します。大型ファイルはreadelf、dumpbin、otoolなどを使ってください。

strip済みと出ました。シンボルはどこへ?

このページはシンボルを深く解析しません。strip後もセクション表が残る場合があり、表そのものがないELFも合法です。

ELFのプログラムヘッダーとセクションヘッダーはどう違いますか?

前者はロードされるセグメント、後者はリンクや解析の単位を記述します。実行ファイルヘッダ解析では別の一覧に分けます。

ほかに質問がありますか?

次の実行ファイルをヘッダー解析

まず三形式のサンプルを試し、次に自分のビルドを開いてください。実行ファイルヘッダ解析のJSONを共有する前に重要なオフセットを確認できます。

選んだファイルはこのタブ内だけに残ります。