在VI和XXD中打开一个二进制文件

时间:2019-03-27 18:22:09

标签: linux vi hexdump xxd

我正在尝试使用Ubuntu在Linux中修改可执行程序的二进制数据。

我有一个名为a.out的文件。我可以使用xxd a.out | less以十六进制形式转储它。然后在另一个终端窗口中,运行vi a.out

Vi的数据在许多地方与xxd输出略有不同。两者都将地址显示到文件中,但是数据不同。例如,在可执行文件的开头,在xxd中有两个字节C006,在VI中显示为c380

有人知道他们为什么与众不同吗?看来VI出于某些原因正在修改某些数据。

1 个答案:

答案 0 :(得分:0)

我认为您误会了 less 的管道(|)在做什么。

xxd a.out,将在终端上显示a.out的十六进制输出。

xxd a.out | less,只会将xxd的输出发送到 less ,因此您可以在命令行上滚动它

我认为您的意思是xxd a.out > file_to_open_in_vi.txt。实际上,这会将xxd输出转储到文本文件中,然后可以使用vi打开。