Contents

如何在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 

/uploads/edit_binary_files/1.jpeg 我们可以看到很多关于我们文件的有用信息。我们还可以编辑字符串的十六进制值。

GHex的一个优点是我们可以实时看到我们的更改如何影响sample.bin文件中的字符串。

完成编辑后,我们可以按* Ctrl+S *保存更改。

6. 用hexedit编辑

hexedit 是一个命令行工具,我们可以使用它来查看和编辑二进制文件。Hexedit以 ASCII 和十六进制格式显示数据。

它还支持按值搜索数据,并可以显示可滚动输出。我们还可以使用各种键盘快捷键来浏览十六进制数据。

hexedit在所有主要的 Linux 发行版中都很容易使用。如果需要,我们可以使用包管理器安装它:

$ sudo apt install hexedit

安装后,让我们输入以下命令来打开我们的sample.bin文件:

$ hexedit sample.bin

/uploads/edit_binary_files/2.jpeg

我们可以更改文件的十六进制值,并实时查看它们如何影响文件中的字符串。

要保存我们的更改,我们可以键入Ctrl+S

7. 用jeex编辑

jeex 是一个简单的十六进制编辑器,它允许我们创建、打开和编辑二进制、十六进制、ASCII 和八进制的文件。它还包括删除、插入、复制和粘贴、搜索等功能。

此外,jeex向我们展示了很多关于我们打开的文件的信息,例如修改时间戳、上次访问时间戳、模式位等。 jeex在所有主要的 Linux 发行版中都很容易获得。如果需要,我们可以使用包管理器安装它:

$ sudo apt install jeex

安装后,让我们输入以下命令来打开我们的sample.bin文件:

$ jeex sample.bin

/uploads/edit_binary_files/3.jpeg

我们可以看到很多关于我们文件的有用信息。此外,我们可以编辑文件的十六进制值,看看它们如何影响字符串的 ASCII 值。

键入Ctrl+S保存更改。

8. 使用hexcurse进行编辑

*hexcurse *是一个基于 ncurses 的十六进制编辑器实用程序。我们可以使用它来打开、编辑和保存二进制文件。它还为我们提供了许多有用的编辑和搜索功能。

由于hexcurse友好的终端界面,我们还可以轻松导航到特定行。

hexcurse在所有主要的 Linux 发行版中都很容易获得。如果需要,我们可以使用包管理器安装它:

$ sudo apt install hexcurse

安装后,我们可以通过键入以下命令打开我们的sample.bin文件:

$ hexcurse sample.bin

/uploads/edit_binary_files/4.jpeg

我们可以使用键盘浏览文件并编辑十六进制值。我们还可以实时查看我们的更改如何影响文件中的文本。

完成后,我们可以点击底部的保存按钮。