一、在Linux下查看二进制文件的软件:
 xxd (2进制)
 hexdump  (16进制)
  
 二、编辑:
 1、biew
 2、hexedit
 3、vim
 Vim 来编辑二进制文件。Vim 本非为此而设计的,因而有若干局限。但你能读
 取一个文件,改动一个字符,然后把它存盘。结果是你的文件就只有那一个字符给改了,
 其它的就跟原来那个一模一样。
    要保证 Vim 别把它那些聪明的窍门用错地方,启动 Vim 时加上 "-b" 参数:
         vim -b datafile
 这个参数设定了 'binary' 选项。其作用是排除所有的意外副作用。例如,'textwidth'
 设为零,免得文本行给擅自排版了。并且,文件一律以 Unix 文件格式读取。
 二进制模式可以用来修改某程序的消息报文。小心别插入或删除任何字符,那会让程序运
 行出问题。用 "R" 命令进入替换模式。
 文件里的很多字符都是不可显示的。用 Hex 格式来显示它们的值:
         :set display=uhex
 另外,也可以用命令 "ga"  来显示光标下的字符值。当光标位于一个  字符上时,
 该命令的输出看起来就像这样:
           27, Hex 1b,  Octal 033 
 文件中也许没那么多换行符。你可以关闭 'wrap' 选项来获得总览的效果:
         :set nowrap
 字 节 位 置
 要发现你在文件中的当前字节位置,请用这个命令:
         g CTRL-G
 其输出十分冗长:
     Col 9-16 of 9-16; Line 277 of 330; Word 1806 of 2058; Byte 10580 of 12206 
 最后两个数字就是文件中的当前字节位置和文件字节总数。这已经考虑了 'fileformat'
 选项导致换行符字节不同的影响。
     要移到文件中某个指定的字节,请用 "go" 命令。例如,要移到字节 2345:
         2345go
 使 用 XXD
 一个真正的二进制编辑器用两种方式来显示文本: 二进制和十六进制格式。你可以在 Vim
 里通过转换程序 "xxd" 来达到这效果。该程序是随 Vim 一起发布的。
    首先以二进制方式编辑这个文件:
         vim -b datafile
 现在用 xxd 把这个文件转换成十六进制:
         :%!xxd
 文本看起来像这样:
         0000000: 1f8b 0808 39d7 173b 0203 7474 002b 4e49  ....9..;..tt.+NI 
         0000010: 4b2c 8660 eb9c ecac c462 eb94 345e 2e30  K,.`.....b..4^.0 
         0000020: 373b 2731 0b22 0ca6 c1a2 d669 1035 39d9  7;'1.".....i.59. 
 现在你可以随心所欲地阅读和编辑这些文本了。 Vim 把这些信息当作普通文本来对待。
 修改了十六进制部分并不导致可显示字符部分的改变,反之亦然。
    最后,用下面的命令把它转换回来:
         :%!xxd -r
 只有十六进制部分的修改才会被采用。右边可显示文本部分的修改忽略不计。 
 
 
 比较两个二进制文件,可以使用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 

 
 注意事项:
一定要;%!xxd -r切换回来之后在保存才行。