オープンソースプロジェクト
WerWolv/ImHex avatar
WerWolv/ImHex

ImHexをパターン解析付きバイナリエディタとして使う

ImHex はリバースエンジニアやプログラマー向けの十六進エディタ。バイトパッチ、パッチ管理、無制限のアンドゥ/リドゥ、バイナリ解析用の独自パターン言語を備える。

スター 54,802フォーク 2,451C++GPL-2.0

ひと目でわかる

これは何?
ImHexのhex view、C++風pattern language、Data Inspector、ノード前処理、リモート入力とビルド要件を確認します。
誰に向いている?
ImHexはバイト列を直接確認し、型や構造をpattern languageで可視化したいリバースエンジニア、プログラマー向けです。単純な16進表示だけなら機能が多く、raw diskやprocess memoryを扱う場合は誤書き込みの管理が欠かせません。
商用利用できる?
条件付きでできます。GPL-2.0 はコピーレフトのライセンスで、これを含むソフトウェアを配布する場合、そのソフトウェアのソースコードを同じライセンスで公開する必要があります。配布せず社内で使うだけなら、この義務は生じません。
今もメンテナンスされている?
されています。最後のコミットは 2 日前です。
何の言語で書かれている?
主に C++ です(GitHub の言語統計による)。

回答はプロジェクトの GitHub データ(最終同期:2026年9月14日)と当サイトの分析に基づくもので、法的助言ではありません。

オープンソース詳細解説

バイト列を型付きで読むhex view

ImHexはリバースエンジニア、プログラマー、長時間作業する利用者向けのhex editorとしてREADMEに記載されています。hex viewではbyte patching、patch management、無限のUndo/Redo、文字列とhex検索、カーソル位置への移動、色付きhighlightを扱えます。数値を8、16、32、64 bitの整数や16、32、64 bitのfloat、RGBA8、binaryとして表示する入口もあります。

UTF-8、UTF-16、ShiftJIS、Windows系を含む複数のencodingをdecodeできるため、単に16進数を眺めるより対象形式へ近づけます。ただし表示された解釈がファイル仕様の証明になるわけではありません。まず複製した既知のバイナリで、offset、endianness、文字列境界、変更前後のbytesを照合します。

pattern languageで構造を定義する

ImHexにはC++風のpattern languageがあり、配列、ポインタ、struct、union、enum、bitfield、namespace、little endianとbig endian、条件式を扱うとREADMEに説明されています。MIME typeやmagic valueに基づく自動読み込みもあります。ファイル形式の仕様をコード化し、構造を画面上で可視化する用途です。

patternのerror message、syntax highlighting、error markingが用意されています。試験では、固定したサンプルのヘッダー、長さ、配列、末尾データを表すpatternを作り、境界を壊した入力でエラーが表示されるか確認します。形式が未解明のまま型を当てはめると誤読につながるため、patternの出力と仕様メモを別々に保存します。

Data Inspectorと検索方式

Data Inspectorは同じデータを符号付き・符号なし整数、float、LEB128、ASCII、wide、UTF-8、時刻、GUID、色などとして解釈します。endian、decimal、hexadecimal、octal、bit inversionも対象で、値のコピーと変更ができます。複数の読み方を比較できる一方、意味を決めるのは利用者です。

検索は全ファイルまたは選択範囲を対象にし、文字列抽出、byteや文字のsequence、正規表現、wildcard付きbinary pattern、数値と範囲の検索を使い分けます。minimum length、文字種、encoding、size、endianness、unaligned値の扱いを指定できます。既知のsignatureと境界値を用意し、全体検索と選択範囲検索の差を記録します。

表示前のnode処理と入力源

Node-based data pre-processorは、表示前にデータを変更、復号、decodeできます。元のsourceへ触れずに表示用の処理を行い、custom nodesも追加できます。変換後の表示と元ファイルを混同しないよう、どのnodeをどの順番で通したかを保存します。

