// Linux · 2025-01-24

Hex 查看与编辑指南:从命令行到图形界面

一、Hex 编辑基础概念

Hex(十六进制)编辑器是一种直接操作文件原始字节数据的工具。与文本编辑器不同,它不以字符编码解释文件内容,而是将每个字节显示为两位十六进制数(00 到 FF),同时附带对应的 ASCII 字符表示。这使得 Hex 编辑器成为以下场景的必备工具:

  • 逆向工程:分析可执行文件、固件、恶意软件的结构
  • 数据恢复:修复损坏的文件头、分区表
  • 安全研究:修改二进制补丁、分析网络协议包
  • 嵌入式开发:调试 ROM、引导扇区
  • 游戏修改:编辑存档文件、修改游戏参数

二、命令行工具:快速查看与轻量编辑

命令行 Hex 工具是 Linux/Unix 系统的标配,适合脚本集成、远程服务器操作和快速查看。

1. xxd —— 最经典的 Hex 查看器

xxd 随 Vim 套件分发,是 Linux 上最常用的 Hex 查看命令。

基本查看:

xxd file.txt

输出格式为三列:偏移地址(00000000)、十六进制数据(4865 6c6c 6f)、ASCII 字符(Hello)。

常用参数:

参数 说明 示例
-p 纯十六进制输出(无地址/ASCII) xxd -p file.bin
-l N 限制输出前 N 字节 xxd -l 256 file.bin
-s 0x100 从偏移 0x100 开始 xxd -s 0x100 file.bin
-c 32 每行显示 32 字节 xxd -c 32 file.bin
-r 反向转换:Hex 转回二进制 xxd -r -p hex.txt > file.bin
-b 二进制输出而非十六进制 xxd -b file.bin
-u 大写十六进制字母 xxd -u file.bin

实战示例:

# 查看 ELF 文件头(前 64 字节)
xxd -l 64 /bin/ls

# 提取文件中间某段数据
xxd -s 0x1000 -l 512 firmware.bin > segment.hex

# 将修改后的 Hex 转回二进制
xxd -r -p modified.hex > patched.bin

# 在 Vim 中直接 Hex 编辑
:%!xxd          # 转为 Hex 模式编辑
:%!xxd -r       # 编辑后转回二进制保存

2. hexdump —— 格式化输出专家

hexdump 提供高度自定义的输出格式,适合需要特定排版的场景。

# 标准十六进制 + ASCII 输出
hexdump -C file.bin

# 只显示十六进制,无 ASCII
hexdump -x file.bin

# 自定义格式:偏移 + 4 字节一组的十六进制
hexdump -e '"%08_ax: " 4/1 "%02x " " |" 4/1 "%_p" "|\n"' file.bin

3. od(Octal Dump)—— POSIX 标准工具

od 是所有 Unix 系统的标准工具,兼容性最好。

# 十六进制单字节输出
od -A x -t x1 file.bin

# 显示所有行(不压缩重复行)
od -A x -t x1 -v file.bin

# 以 32 位整数显示
od -A x -t x4 file.bin

4. hexedit —— 终端交互式编辑器

hexedit 基于 ncurses,提供终端内的交互式 Hex 编辑能力。

安装:

# Debian/Ubuntu
sudo apt install hexedit

# Fedora
sudo dnf install hexedit

# Arch
sudo pacman -S hexedit

操作:

hexedit file.bin        # 打开文件编辑
hexedit -d /dev/sda     # 以只读模式查看磁盘
快捷键 功能
方向键 / hjkl 移动光标
Insert 切换插入/覆盖模式
Delete / Backspace 删除字节
Ctrl+S 保存
Ctrl+X 保存并退出
Ctrl+C 放弃更改并退出
Tab 在 Hex 和 ASCII 区域切换
/ 搜索字节序列
F1 帮助

5. hexcurse —— 另一款 ncurses 编辑器

hexcurse 界面更友好,支持自定义每行显示字符数。

sudo apt install hexcurse

hexcurse file.bin
hexcurse -a file.bin            # 地址以十进制显示
hexcurse -r 32 file.bin         # 每行显示 32 字节
hexcurse -o output.bin file.bin # 指定输出文件

6. hexyl —— 彩色 Hex 查看器

