跳到内容
分享网

二进制文件不该只是一屏乱码:ImHex 用一门类 C 小语言把文件读成结构,开源免费、连进程内存都能看

软件工具 Linux macOS Windows 9 天前更新 浏览 8 ↓ 直达下载
ImHex — imhex.werwolv.net
本页目录 11 节
  1. 1 它是什么:一张事实卡
  2. 2 核心:让文件自己说清结构
  3. 3 数据源:不止「打开一个文件」
  4. 4 Data Processor:先解密,再显示
  5. 5 搜索、哈希、Diff:取证场景的三件套
  6. 6 还有反汇编和书签
  7. 7 怎么上手:五步
  8. 8 五个必须知道的坑
  9. 9 和 HxD、010 Editor 怎么选
  10. 10 谁该装,谁可以跳过
  11. 11 结语:把「看懂」这件事沉淀下来

先说三个场景,它们看起来毫不相干,但卡在同一个地方:

  • 相机卡拔下来,一张 JPEG 打不开,其余几百张都正常。文件大小对,双击报错。
  • 从网盘下回来的系统镜像,校验值和官方给的差一位。你不知道是下载断流,还是被中间人换了东西。
  • 同事发来一个 .dat,没有文档、没有说明,只有一个界面很旧的软件能读它。你想知道里面到底存了什么。

这三个问题的答案都藏在字节里。但「用十六进制编辑器打开看看」这句话,实际操作起来往往没用——因为你看到的是一屏 00 01 02 4D 5A 90,看十分钟也看不出哪一段是宽度、哪一段是时间、哪一段本来该是图像。

问题不在你不会看,在工具没有告诉你这个文件的「结构」。文件格式本身就是一份协议:第 0—3 字节是魔数,第 4—7 字节是版本,第 8 字节开始是一串变长记录……这些东西通常只写在某个 PDF 规范里,工具默认不管。

ImHex(imhex.werwolv.net)管的就是这件事。它不只是「能改字节的十六进制编辑器」,它带一门专门用来描述二进制结构的小语言,你把结构写下来,它负责把字节填进去、按类型显示出来。

它是什么:一张事实卡

项目 情况
定位 面向逆向工程、数字取证、协议分析的十六进制编辑器,带可编程的结构描述语言
作者 WerWolv(GitHub 个人项目,55,517 star / 2,564 fork,2020 年 11 月建库,一直在维护)
协议 GPL-2.0:免费使用,可改可分发;改了再发要同样开源
最新版 v1.38.1(2025-12-21),上一版 v1.38.0(2025-12-06)
平台 Windows(安装包 / 便携版,x86_64 与 arm64 都有)、macOS(Intel 与 Apple 芯片分开)、Linux(deb / rpm / AppImage / Flatpak / Snap / Arch)、还有网页版
体积 Windows 安装包约 38 MB,macOS arm64 约 47 MB,Linux AppImage 约 190 MB(打包了依赖,所以大)
地址 官网 imhex.werwolv.net;下载页 imhex.download;文档 docs.werwolv.net;在线试用 web.imhex.werwolv.net

那两个数字值得单独看一眼:5.5 万 star、六年持续维护。十六进制编辑器是个很老的品类,HxD、010 Editor 这类工具统治了十几年,能在这个位置攒出五万多 star,说明它解决的不是「多一个选择」,是原来确实缺一块。

缺的那块,就是下面这件事。

核心:让文件自己说清结构

ImHex 最特别的地方是一门叫 Pattern Language 的小语言——语法上很像 C,用来描述「这段字节是什么」。

举个最直观的例子。假设你要看一个文件里的一段记录,你知道它的结构是:一个 4 字节魔数、一个 2 字节版本号、一个 4 字节长度、后面跟着长度这么多字节的数据。用 Pattern Language 写出来大概是这个形状(语法示意,不是完整代码):

struct Header { char magic[4]; u16 version; u32 length; u8 data[length]; };

