sublime text 无法直接编辑二进制文件,hexviewer仅提供只读十六进制查看功能;需绕过utf-8加载限制手动调用命令打开,大文件需调大max_file_size,编辑应通过xxd转换为文本再还原。

Sublime Text 本身不支持十六进制查看,装了 HexViewer 也改不了这个事实——它只是个只读查看器,不是编辑器,更不是调试器。你真想打开 .bin、.elf 或固件镜像,得绕过 Sublime 的 UTF-8 加载机制,否则看到的不是乱码就是空白页。
怎么确认 HexViewer 插件真正生效了
命令面板里搜不到 HexViewer: View in Hex,就等于没装好,别急着打开文件。
- 先按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),输入Package Control: Install Package,看是否响应;不响应说明Package Control没装,得去官网复制安装代码粘贴到View → Show Console运行 - 安装
HexViewer时必须认准 GitHub 作者是facelessuser的版本,仓库名就是HexViewer(驼峰、无空格、无下划线);HexEditor、hexviewer、HexView都不能用 - 安装完立刻执行
Package Control: Satisfy Dependencies,否则依赖缺失会导致插件静默失效——不报错、不显示命令、不响应 - 仍不出现命令?不用重启,直接运行
Package Control: Reload Package强制重载
为什么双击 .bin 文件打不开,以及正确打开流程
Sublime 默认拒绝加载含 \x00、\xff 等非法 UTF-8 字节的文件,这不是 bug,是设计策略。双击只会显示空白页、弹出 Error loading file: invalid start byte,或直接静默失败。
- 正确流程:先按
Ctrl+N新建空白页 → 再按Ctrl+Shift+P→ 输入并执行HexViewer: View in Hex→ 在系统对话框中手动选中你的firmware.bin或test.elf - 别用
File → Open直接选二进制文件,那只是强行以文本方式解码,结果是乱码或截断 - 如果当前已打开一个文本文件(比如
log.txt),插件可能跳过解析逻辑;可临时把目标文件重命名为test.bin再试,绕过 Sublime 对扩展名的文本白名单限制 -
HexViewer: Toggle Hex Mode仅适用于已被 Sublime 成功加载的文件(比如你用xxd转过的 hex 文本),对原始二进制文件常无反应或报错
大文件加载失败或卡死,怎么调参
默认配置下,Sublime 对大于 ~10MB 的二进制文件会静默拒绝加载,HexViewer 也无法触发——它不报错,也不提示,就是没反应。
- 打开
Preferences → Settings – User,添加或修改以下配置: -
"max_file_size": 20971520(即 20MB,单位字节) - 注意:这只是放宽内存加载上限,不代表能流畅渲染;超过 50MB 极易卡死或崩溃
- 真正分析大固件或内核镜像,建议用终端命令先行切片:
xxd -l 4096 firmware.bin或hexdump -C -n 4096 firmware.bin - 若需持续监控文件变化(比如调试时外部程序实时写入),
HexViewer不监听文件变更,必须手动重新执行HexViewer: View in Hex
想改字节?别在 Sublime 里保存
你在 HexViewer 视图里看到的 48656c6c6f 是字符串,不是原始字节;改了再保存,写入的是 10 个 ASCII 字符,不是 5 个字节,原始结构必然损坏。
-
HexViewer输出的是字符串形式的十六进制表示,没有写入接口,源码里也没有save_binary()类逻辑 - 右下角始终显示
Hex Viewer (read-only),没有保存按钮,也没有 “Apply to file” 选项 - 安全参与编辑流程:用
xxd -g1 file.bin > file.hex转成文本 → Sublime 编辑file.hex(支持正则、列编辑、书签)→ 保存后执行xxd -r -g1 file.hex > file_new.bin还原 -
-g1很关键,确保按单字节分组;-g2会导致高低字节错位,尤其在 ARM/LE 架构固件中极易翻车
底层开发和逆向工程师真正需要的,从来不是“在 Sublime 里点几下就能编辑 hex”,而是清楚每一步数据流向、知道什么时候该切到终端、什么时候该换工具。HexViewer 只是辅助看一眼结构的轻量入口,别把它当 HxD 或 010 Editor 用。











