ImHex:用模式語言讀懂二進位資料
ImHex 是專為逆向工程師與程式設計師打造的十六進位編輯器,提供位元組修補、修補檔管理、無限復原/重做,以及用於二進位分析的專屬模式語言。
秒懂
- 它是什麼?
- 以 GPLv2 為主的十六進位編輯器,結合模式語言、資料預處理器、搜尋、雜湊與反組譯工具。
- 適合誰用?
- 先以 `--recurse-submodules` 取得 ImHex,確認環境使用支援 C++23 的 GCC 或 Clang;再以含已知結構的檔案測試模式、資料檢查器及 `-NoGPU` 版本,並分開檢視 GPLv2 與 LGPLv2.1 元件。 適合能控制版本、依照 README 建置並讀取具體輸出的團隊;不適合需要文件已保證但材料未說明之平台、相容性或安全承諾的場景。
- 可以商用嗎?
- 可以,但有條件。GPL-2.0 是 copyleft 授權:如果你散布包含它的軟體,就必須以同一授權公開該軟體的原始碼。只在內部執行、不對外散布,則不會觸發這項義務。
- 還在維護嗎?
- 有在維護。儲存庫最近一次提交在 2 天前。
- 用什麼語言寫的?
- 主要是 C++(依據 GitHub 的語言統計)。
以上回答依據專案的 GitHub 資料(最近同步於 2026年9月14日)與我們的分析,不構成法律意見。
開源專案深度解析
ImHex:用模式語言讀懂二進位資料:定位與資料流
ImHex 是一款面向逆向工程師、程式設計師以及凌晨三點工作人士的十六進位編輯器。README 描述了一種完全自訂的類 C++ 模式語言,用於解析並高亮檔案內容。模式會根據 MIME 類型和魔數自動載入。該語言支援陣列、指標、結構體、聯合體、列舉、位欄位、命名空間、位元組序、條件語句等。它還能將資料視覺化為影像、音訊、3D 模型、座標和時間戳。模式語言是獨立倉庫,文件位於專案文件站。該語言是理解原始位元組之外二進位資料的核心機制。
先以 `--recurse-submodules` 取得 ImHex,確認環境使用支援 C++23 的 GCC 或 Clang;再以含已知結構的檔案測試模式、資料檢查器及 `-NoGPU` 版本,並分開檢視 GPLv2 與 LGPLv2.1 元件。 這個判斷直接對應 README 的命令、檔名或設定鍵,不能用一般化的工具評估流程取代。第 1 節要核對的具體結果,是命令輸出、產物檔案與錯誤位置是否一致。
ImHex:用模式語言讀懂二進位資料:安裝與入口
ImHex 可以從本機檔案、原始磁碟、GDB 伺服器(存取執行中程序或嵌入式裝置的 RAM)、Intel HEX 和 Motorola SREC 檔案、Base64 編碼資料、UDP 封包、程序記憶體以及透過 SSH/SFTP 的遠端檔案載入資料。基於節點的資料預處理器允許在資料展示前對其進行修改、解密或解碼,而不會觸碰底層來源資料。你可以新增自訂節點。這使檢查需要轉換後才能解讀的資料成為可能。README 還列出了資料檢查器,可將資料解釋為多種類型,包括 LEB128、GUID、時間類型和顏色,並支援透過檢查器複製和修改位元組。
先以 `--recurse-submodules` 取得 ImHex,確認環境使用支援 C++23 的 GCC 或 Clang;再以含已知結構的檔案測試模式、資料檢查器及 `-NoGPU` 版本,並分開檢視 GPLv2 與 LGPLv2.1 元件。 這個判斷直接對應 README 的命令、檔名或設定鍵,不能用一般化的工具評估流程取代。第 2 節要核對的具體結果,是命令輸出、產物檔案與錯誤位置是否一致。
ImHex:用模式語言讀懂二進位資料:核心設定與執行
為查詢特定資料,ImHex 提供字串提取(可設定字元集和編碼)、序列搜尋(可忽略大小寫)、正規表示式搜尋、帶萬用字元的二進位模式搜尋,以及針對整數和浮點數的數值搜尋(可指定大小和位元組序)。它支援從 CRC8 到 SHA-512、MurmurHash、XXHash、Blake2 等多種雜湊演算法,可對特定區域或任意字串進行雜湊。差異比較功能支援不同資料來源間的比較,提供差異高亮和表格檢視。整合的反組譯器支援 Capstone 支援的所有架構,包括 ARM、x86、MIPS、PowerPC、RISC-V、WebAssembly 和以太坊,並可編寫自訂反組譯器。
先以 `--recurse-submodules` 取得 ImHex,確認環境使用支援 C++23 的 GCC 或 Clang;再以含已知結構的檔案測試模式、資料檢查器及 `-NoGPU` 版本,並分開檢視 GPLv2 與 LGPLv2.1 元件。 這個判斷直接對應 README 的命令、檔名或設定鍵,不能用一般化的工具評估流程取代。第 3 節要核對的具體結果,是命令輸出、產物檔案與錯誤位置是否一致。
ImHex:用模式語言讀懂二進位資料:輸出、限制與取捨
介面預設使用深色模式,以避免在深夜工作時灼傷視網膜,同時也提供淺色模式。所有 UI 元素的顏色和樣式可透過可分享的主題檔案自訂,並支援自訂字型。現代介面包括多工作區、自訂版面配置和可分離視窗。針對初學者有簡化模式,支援多種語言,還有引導功能的成就系統和互動式教學。書籤支援自訂名稱和顏色、高亮、跳轉、在新分頁開啟以及新增註解。README 還提到內容更新器,可從資料庫下載模式檔案、函式庫、魔數檔案、自訂節點、編碼、主題和 YARA 規則。
先以 `--recurse-submodules` 取得 ImHex,確認環境使用支援 C++23 的 GCC 或 Clang;再以含已知結構的檔案測試模式、資料檢查器及 `-NoGPU` 版本,並分開檢視 GPLv2 與 LGPLv2.1 元件。 這個判斷直接對應 README 的命令、檔名或設定鍵,不能用一般化的工具評估流程取代。第 4 節要核對的具體結果,是命令輸出、產物檔案與錯誤位置是否一致。
ImHex:用模式語言讀懂二進位資料:維護與授權
ImHex 需要支援 OpenGL 3.0 的 GPU,但存在帶 -NoGPU 後綴的軟體渲染版本。官方支援的 CPU 為 x86、AMD64 和 ARM64,預計任何小端 CPU 均可工作。RAM 約需 50 MiB,儲存約需 100 MiB。Windows 7 或更高版本受支援,macOS 15 或更高版本提供發佈二進位(更低版本需自行編譯),Linux 支援 Ubuntu、Debian、Fedora、RHEL/AlmaLinux、Arch 等發行版,以及 AppImage、Flatpak 和 Snap 套件,FreeBSD 14.3 已測試。建置需要支援 C++23 的 GCC 或 Clang;不支援 MSVC 和 AppleClang。依賴項以子模組形式捆綁,克隆時應使用 --recurse-submodules。
先以 `--recurse-submodules` 取得 ImHex,確認環境使用支援 C++23 的 GCC 或 Clang;再以含已知結構的檔案測試模式、資料檢查器及 `-NoGPU` 版本,並分開檢視 GPLv2 與 LGPLv2.1 元件。 這個判斷直接對應 README 的命令、檔名或設定鍵,不能用一般化的工具評估流程取代。第 5 節要核對的具體結果,是命令輸出、產物檔案與錯誤位置是否一致。
ImHex:用模式語言讀懂二進位資料:專案化驗證
ImHex 大部分程式碼採用 GPLv2 唯一授權,但 /lib/libimhex 和 /plugins/ui 例外,採用 LGPLv2.1,允許開發專有外掛程式。README 指出這是為了讓外掛程式開發不必開源。外掛程式開發使用範本專案和 SDK,可透過編譯 ImHex 時加上 -DIMHEX_BUNDLE_PLUGIN_SDK=ON 並安裝來建置 SDK。SDK 位於 install/usr/local/share/imhex/sdk,需設定 IMHEX_SDK_PATH 環境變數。README 也感謝了 JetBrains、SignPath 和 AWS 等贊助商。授權條款摘錄為 GPL v2 文字,授予複製、分發和修改的權利,但不提供任何擔保。
先以 `--recurse-submodules` 取得 ImHex,確認環境使用支援 C++23 的 GCC 或 Clang;再以含已知結構的檔案測試模式、資料檢查器及 `-NoGPU` 版本,並分開檢視 GPLv2 與 LGPLv2.1 元件。 這個判斷直接對應 README 的命令、檔名或設定鍵,不能用一般化的工具評估流程取代。第 6 節要核對的具體結果,是命令輸出、產物檔案與錯誤位置是否一致。
ImHex:用模式語言讀懂二進位資料:採用邊界 1
先以 `--recurse-submodules` 取得 ImHex,確認環境使用支援 C++23 的 GCC 或 Clang;再以含已知結構的檔案測試模式、資料檢查器及 `-NoGPU` 版本,並分開檢視 GPLv2 與 LGPLv2.1 元件。 對 werwolv-imhex-deep-analysis 而言,測試不能只看畫面是否出現。第 1 次核對應記下輸入資料、版本、執行命令、輸出檔案、日誌訊息與失敗位置,再比較 README 描述的行為。若結果只在特定平台成立,就把平台條件寫進部署決策;若文件沒有說明,就保留為未確認事項,不把推測寫成保證。
ImHex:用模式語言讀懂二進位資料:採用邊界 2
先以 `--recurse-submodules` 取得 ImHex,確認環境使用支援 C++23 的 GCC 或 Clang;再以含已知結構的檔案測試模式、資料檢查器及 `-NoGPU` 版本,並分開檢視 GPLv2 與 LGPLv2.1 元件。 對 werwolv-imhex-deep-analysis 而言,測試不能只看畫面是否出現。第 2 次核對應記下輸入資料、版本、執行命令、輸出檔案、日誌訊息與失敗位置,再比較 README 描述的行為。若結果只在特定平台成立,就把平台條件寫進部署決策;若文件沒有說明,就保留為未確認事項,不把推測寫成保證。
編輯結論
先以 `--recurse-submodules` 取得 ImHex,確認環境使用支援 C++23 的 GCC 或 Clang;再以含已知結構的檔案測試模式、資料檢查器及 `-NoGPU` 版本,並分開檢視 GPLv2 與 LGPLv2.1 元件。 適合能控制版本、依照 README 建置並讀取具體輸出的團隊;不適合需要文件已保證但材料未說明之平台、相容性或安全承諾的場景。
社群筆記