hexyl 用不同颜色区分 ASCII 字符、NULL 字节、空白字符等,视觉效果极佳。

sudo apt install hexyl    # 或通过 cargo install hexyl

hexyl file.bin            # 彩色输出
hexyl -n 256 file.bin     # 只看前 256 字节

三、图形界面工具:可视化与高级分析

1. HxD(Windows)—— 轻量极速之选

HxD 是 Windows 平台上最知名的免费 Hex 编辑器,以极致的轻量和速度著称。

核心特性:

  • 支持高达 8 EB(艾字节)的文件,采用内存映射 I/O,打开 50GB 文件仅需 4GB 内存
  • 支持原始磁盘编辑和进程内存编辑(Extras > Open RAM)
  • 内置校验和计算(CRC32、MD5、SHA 等)
  • 文件比对、数据拼接与分割
  • 导出为 C/Java/Pascal 数组格式
  • 仅 3.19 MB,支持便携版运行

适用场景: 快速查看大文件、磁盘镜像分析、内存调试、基础补丁修改。

局限: 仅支持 Windows;无脚本/插件扩展能力;无二进制模板解析功能。

2. ImHex —— 开源跨平台的“二进制 IDE”

ImHex 是近年来最受安全研究者和逆向工程师欢迎的开源 Hex 编辑器,被誉为“二进制夜视仪”。

核心特性:

  • Pattern Language:类 C++ 的自定义模式语言,可定义数据结构并自动高亮解析(类似 010 Editor 的模板,但开源免费)
  • 实时反汇编:基于 Capstone 引擎,支持 x86、ARM、MIPS 等多架构
  • 节点式数据处理器:可视化连接 XOR、Base64、CRC 等处理节点
  • 数据可视化:熵分析直方图、字节分布图
  • YARA 规则扫描:快速定位恶意特征码
  • 差异对比:高亮两个文件的异同
  • 跨平台支持 Windows、macOS、Linux
  • 社区维护 100+ 文件格式 Pattern(PE、ELF、PNG、ZIP 等)

安装:

# 各平台均支持,以 Linux 为例
# 下载 AppImage 或从发行版仓库安装
sudo pacman -S imhex    # Arch
# 或从 GitHub 下载:https://github.com/WerWolv/ImHex

适用场景: 固件逆向、恶意软件分析、复杂文件格式解析、CTF 取证、协议逆向。

与 010 Editor 对比: ImHex 免费开源,Pattern Language 更灵活;010 Editor 商业闭源,但模板生态更成熟、商业支持更完善。

3. 010 Editor —— 专业级商业工具

010 Editor 是业界标杆级的 Hex 编辑器,以**二进制模板(Binary Templates)**技术闻名。

核心特性:

  • 内置 300+ 文件格式模板(EXE、PNG、ZIP、PDF、PCAP 等),一键解析结构化数据
  • C-like 脚本语言,支持自动化和自定义分析
  • 跨平台(Windows、macOS、Linux)
  • 文件比对、直方图、通配符搜索
  • 磁盘编辑与进程内存查看

定价: 单用户授权约 $49.95。

适用场景: 专业逆向工程、协议分析、需要商业支持的企业环境。

与 HxD 对比: 010 Editor 功能全面但较重;HxD 免费轻量,适合快速编辑和磁盘操作。两者常互补使用。

4. Bless(Linux)—— 功能全面的 GTK 编辑器

Bless 是 Linux 上功能最丰富的开源 GUI Hex 编辑器之一,采用 GTK 界面。

安装:

sudo apt install bless          # Debian/Ubuntu
sudo dnf install bless          # Fedora
sudo pacman -S bless            # Arch
# 或 Flatpak
flatpak install flathub com.github.afrantzis.Bless

核心特性:

  • 多线程处理大文件(超过系统内存限制)
  • 多标签页界面
  • 多级撤销/重做
  • 正则表达式搜索与替换
  • 插件架构扩展功能
  • 数据转换表(十进制/八进制/十六进制互转)
  • 按位运算
  • 导出为文本和 HTML

适用场景: Linux 桌面环境下的日常二进制编辑、大文件处理。

5. GHex —— GNOME 原生轻量编辑器

GHex 是 GNOME 桌面环境的官方 Hex 编辑器,界面简洁。

sudo apt install ghex