写完点运行,ImHex 会做三件普通十六进制编辑器做不到的事:

  1. 把字节按类型重新显示一遍。magic 那四个字节显示成字符串,version 显示成十进制的 2,length 显示成 1287——而不是让你自己去数十六进制。
  2. 给出结构树。左边一栏列出这个文件里所有的 Header、每个字段的起止偏移、字节数、解析出来的值。几百条记录会全部列出来,点一条就跳到对应位置。
  3. 把匹配到的区域在十六进制视图里上色。不同字段不同颜色,一眼就能看出「这块是头部、这块是数据、这块是尾部」,而不是一整片灰。

这门语言能表达的东西比上面这个例子多得多:数组、指针、结构体、联合体、枚举、位域、命名空间、大小端分别声明、条件分支都有。也就是说,真实格式里那些「如果是版本 2 就读这个字段,否则读那个字段」「这个字节拆成 3 个位域」的麻烦事,都写得出来。

更实用的是配套的两件事:

  • 按 MIME 类型和文件魔数自动加载对应的 pattern。社区已经写了大量现成模板——PNG、ZIP、ELF、PE、字体、存档文件都有,打开文件时它自己判断该套哪个,你不用每次手写。
  • 能把数据「画」出来。模板里声明某段是图像,它就真的显示成图片;声明是音频,能直接播;声明是 3D 模型(官方演示里有 STL 解析),能转起来看;声明是时间戳、坐标,就显示成人能读的日期和经纬度。

这一点是 ImHex 和「看字节的工具」最大的分野。普通十六进制编辑器是显微镜,ImHex 更像 X 光机——它知道骨头的形状。你不再是「看数字猜含义」,而是「先写下你以为的结构,再让工具告诉你哪里对不上」。对不上往往才是重点:说明你对这个格式的理解错了,或者文件被改过。

数据源:不止「打开一个文件」

大多数十六进制工具只能打开文件。ImHex 能接八种数据源,这个清单直接决定了它能干哪些活:

数据源 拿来干什么
本地文件 超大文件也能开,官方强调按需加载,不会一次性读进内存
裸磁盘与分区 直接看整块硬盘或某个分区,找分区表、找被删文件的残留、看引导扇区
进程内存 看正在运行的程序整个地址空间,找密钥、找解密后的明文
GDB Server 通过 GDB 读运行中进程或嵌入式设备的 RAM,做固件分析时很有用
UDP 包 监听指定端口,把收到的原始包直接铺在十六进制视图里(1.38 新增)
SSH / SFTP 远程文件 不用先下载,直接读远程机器上的文件;配合 GDB 还能看远程内存(1.38 新增)
Intel HEX / Motorola SREC 单片机烧录常用的两种文本格式,直接解析
Base64 数据 粘一段 Base64 进来,边解码边看

这八种里,「进程内存」和「裸磁盘」是分水岭。它们把工具从「看文件」变成了「看正在发生的事」——软件解密完存在内存里的数据、硬盘上删了但没被覆盖的记录,只有这两条路能碰到。

顺便说一句老实话:开裸磁盘和进程内存之前,先备份。这类数据源默认是只读打开,但十六进制编辑器里「只读」和「可写」通常只差一个开关,手滑一次就是真丢数据。

Data Processor:先解密,再显示

如果你要看的文件是加密或压缩过的,普通做法是先找个工具解一遍、存成新文件、再用编辑器打开。麻烦在于:每改一次处理方式就要重跑一遍,而且中间文件散落一地。

ImHex 把这一步做成了节点式的 Data Processor:数据从文件流出来,先经过你摆的一串处理节点(异或、加减、解密、解码、换字节序……),处理结果才进十六进制视图。源文件不会被改动,改的只是「显示出来的样子」。

