如何从二进制文件中删除部分二进制数据? (十六进制转储)。我尝试了 GHex 3.18.0 二进制文件编辑器,但它不适合这个,只是缺乏简单的功能。例如,我需要选择偏移地址范围0x83FFF0 – 0xDDAFEB,并删除整个块(实际上是删除从0x83FFF0到文件末尾的部分)。
我更喜欢 GUI 工具,因为无论如何我都需要查看二进制内容。但是:首先我可以使用 GUI 编辑器找到地址,然后使用一些脚本命令来修改文件。 (可能是bbe
命令?)
答案1
你可以在以下位置执行此操作Emacs,如果没有预安装,它可以在大多数 Unix 系统上作为软件包使用。内置的十六进制查看器不支持删除,但改进的十六进制查看器Nhexl模式做。
在 Emacs 中打开该文件并输入Alt+x nhexl-mode
Enter.如果显示“不匹配”,请输入Ctrl+g并安装 nhexl-mode,然后重试。要安装 nhexl-mode,最简单的方法是作为 Emacs 包。从“选项”菜单中选择“管理 Emacs 包”,然后选择 nhexl-mode 并单击“安装”,或输入Alt+x package-install
Enter nhexl-mode
Enter.
在 nhexl 模式下,导航到要删除的区域的开头,然后按Ctrl+Space。导航至该区域的末尾并按Delete。当您对更改感到满意时,保存文件。
Emacs 不适合大文件,但几十 MB 没问题。
答案2
如果您只需要文件的第一部分,请使用命令行上的一行:
head --bytes=8650736 Original > Truncated
(其中 83FFF0十六进制 显然是 8650736十进制)
如果您使用简单的命令行计算器就变成:
head --bytes=$(c "ibase=16; 83FFF0") Original > Truncated