如何在Linux上编辑二进制文件
1. 概述
我们有时需要查看和编辑二进制文件。大多数 Linux 发行版都有内置的实用程序来操作二进制文件。我们甚至可以执行从二进制到文本格式的转换,反之亦然。
在本教程中,我们将了解二进制文件是什么,并查看对它们执行读/写操作的实用程序。
2. 什么是二进制文件?
二进制文件包含以计算机可读格式结构化和存储的数据。它由我们的计算机可以轻松解释的二进制数或位组成。
除纯文本文件外,二进制文件构成了我们计算机中存储的所有其他内容。它们通常用于数据文件、图像、声音文件、可执行程序等。
以二进制形式存储的程序的一个优点是它们可以非常快速地执行,因为它们比具有同等数据量的文本文件小。
默认情况下,我们无法使用普通程序或文本编辑器查看或编辑二进制文件。相反,我们需要特殊的实用程序和十六进制编辑器来访问二进制文件。
让我们探索其中的一些实用程序,看看我们如何使用它们来编辑二进制文件。
3. 设置
让我们创建一个名为sample.txt的文本文件,我们将使用hexdump 将其转换为二进制文件:
$ echo "BLOGDEMOISAWESOME blogdemoisawesome" > sample.txt
$ hexdump sample.txt > sample.bin
0000000 4241 454c 4455 4e47 4953 4157 4553 4f4d
0000010 4520 6261 656c 6475 6e67 6973 6177 6573
0000020 6f6d 650a
0000024
我们将在本教程中使用这个sample.bin文件来使用不同的工具进行编辑。
4. 用xxd编辑
**xxd 命令允许我们轻松地从二进制文件中转储十六进制数据。**我们还可以将十六进制数据转换回二进制文件。它是一个有用的命令行十六进制编辑器,通常是vim文本编辑器包的一部分。
几乎所有主要的 Linux 发行版都内置了xxd命令。
使用上面的sample.bin,让我们输入以下命令,通过vim将文件作为二进制文件打开:
$ vim -b sample.bin
由于我们的文件是十六进制格式,我们可以在vim上进入编辑模式,将42 41更改 为62 61。十六进制数字42 41代表字母*“B 和 A”,62 61代表字母“b 和 a”。*
我们也将第二行的62 61更改为42 41。
完成更改后,我们可以在vim上键入以下命令将文件转换为文本格式:
:%!xxd -r
baELDUNGISAWESOME BAeldungisawesome
将其转换为文本格式后,我们可以注意到字符串开头的大写字母*“ BA ”与字符串 第二部分开头的小写字母“ ba ”*互换了。
我们可以通过在vim 的终端上输入以下命令来保存更改:
:wq
5. 使用ghex进行编辑
**GNOME Hex Editor 是一个简单的二进制编辑器,我们可以使用它从二进制文件加载原始数据并显示它们以进行编辑。**它允许我们查看和编辑十六进制和 ASCII 格式的二进制文件。
显示分为两列,其中一列是十六进制值,另一列是 ASCII 表示。
我们可以使用本地包管理器下载并安装 GNOME Hex Editor :
$ sudo apt install ghex
安装后,让我们输入以下命令来打开我们的sample.bin文件:
$ ghex sample.bin
我们可以看到很多关于我们文件的有用信息。我们还可以编辑字符串的十六进制值。
GHex的一个优点是我们可以实时看到我们的更改如何影响sample.bin文件中的字符串。
完成编辑后,我们可以按* Ctrl+S *保存更改。
6. 用hexedit编辑
hexedit 是一个命令行工具,我们可以使用它来查看和编辑二进制文件。Hexedit以 ASCII 和十六进制格式显示数据。
它还支持按值搜索数据,并可以显示可滚动输出。我们还可以使用各种键盘快捷键来浏览十六进制数据。
hexedit在所有主要的 Linux 发行版中都很容易使用。如果需要,我们可以使用包管理器安装它:
$ sudo apt install hexedit
安装后,让我们输入以下命令来打开我们的sample.bin文件:
$ hexedit sample.bin
我们可以更改文件的十六进制值,并实时查看它们如何影响文件中的字符串。
要保存我们的更改,我们可以键入Ctrl+S。
7. 用jeex编辑
jeex 是一个简单的十六进制编辑器,它允许我们创建、打开和编辑二进制、十六进制、ASCII 和八进制的文件。它还包括删除、插入、复制和粘贴、搜索等功能。
此外,jeex向我们展示了很多关于我们打开的文件的信息,例如修改时间戳、上次访问时间戳、模式位等。 jeex在所有主要的 Linux 发行版中都很容易获得。如果需要,我们可以使用包管理器安装它:
$ sudo apt install jeex
安装后,让我们输入以下命令来打开我们的sample.bin文件:
$ jeex sample.bin
我们可以看到很多关于我们文件的有用信息。此外,我们可以编辑文件的十六进制值,看看它们如何影响字符串的 ASCII 值。
键入Ctrl+S保存更改。
8. 使用hexcurse进行编辑
*hexcurse *是一个基于 ncurses 的十六进制编辑器实用程序。我们可以使用它来打开、编辑和保存二进制文件。它还为我们提供了许多有用的编辑和搜索功能。
由于hexcurse友好的终端界面,我们还可以轻松导航到特定行。
hexcurse在所有主要的 Linux 发行版中都很容易获得。如果需要,我们可以使用包管理器安装它:
$ sudo apt install hexcurse
安装后,我们可以通过键入以下命令打开我们的sample.bin文件:
$ hexcurse sample.bin
我们可以使用键盘浏览文件并编辑十六进制值。我们还可以实时查看我们的更改如何影响文件中的文本。
完成后,我们可以点击底部的保存按钮。