这个设计的价值在反复试错的时候体现得最明显:怀疑是异或加密,拉一个异或节点、换个 key,画面立刻刷新,不用来回导出文件。确定之后,节点链可以导出成模板复用。

搜索、哈希、Diff:取证场景的三件套

搜索这一项做得比大多数同类工具细:除了普通的字符串和十六进制序列,还支持正则表达式、带通配符的二进制模式(比如「开头是 FF D8,中间不关心,结尾是 FF D9」找所有 JPEG)、以及数值范围搜索(找所有落在 1000 到 2000 之间的 32 位整数,可指定大小端、可忽略非对齐值)。

还有一个不起眼但很好用的功能:字符串提取。可以指定最小长度和字符集(大写/小写/数字/符号),把二进制里所有像「字符串」的片段捞出来。分析未知格式时,这一招经常比看字节快得多——里面往往有几个路径、几个 URL、几个错误提示文案,直接告诉你这是什么软件产出的。

哈希支持三十多种算法:CRC8/16/32(可以自定义初值与多项式)、MD5、SHA-1/224/256/384/512、Adler32、FNV 系列、Murmur2/MurmurHash3、SipHash、XXHash、Tiger、Blake2 等等。可以算整份数据,也可以只算你选中的某一段——校验「哪一段被动过」的时候,后者才是常用姿势。

Diff 能跨数据源比对:两份文件、或者文件与磁盘上的某一段,差异会高亮,还能切到表格视图逐条看。「镜像校验值对不上」那个场景,就是靠这个定位到底哪几十个字节变了。

还有反汇编和书签

内置的反汇编基于 Capstone,覆盖的架构清单很长:x86(16/32/64 位)、ARM32、ARM64、MIPS、PowerPC、SPARC、SystemZ、M68K、M680X、TMS320C64X、RISC-V、WebAssembly、MOS65XX、Ethereum 字节码、BPF。也允许你写自定义反汇编器接进来。

它的定位需要说清楚:这是在「看字节」时顺手看一眼「这段是不是代码」,不是 IDA / Ghidra 那种完整的逆向工作台。没有反编译、没有交叉引用图、没有函数识别。但对「一个几百字节的引导扇区」「一段 shellcode」「一个固件里的中断向量表」这类小目标,够用而且快。

书签可以命名、配色、加备注,还能把书签指向的内容在新标签页里打开。分析一个上万字节的未知格式时,靠它把「在这个偏移找到了长度字段」这类发现钉在画面上,比记在记事本里可靠。

怎么上手:五步

  1. 下载。官网 imhex.werwolv.net 或下载页 imhex.download。Windows 建议用 .msi 安装包,不想装就用 Portable 便携版解压即用;macOS 注意分 Intel 和 Apple 芯片两个 dmg,别下错。
  2. 拖一个文件进去。先随便找个 PNG 或 ZIP 试手——这两类有现成模板,会自动套上。
  3. 看结构树。左边一栏会显示解析出来的字段,点任意一行,右边十六进制视图自动跳到对应偏移并高亮。这一步最能体会到它和普通编辑器的差别。
  4. 改一个字节试试。在十六进制视图里直接改,改完不用立刻保存——它有无限撤销,也会把改动记成补丁列表,可以逐条回退。
  5. 导出。改完可以存成 IPS / IPS32 补丁(只记录改动的偏移和值,几十字节的小补丁就能描述一次修改),也可以导出 Markdown 报告把分析过程留档。

还有个小福利:改完的字节可以「复制为」各种语言数组——C、C++、C#、Rust、Python、Java、JavaScript 都行,甚至能复制成一段自带样式的 HTML。写 PoC、写规则、贴到工单里,都省一道手工转换。

