你的十六进制编辑器应该给字节上色
摘要
一篇博客文章主张,十六进制编辑器应为字节着色,以便让二进制数据中的模式更易被察觉和分析。
暂无内容
查看缓存全文
缓存时间: 2026/04/23 08:34
# 你的十六进制编辑器应该给字节上色
来源:https://simonomi.dev/blog/color-code-your-bytes/
alice pellerin • 2026-03-31
经常看到十六进制编辑器¹长这样,我就替用它的人难受(如果那个人就是我自己,就更惨了):
```
00000000 00 00 02 00 28 00 00 00 88 15 00 00 C4 01 00 00 ⋄⋄•⋄(⋄⋄⋄ו⋄⋄ו⋄⋄
00000010 14 00 00 00 03 00 00 00 00 01 00 00 03 00 00 00 •⋄⋄⋄•⋄⋄⋄⋄•⋄⋄•⋄⋄⋄
...
```
纯字节列表让人很难一眼看出亮点。来,试试在这堆数据里找到唯一一个 `C0`:
```
00000000 15 29 21 25 03 2F 2E 2B 15 11 24 3F 10 14 3B 13 •)!%•/.+••$?••;•
...
```
再看带颜色的版本:
```
00000000 37 2D 08 13 0D 0B 18 1D 02 1A 2D 12 2A 0D 0F 27 7-••␍•••••-•*␍•'
...
```
不同颜色让唯一字节瞬间跳出来!人脑对视觉模式超敏感——只要格式给对。
再多举几个例子:
### 示例 1
无颜色
(略)
有颜色
(略)
文件开头是魔数 `KPS`,后面跟一串小端序 32 位整数(0–999,`0x3E7`)。颜色让你秒看出每个整数高两字节永远是 `00 00`,还能发现从 `0xC` 开始每 `0x18` 字节数字递增的规律。好奇格式的话,[解析代码](https://github.com/simonomi/carbonizer/blob/6c311b6a2801576033cd42a8ba95461cee2ac6d1/Sources/Carbonizer/files/ff1/KPS.swift#L4-L25) 很简单,也有 [wiki 页](https://simonomi.dev/fftechwiki/file-formats/KPS/) 介绍它对应的 [Fossil Fighters](https://en.wikipedia.org/wiki/Fossil_Fighters) 数据。
### 示例 2
无颜色
(略)
有颜色
(略)
从 `0x14` 开始是一长串递增的 32 位小端序整数,每个都是后面某个 `0x3C` 字节结构的索引。间隔均匀,彩虹渐变直接肉眼可见。
### 示例 3
无颜色
(略)
有颜色
(略)
数据用 [Huffman 编码](https://en.wikipedia.org/wiki/Huffman_coding) 压缩,兼容 [Nintendo DS BIOS](https://problemkaputt.de/gbatek.htm#biosdecompressionfunctions)。前 `0x20` 字节是 Huffman 树,`0x90` 字节是压缩比特流。两段性质不同,颜色一上,界限立刻分明。
相似文章
二进制文件可视化
本文描述了在 'bine' 十六进制编辑器中增强的二进制文件可视化功能的开发,包括使用 Unicode 字符的彩色输出和一种将二进制文件解释为图像以进行大规模查看的方法。
Hexel Editor
Hexel Editor 是一款原生 macOS 十六进制编辑器,具备智能文件格式识别功能,面向开发者和高级用户。
二进制文件的视觉分析
本文探讨用于视觉分析二进制文件的方法,这有助于逆向工程和网络安全等任务。
你的函数是什么颜色?(2015)
一篇2015年的博文,提出一个假设的编程语言,其中函数被标记为红色或蓝色,借此比喻批评JavaScript等语言中同步与异步函数的人为区分。
使用ImHex逆向工程未知文件格式
本文展示了如何使用ImHex这款免费开源的十六进制编辑器来逆向工程游戏FEZ的存档文件格式,提供了从二进制分析到模式定义的实用指南。