我正在尝试直接编辑二进制文件,我知道两个编辑器,vi和hexedit。但是当我使用它们单独打开一个二进制文件时,cotens是不同的。以下是我的所作所为。
首先,我使用“dd if = / dev / sda of = mbr bs = 512 count = 1”来生成包含mbr数据的二进制文件。然后我用“hexedit mbr”打开它,它显示如下: 开始:
00000000 EB 63 90 D0 BC 00 7C 8E C0 8E D8 BE 00 7C BF 00
00000010 06 B9 00 02 FC F3 A4 50 68 1C 06 CB FB B9 04 00
00000020 BD BE 07 80 7E 00 00 7C 0B 0F 85 0E 01 83 C5 10
结局:
000001E0 FF FF 83 FE FF FF 00 40 D6 02 00 38 2B 01 00 00
000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA
我使用“vi mbr”打开它并输入“:%!xxd”,它会显示: 开始:
0000000: c3ab 63c2 90c3 90c2 bc00 7cc2 8ec3 80c2
0000010: 8ec3 98c2 be00 7cc2 bf00 06c2 b900 02c3
0000020: bcc3 b3c2 a450 681c 06c3 8bc3 bbc2 b904
结局:
00002b0: bfc3 bf00 40c3 9602 0038 2b01 0000 0000
00002c0: 0000 0000 0000 0000 0000 0000 55c2 aa0a
hexedit显示是我期望的mbr。但是vi显示怎么说?此外,vi显示似乎错误,因为有超过512个字节。
感谢您的解释!
答案 0 :(得分:9)
命令:%!xxd
使用外部程序xxd
,因此您应首先尝试键入以下内容来检查其输出:
xxd mbr
如果看起来不错,请尝试以二进制模式打开vi(无EOL):
vi -b mrb
然后:%!xxd
答案 1 :(得分:1)
您在“vi”中看到的字节似乎完全是二进制代码的UTF-8表示。
也许“vi”将读入的数据从二进制转换为UTF-8,然后再将其传递给“xxd”。