五个必须知道的坑

  • Windows 安装包直到 1.38.1 才签名。更新日志第一条就是这个(证书由 SignPath 赞助)。也就是说,你如果从旧版本升级,装的时候可能还会被 SmartScreen 拦一下;认准 GitHub Releases 官方来源,不要从第三方软件站下。
  • Extended ASCII 显示默认是关的。1.38.0 曾经打开过,1.38.1 又关掉了。如果你从 1.38.0 升上来觉得右侧 ASCII 列少了点什么,去十六进制视图页脚点那个段落图标(Paragraph)把它打开。
  • GPL-2.0 是有传染性的。自己用、公司内部用都没问题;如果你想把它嵌进自己的商业产品再分发,那部分代码也得按 GPL 开源。「免费」和「可以闭源商用」是两件事。
  • 改裸磁盘和进程内存前先备份。再说一次,这类数据源的写入是不可逆的。
  • 网页版适合试手,不适合干活。浏览器拿不到裸磁盘和进程内存这种需要系统权限的数据源,大文件也不如桌面版稳。真想用,装桌面版。

和 HxD、010 Editor 怎么选

这三款基本覆盖了「想认真看二进制」的全部需求,但取向完全不同:

工具 定位 适合谁
ImHex 开源、跨平台、带结构描述语言和多种数据源 要反复分析格式、要写模板复用、要跨系统用同一套工具的人
HxD 免费、轻、只做 Windows,改字节和磁盘编辑都很稳 偶尔改几个字节、只需要一个可靠编辑器的人
010 Editor 商业软件,模板(Template)体系成熟,脚本能力强 预算充足、主要做取证或格式研究的专业用户

如果只想要「一个能改字节的小工具」,HxD 更轻便,没必要上 ImHex。但只要你有过一次「这个格式到底是啥」的困惑,ImHex 那门结构语言省下的时间就值回安装成本了。它是三个里唯一让你把「理解」写下来、并且可以复用的。

谁该装,谁可以跳过

值得装的:

  • 做安全 / 取证 / 逆向的。进程内存、裸磁盘、UDP 包、SSH 远程文件这四种数据源,加上哈希与 Diff,基本覆盖日常工作流。
  • 要处理老格式、自定义格式的开发者。与其写一堆 Python 脚本切片,不如先把结构写成 pattern,一次性看明白。
  • 做固件 / 单片机 / 嵌入式相关工作的。Intel HEX 与 SREC 原生支持,Capstone 反汇编能直接看指令。
  • 偶尔要救文件的人。文件头坏几个字节、尾部被截断、元数据里有个可疑值,这类问题用它比重新生成一遍快。

可以跳过的:

  • 只想改一两个字节的。装个几十 MB 的工具不划算,系统自带的或 HxD 足够。
  • 不想学任何语法的人。Pattern Language 门槛不高(会 C 的人半小时能上手),但确实要写几行;不写也能用,只是用不上它最值钱的那部分。
  • 需要完整逆向工作台的。要反编译、要交叉引用、要调试器联动,上 Ghidra / IDA,ImHex 不是那个量级。

结语:把「看懂」这件事沉淀下来

十六进制编辑器这个品类几十年没什么变化,原因很简单:改字节这件事,做到头也就那样了。真正卡住人的从来不是「怎么改」,是「这一堆数字到底是什么意思」。

ImHex 的答案是把「理解」变成可写、可存、可分享的东西。你今天为一个格式写的 pattern,明天别人可以直接加载;你分析一个可疑文件的过程,可以导出成 Markdown 报告。这比多一个高亮颜色有用得多。

如果你手上正好有一个「打不开、看不懂、又必须搞明白」的文件,它是目前最省时间的那把工具。下载在 imhex.download,源码在 GitHub 的 WerWolv/ImHex,GPL-2.0,免费。反正不花钱,装一个放着也不亏。

资源信息
界面语言 界面英文为主,文案由社区在 Weblate 上翻译,可在设置里切换语言
收费方式 开源免费
适用平台 Linux / macOS / Windows
获取方式 直链下载
资源更新 2026-10-23
页面更新 2026-10-23

↓ 获取资源

点击按钮直接前往资源页面。