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

想根据gdb的反汇编来修改一个内核模块的汇编,没发现上面方便的工具,就直接用二进制编辑器来改了一下,还好是个简单的整型参数,该起来还比较简单。下面是用到的命令。

1.这两个命令都可以以十六进制打印输出二进制文件内容。可以指定偏移和打印格式等

hexdumpxxd

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

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

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

0000000:7f454c46010101000000000000000000.ELF............
0000010:01000300010000000000000000000000................
0000020:2ca70300000000003400000000002800,.......4.....(.
0000030:10000d005589e551518b450885c07411....U..QQ.E...t.
0000040:525250a10000000050e8fcffffff83c4RRP.....P.......
0000050:1089ec5dc38d76005589e55050b80100...]..v.U..PP...
0000060:00008b550839d073098d760001c039d0...U.9.s..v...9.
0000070:72fa8b5504515250a10000000050e8fcr..U.QRP.....P..
0000080:ffffff89ec5dc3905589e55050b80100.....]..U..PP...
0000090:00008b550839d073098d760001c039d0...U.9.s..v...9.
00000a0:72fa8b4d048b5510515250a100000000r..M..U.QRP.....
00000b0:50e8fcffffff89ec5dc389f65589e557P.......]...U..W
00000c0:565381ec8c0000008b5d1c8b451085dbVS.......]..E...
00000d0:757e85c07571508b450450a100000000u~..uqP.E.P.....
00000e0:688c00000050e8fcffffff83c41089c2h....P.........

然后就可以像修改文本文件一样修改16进制的字符,可以用/查找指定的偏移等等。修改右边的ascii字符应该无效。

修改完成后再执行;%!xxd-r切换会二进制模式,然后再:wq保存退出就可以了。在这vim里面这样编辑还是很方便的,注意一定要;%!xxd-r切换回来之后在保存才行。

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

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

ghex

bless(BlessisaHexEditorforGtk#http://home.gna.org/bless/)

UltraEdit

试过bless要比ghex好用,用bless应该可以满足大部分要求了吧。在ubuntu的软件中心中都可以的到。

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

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

vim-bdbase.kobase2.ko

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

ctrl+W+L把输入焦点切换到右边的窗口,激活右边的窗口后输入的命令就是针对右窗口了
:%!xxd-g1切换成十六进制的一个字节的模式
ctrl+W+H把输入焦点切换到左边的窗口
:%!xxd-g1
]+c查找上一个不同点
[+c查找下一个不同点
0012930:89df6877010000e8fcff|0012930:89df6878010000e8fcf

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值