Ubuntu Linux 查看、编辑、比较二进制文件

查看二进制有以下几种方法:

方法一:hexdump

apt-get install libdata-hexdumper-perl

安装好之后就可以直接hexdump your_binary_file

也可以直接使用hd命令来代替hexdump

如果想要慢慢看 : hd your_binary_file | more


方法二:

Vim 可以用来查看和编辑二进制文件

vim -b egenea-base.ko   加上-b参数,以二进制打开

然后输入命令  :%!xxd -g 1  切换到十六进制模式显示

0000000: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00  .ELF............
0000010: 01 00 03 00 01 00 00 00 00 00 00 00 00 00 00 00  ................
0000020: 2c a7 03 00 00 00 00 00 34 00 00 00 00 00 28 00  ,.......4.....(.
0000030: 10 00 0d 00 55 89 e5 51 51 8b 45 08 85 c0 74 11  ....U..QQ.E...t.
0000040: 52 52 50 a1 00 00 00 00 50 e8 fc ff ff ff 83 c4  RRP.....P.......
0000050: 10 89 ec 5d c3 8d 76 00 55 89 e5 50 50 b8 01 00  ...]..v.U..PP...
0000060: 00 00 8b 55 08 39 d0 73 09 8d 76 00 01 c0 39 d0  ...U.9.s..v...9.
0000070: 72 fa 8b 55 04 51 52 50 a1 00 00 00 00 50 e8 fc  r..U.QRP.....P..
0000080: ff ff ff 89 ec 5d c3 90 55 89 e5 50 50 b8 01 00  .....]..U..PP...
0000090: 00 00 8b 55 08 39 d0 73 09 8d 76 00 01 c0 39 d0  ...U.9.s..v...9.
00000a0: 72 fa 8b 4d 04 8b 55 10 51 52 50 a1 00 00 00 00  r..M..U.QRP.....
00000b0: 50 e8 fc ff ff ff 89 ec 5d c3 89 f6 55 89 e5 57  P.......]...U..W
00000c0: 56 53 81 ec 8c 00 00 00 8b 5d 1c 8b 45 10 85 db  VS.......]..E...
00000d0: 75 7e 85 c0 75 71 50 8b 45 04 50 a1 00 00 00 00  u~..uqP.E.P.....
00000e0: 68 8c 00 00 00 50 e8 fc ff ff ff 83 c4 10 89 c2  h....P.........

 

       然后就可以像修改文本文件一样修改16进制的字符,可以用 / 查找指定的偏移等等。修改右边的ascii字符应该无效。修改完成后再执行:%!xxd -r  切换会二进制模式,然后再 :wq 保存退出就可以了。在这vim里面这样编辑还是很方便的,注意一定要:%!xxd -r切换回来之后在保存才行。

方法三.  linux 上面也有十六进制编辑的GUI工具

jeex (http://www.hds619.net/jeex.php)

ghex

bless  (Bless is a Hex Editor for Gtk#    http://home.gna.org/bless/)

UltraEdit





二  比较两个二进制文件,可以使用vimdiff。

vimdiff应该还是比较好用的,类似windows 平台的windiff

vim -bd base.ko base2.ko

打开后就可以在两个窗口里面显示两个文件

ctrl + W +L  把输入焦点切换到右边的窗口,激活右边的窗口后输入的命令就是针对右窗口了
:%!xxd -g 1  切换成十六进制的一个字节的模式
ctrl + W +H  把输入焦点切换到左边的窗口
:%!xxd -g 1
] + c  查找上一个不同点
[ + c  查找下一个不同点
  0012930: 89 df 68 77 01 00 00 e8 fc ff|  0012930: 89 df 68 78 01 00 00 e8 fc f



<think>好的,我需要回答用户关于在Linux下如何编辑或修改二进制文件的问题。首先,我要根据用户提供的引用资料整理出几种可行的方法。用户提到了sed、hexedit、Vim的进制模式、以及可能的其他工具如Bless或GHex。我需要确保每种方法都正确引用对应的资料,并且步骤清晰。 首先,sed作为流编辑器,虽然主要用于文本,但用户引用[1]提到它也可以处理进制流,所以这里需要说明如何用sed修改二进制文件,比如替换特定字节。然后,hexedit工具在引用[4]中提到,是一个直观的十六进制编辑器,需要描述其安装和使用方法。接着,引用[3]提到Vim的进制模式,需要详细说明如何用Vim打开文件,进入进制模式,替换十六进制值,并保存。此外,其他工具如Bless和GHex可能也需要简要提及,作为替代选项。 需要注意用户要求所有数学表达式用$...$,但这个问题可能不涉及数学公式,所以可能不需要。但如果有的话,比如涉及偏移量计算,要确保格式正确。另外,回答结构要清晰,分步骤说明每种方法,并在引用处加上正确的标识符,如[^1]、[^3]等。最后生成相关问题,可能涉及工具比较、安全注意事项、恢复方法等。 需要检查每个步骤是否正确,引用是否对应正确。例如,sed的例子是否正确,Vim的步骤是否准确。另外,要确保语言简洁,用中文回答,不使用Markdown格式,但用户提供的示例中有代码块,可能需要保留。不过根据用户系统级指令,代码块需要用```python等格式,但实际回答中用户的问题是关于进制编辑,可能使用其他语言的代码块,比如shell命令,需要注意格式正确。 最后生成的相关问题需要与主题相关,可能包括其他工具、风险、应用场景等。确保所有引用都正确对应到用户提供的参考资料。</think>在Linux系统中编辑或修改二进制文件需要借助特定工具和方法,以下是几种常用方式及操作步骤: ### 一、使用sed进行进制编辑 1. **替换进制内容** 通过流编辑器`sed`直接替换文件中的进制序列: ```bash sed -i 's/\x48\x65\x6C\x6C\x6F/\x48\x69\x21\x21/g' target.bin ``` 该命令将二进制文件中连续的`\x48\x65\x6C\x6C\x6F`(对应ASCII "Hello")替换为`\x48\x69\x21\x21`(对应ASCII "Hi!!")[^1]。 ### 、使用hexedit工具 1. **安装与启动** 通过包管理器安装`hexedit`: ```bash sudo apt install hexedit # Debian/Ubuntu sudo yum install hexedit # CentOS/RHEL ``` 运行后直接编辑十六进制值: ```bash hexedit file.bin ``` 支持方向键导航、直接修改十六进制或ASCII区域[^4]。 ### 三、Vim进制编辑模式 1. **启用进制模式** 使用Vim打开文件时添加`-b`参数: ```bash vim -b file.bin ``` 2. **进入编辑状态** ```vim :%!xxd # 转换为十六进制视图 :%!xxd -r # 转换回进制保存 ``` 输入`R`进入改写模式,仅修改左侧十六进制部分有效[^3]。 ### 四、其他图形化工具 - **Bless**:支持高亮语法和偏移量跳转 ```bash sudo apt install bless ``` - **GHex**:GNOME环境下的十六进制编辑器 ```bash sudo apt install ghex ``` ### 注意事项 - **备份文件**:修改前务必执行`cp file.bin file.bin.bak` - **权限问题**:需使用`sudo`编辑系统保护文件 - **兼容性**:部分工具对大文件(>1GB)支持有限
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值