特性: 基础 Hex/ASCII 视图、搜索替换、格式转换、多层级撤销。适合 Linux 用户的基础需求。

6. Hex Fiend(macOS)—— 极速大文件处理

Hex Fiend 是 macOS 上最优秀的开源 Hex 编辑器。

特性:

  • 流畅处理超过 4GB 的大文件
  • 多编码支持(ASCII、UTF-8、UTF-16)
  • 多层级撤销/重做
  • 开源免费

四、工具选型速查表

工具 平台 界面 最大文件 核心优势 适用人群
xxd Linux/Unix CLI 无限制 快速查看、与 Vim 集成、反向转换 开发者、系统管理员
hexedit Linux/Unix TUI 内存限制 终端内交互编辑、轻量 远程服务器操作
hexcurse Linux/Unix TUI 内存限制 友好的 ncurses 界面 终端用户
hexyl Linux/Unix CLI 无限制 彩色输出、视觉区分字节类型 快速查看
HxD Windows GUI 8 EB 极速、磁盘/内存编辑、轻量 Windows 用户、数据恢复
ImHex Win/Mac/Linux GUI 超大文件 Pattern Language、反汇编、节点处理器 逆向工程师、安全研究员
010 Editor Win/Mac/Linux GUI 理论无限 二进制模板、脚本、商业支持 专业逆向工程师
Bless Linux GUI 超内存 多线程、插件、功能全面 Linux 桌面用户
GHex Linux GUI 大文件 GNOME 原生、简洁 Linux 基础用户
Hex Fiend macOS GUI 4GB+ 极速、开源、macOS 原生 macOS 用户

五、实战操作示例

场景 1:修改二进制文件中的字符串

# 1. 查找目标字符串位置
xxd -p program.bin | tr -d '\n' | grep -o "48656c6c6f"   # "Hello" 的 Hex

# 2. 用 hexedit 打开并定位到该位置修改
hexedit program.bin
# 在 Hex 区域直接修改对应字节,保存退出

场景 2:修复损坏的 PNG 文件头

# PNG 标准文件头应为:89 50 4E 47 0D 0A 1A 0A
# 查看当前文件头
xxd -l 8 corrupted.png

# 用 xxd 生成补丁
echo "0000000: 8950 4e47 0d0a 1a0a" | xxd -r - corrupted.png

场景 3:分析固件结构(使用 ImHex)

  1. 打开 ImHex,加载 firmware.bin
  2. 加载对应的 Pattern 文件(如 intel_hex.pat)
  3. 自动高亮显示各字段:魔数、版本号、段表、入口点
  4. 右键可疑区域 → Disassemble → 选择 ARM/Thumb 架构
  5. 使用书签标记关键结构,导出分析报告

场景 4:磁盘取证(使用 HxD)

  1. 打开 HxD → Extras → Open Disk
  2. 选择物理磁盘或分区
  3. 搜索特征字节序列(如 NTFS 的 EB 52 90)
  4. 修复分区表或提取特定扇区数据
  5. 计算磁盘镜像的 MD5/SHA256 校验和

六、注意事项与最佳实践

  1. 始终备份原文件:Hex 编辑直接修改原始字节,一个误操作可能导致文件永久损坏。
  2. 了解文件格式:修改 ELF/PE 可执行文件时,需注意对齐、校验和、重定位表等结构,盲目修改会导致程序无法运行。
  3. 大小端序(Endianness):多字节数据(如整数、地址)在内存中的存储顺序因架构而异,编辑时需确认目标平台的大小端模式。
  4. 编码问题:ASCII 之外的字符(如中文 UTF-8)在 Hex 编辑器中可能显示为多个字节,修改时需保持编码完整性。
  5. 权限问题:编辑系统文件或磁盘设备需要 root 权限,操作前确认理解后果。

Hex 查看与编辑是二进制世界的“显微镜”和“手术刀”。从命令行的 xxd、hexedit 到图形化的 ImHex、010 Editor,不同工具覆盖了从快速查看到深度逆向分析的完整光谱。掌握这些工具,意味着获得了直接对话计算机底层数据的能力——这在安全研究、逆向工程和系统调试中是不可或缺的核心技能。

原文 https://blog.csdn.net/2301_79518550/article/details/145337529