Hex データ比較
Hex 差分は、バイナリファイルをバイトとして比較します。ABDiff では生の Hex 表示が常に利用でき、認識されたバイナリ形式では解析済みの 構造 ビューも表示できます。
Hex 比較を開始する方法
ドラッグ&ドロップ
- 1 つのファイルは単独の Hex ビューアで開きます。
- 2 つのファイルは Hex 差分として開きます。3 つ以上のファイルでは最後の 2 つが使われます。
ファイルメニュー
- ファイル ▸ 16進数ビューアで開く… は 1 つのファイルを開きます。
- ファイル ▸ 16進数差分として開く… は 2 つのファイルを開きます。
- ファイル ▸ 現在のファイルを16進数で開く は現在のファイルを Hex 差分として開きます。
Terminal
- 1 つのファイル:
abd --hex file - 2 つのファイル:
abd --hex file1 file2
Hex ビューアのレイアウト

内容は左から右に次の順で表示されます。
- 16 進数のバイト
- デコード済みテキストプレビュー
- 利用可能な場合は構造ツリー
Hex 差分比較
Hex 比較には 2 つの配置レイアウトがあります。
- オフセット がデフォルトです。左の byte
nと右の bytenを比較します。 - 再同期 は分析モードです。挿入や削除の後で配置を復元し、後続の一致領域が再び揃うようにします。
再同期は、1 つのずれた領域のせいでファイルの残り全体が変更されたように見える場合に役立ちます。再同期では、同じ横行が必ずしも両側の同じ絶対オフセットを意味するわけではありません。揃った領域が異なる生の位置から来ている場合、ABDiff は意図的に左右で異なるオフセットを表示します。
Hex と構造
生の Hex モードでは、オフセット、16 進数のバイト、デコード済みテキストプレビューが表示されます。エンコーディングコントロールが影響するのはそのテキストプレビューだけで、生のバイトが真実のソースです。
ABDiff がバイナリ形式を認識すると、Hex / 構造 コントロールが追加されます。構造モードでは、形式要素がツリーとして表示され、要素名、オフセット、長さ、デコード済み値、パーサ診断を確認できます。構造行を選択すると、対応するバイト範囲が選択されます。構造行をダブルクリックすると Hex モードに戻り、その範囲が表示されます。
単一ファイルの Hex ビューアでは、対応ファイルの場合に Hex バイトの横に構造ツリーを表示できます。未対応ファイルでは、生の Hex が全幅を使います。2 ファイルの Hex 差分では、少なくとも片側が認識されると構造モードが利用できます。また 差分のみ表示 は、構造行にも生の Hex 行にも適用されます。
形式固有のフィールドでは、そのフィールドのバイト順やテキストデコードなどの詳細が決まる場合があります。たとえば ZIP 構造フィールドは ZIP の規則に従って解析されますが、Hex テキストプレビューは引き続きエンコーディングコントロールで変更できます。
対応している構造形式には次が含まれます。
- アーカイブ: 7z, GZIP, RAR, TAR, ZIP。
- Apple と構造化データ: Apple binary plist, Apple bookmark, BSON, MessagePack。
- 証明書とセキュリティコンテナ: CMS, DER, PEM, PKCS#12。
- 画像、音声、動画、カラー、3D コンテナ: CUBE LUT, FLAC, GIF, GLB, HEIF / HEIC, JPEG, MIDI, MP3, MP4 / MOV, PNG, TIFF, WAV, WebP。
- 実行ファイルとオブジェクトファイル: ELF, Mach-O, PE/COFF。
- データベースとネットワークキャプチャ: PCAP, PCAPNG, SQLite, SQLite rollback journal, SQLite WAL。
通常は別のビューアで開く形式でも、Hex を強制すると構造として検査できる場合があります。たとえば GIF、TIFF、WebP は通常は画像比較として開き、PEM は通常はテキストとして開きます。
表示オプション
Hex ビューでは、表示メニューまたはツールバーコントロールを使って表示を調整します。
- 差分のみ表示 は同じ行を隠し、変更領域に集中できるようにします。これは表示フィルタだけであり、比較モードは変わりません。
- 比較の配置 では オフセット と 再同期 を切り替えられます。
- 1行あたりのバイト数 は、各行に折り返されるバイト数を 8、16、32 から変更します。
- 左右を入れ替え は、2 つのファイルが読み込まれている場合に左右を反転します。
1行あたりのバイト数 を変更しても、基礎となる差分結果は変わりません。
バイトを検査する
バイトをクリックして選択します。Shift クリック、または Shift と矢印キーを使うと選択範囲を拡張できます。単一ファイルビューでは、下部のインスペクタに選択されたオフセット、長さ、一致する構造要素、値のプレビューが表示されます。
値メニューまたは右クリックの 形式を選択してコピー を使うと、選択したバイトを次の形式で検査またはコピーできます。
- 空白区切り Hex または連続 Hex
- バイナリ、Base64、C 配列、Swift 配列
- バイトが正しくデコードできる場合の ASCII または対応する Unicode とレガシーテキストエンコーディング
- 選択長が値サイズに一致する場合の整数と浮動小数点値
- 16 バイトが選択されている場合の GUID
LE / BE コントロールは、複数バイト数値を little-endian または big-endian として解釈する方法を設定します。解析済み構造がバイト順を固定している場合、ABDiff はそのバイト順を表示し、手動変更を無効にします。
左上のファイル情報ピルを使うと、概要メタデータを開けます。構造化ファイルでは、同じポップオーバーに、コンテナ概要や単一のバイト範囲に結びつかない形式固有の情報など、パーサメタデータも含まれます。
検索とオフセットへ移動
編集 ▸ 検索…
を使って、アクティブなバイナリ面を検索します。Hex
ビューでの検索はバイト検索に対応しています。1F 8B、0x1F8B、1f-8b
のような有効な Hex 構文は生のバイトを検索し、Papyrus
のようなテキストはモードを変更せずに同じバイトを UTF-8
として検索します。完全なバイトを表せない Hex
風の入力は、推測せず無効な検索として報告されます。
構造ビューでは、検索は解析済み構造の名前と値に自動的に一致します。検索モードの選択はありません。アクティブなビューが検索対象を決定します。
移動 ▸ オフセットへ移動…
を使うと、バイトオフセットへジャンプできます。オフセットはデフォルトでは
16 進数です。明示的な 16 進数には 0x、10 進数には
d:、選択バイトからの相対オフセットには + /
- を使います。
ヒストグラムとエントロピー
ツールバーのヒストグラムボタンを使うと、バイト分布、エントロピー、上位バイト値、高エントロピーやパディング多めなどの大まかな分類を確認できます。単一ファイル Hex ビューでは、ヒストグラムパネルが Hex 行の横に エントロピーマップ の帯を表示し、ファイル内をすばやく移動できる場合もあります。
読み取り専用の動作
Hex データ比較は読み取り専用です。
- テキスト編集コマンドは表示されません。
- 保存やパッチとして保存には対応していません。
- デコード済みテキスト列と構造ツリーは検査の補助です。比較の真実のソースは生のバイトです。
キーボード早見表
| アクション | ショートカット |
|---|---|
| 選択を左へ移動 | ← |
| 選択を右へ移動 | → |
| 選択を上または下へ移動 | ↑ / ↓ |
| バイト選択を拡張 | ⇧ と矢印キー |
| 他のペインへ切り替え | ⇥ |
| 右ペインまたは構造からフォーカスを戻す | ⇧⇥ |
| 選択した構造行を展開 | → |
| 選択した構造行を折りたたむ | ← |