入力はlocal fileだけでなく、raw disk、partition、GDB server、Intel Hex、Motorola SREC、Base64、UDP packet、process memory、SSH/SFTPのremote fileにも及びます。巨大ファイルの高速loadingもREADMEの機能です。raw diskやprocess memoryを開く試験は読み取り専用のコピーまたはテストプロセスで行い、権限、対象アドレス、保存操作を明確に分けます。

レポートとパッチの持ち出し

ImHexはBase64、IPSとIPS32 patch、Markdown report、各種言語のbinary arrayをimport/exportできます。hex viewで見つけた箇所をpatchとして管理し、Undo/Redoで戻せる点は、解析結果を実験として扱うのに適しています。元データ、patch、適用後のhashを別々に保管し、配布可能な成果物を選びます。

READMEには画像、音声、3D model、coordinates、timestampの可視化もpatternで行えるとあります。表示できたことと、形式の全フィールドを正しく解釈したことは同じではありません。レポートには入力ファイルのhash、pattern版、offset、変更bytesを記録し、別環境で再表示できるかを確認します。

GPU、ビルド、プラグインの条件

ImHexはOpenGL 3.0対応GPUを必要とし、NoGPU suffixのsoftware rendering版もあります。CPUはx86、AMD64、ARM64を公式サポートし、RAM約50MiB、storage約100MiBという目安がREADMEにあります。Windows 7以降、macOS 15以降のrelease binary、各種Linux、FreeBSD 14.3が挙げられています。

自前ビルドはC++23対応のGCCまたはClangが必要で、MSVCとAppleClangはサポート対象外です。cloneには--recurse-submodulesを使います。大部分はGPLv2のみ、libimhexとplugins/uiにはLGPLv2.1例外があり、proprietary pluginを許す説明です。SDKを使う場合はIMHEX_BUNDLE_PLUGIN_SDK=ON、install/usr/local/share/imhex/sdk、IMHEX_SDK_PATHを確認します。

複製バイナリで解析操作を戻す

ImHexの評価では、既知のheaderとendiannessを持つ複製バイナリを用意し、hex検索、Data Inspector、pattern、node処理、patch保存を順に行います。元ファイルのhashとpatch適用後のhashを分け、Undo/Redoで元へ戻ることを確認します。GPU版とNoGPU版でlarge fileの表示と検索を比べ、raw diskやprocess memoryはテスト対象だけへ読み取り権限を付けます。pattern、入力hash、ImHexの版、使用nodeをMarkdown reportへ記録し、別環境で同じ構造が見えるかを確認します。数値検索ではsignedとunsigned、alignedとunaligned、little endianとbig endianを同じoffsetで切り替え、意図しない一致が出ないかを記録します。patchを適用する前後で元ファイルを上書きせず、復元用コピーと解析用コピーを分離します。patchを適用する前後で元ファイルを上書きせず、復元用コピーと解析用コピーを分離します。patchを適用する前後で元ファイルを上書きせず、復元用コピーと解析用コピーを分離します。検出したoffsetと表示された型を照合し、patternを変更した時の差分も残します。raw diskは対象デバイス名を二重に確認してから開きます。patternの構文エラー、Data Inspectorの型切替、選択範囲だけの検索、保存できない入力源をそれぞれ作り、画面表示とログの差を確認します。解析対象のコピーを読み取り専用にし、patchの適用者と時刻を記録します。GPU版とNoGPU版の起動結果、入力ファイルのhash、pattern名、patchの差分を同じ記録へまとめ、更新後に解析結果を再表示できるかを確認します。GPU版とNoGPU版の起動結果、入力ファイルのhash、pattern名、patchの差分を同じ記録へまとめ、更新後に解析結果を再表示できるかを確認します。解析者ごとの設定差も残します。

編集部の結論

ImHexはバイト列を直接確認し、型や構造をpattern languageで可視化したいリバースエンジニア、プログラマー向けです。単純な16進表示だけなら機能が多く、raw diskやprocess memoryを扱う場合は誤書き込みの管理が欠かせません。導入前にコピーしたサンプルで検索、Data Inspector、pattern、patchの保存とundoを試し、GPUまたはNoGPU版の動作を確認してください。

公式情報源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
コミュニティノート

コミュニティノート