how to access and operate a binarry file ?
来源:互联网 发布:中山大学网络缴费 编辑:程序博客网 时间:2024/06/13 10:11
In some exception case, we need to check and modified a binary file byte by byte , in a Windows-like OS, we could use some tools like UtralEdit and so on.
but in a Linux/Unix-like OS, how can we do this ?
I suggest VIM.
VIM is a smart and powerful and flexible tool , it can do too much more things than our cognition.
here I'll show you how to use Vim to read and modified a binary file.
first, open the binary file by vim :
vim -b test.bin
at this this moment, you'll see some digital gibberish like below:
QFI<fb>^@^@^@^C^@^@^@^@^@^@^A^H^@^@^@*^@^@^@^P^@^@^@^B@^@^@^@^@^@^@^@^@^@^@^R^@^@^@^@^@^C^@^@^@^@^@^@^@^A^@^@^@^@^@^A^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^ @^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^D^@^@^@hh^C<f8>W^@^@^@<90>^@^@dirty bit^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^Acorrupt bit^@^@ ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^A^@lazy refcounts^@^@^@^
...
then, type "%!xxd" in Vim's command mode, you'll see the digital gibberish been converted to hex and showed like below:
1 0000000: 5146 49fb 0000 0003 0000 0000 0000 0108 QFI.............
2 0000010: 0000 002a 0000 0010 0000 0002 4000 0000 ...*........@...
3 0000020: 0000 0000 0000 0012 0000 0000 0003 0000 ................
4 0000030: 0000 0000 0001 0000 0000 0001 0000 0000 ................
5 0000040: 0000 0000 0000 0000 0000 0000 0000 0000 ................
6 0000050: 0000 0000 0000 0000 0000 0000 0000 0000 ................
7 0000060: 0000 0004 0000 0068 6803 f857 0000 0090 .......hh..W....
8 0000070: 0000 6469 7274 7920 6269 7400 0000 0000 ..dirty bit.....
9 0000080: 0000 0000 0000 0000 0000 0000 0000 0000 ................
10 0000090: 0000 0000 0000 0000 0000 0000 0000 0000 ................
11 00000a0: 0001 636f 7272 7570 7420 6269 7400 0000 ..corrupt bit...
12 00000b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
13 00000c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
14 00000d0: 0100 6c61 7a79 2072 6566 636f 756e 7473 ..lazy refcounts
15 00000e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
16 00000f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
17 0000100: 0000 0000 0000 0000 2f72 6f6f 742f 7465 ......../root/te
18 0000110: 7374 2f69 6d61 6765 2f69 6133 3265 5f72 st/image/ia32e_r
19 0000120: 6865 6c37 7532 5f63 7075 3230 3036 2e69 hel7u2_cpu2006.i
20 0000130: 6d67 0000 0000 0000 0000 0000 0000 0000 mg..............
now, you can modify the hex words in the Vim's edit mode, for example , here I will modify the red block of the above text.
after it , type "%!xxd -r" to convert the hex type to binary type,
save this file like you always doing in Vim. Now , this binary file had been modified .
open this file again , you'll see like below:
1 0000000: 0000 1400 0000 0000 0000 0000 0000 0000 ................
2 0000010: 0000 002a 0000 0010 0000 0002 4000 0000 ...*........@...
3 0000020: 0000 0000 0000 0012 0000 0000 0003 0000 ................
4 0000030: 0000 0000 0001 0000 0000 0001 0000 0000 ................
5 0000040: 0000 0000 0000 0000 0000 0000 0000 0000 ................
6 0000050: 0000 0000 0000 0000 0000 0000 0000 0000 ................
7 0000060: 0000 0004 0000 0068 6803 f857 0000 0090 .......hh..W....
8 0000070: 0000 6469 7274 7920 6269 7400 0000 0000 ..dirty bit.....
9 0000080: 0000 0000 0000 0000 0000 0000 0000 0000 ................
10 0000090: 0000 0000 0000 0000 0000 0000 0000 0000 ................
11 00000a0: 0001 636f 7272 7570 7420 6269 7400 0000 ..corrupt bit...
12 00000b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
13 00000c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
14 00000d0: 0100 6c61 7a79 2072 6566 636f 756e 7473 ..lazy refcounts
15 00000e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
16 00000f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
17 0000100: 0000 0000 0000 0000 0000 0000 0000 0000 ................
18 0000110: 7374 2f69 6d61 6765 2f69 6133 3265 5f72 st/image/ia32e_r
19 0000120: 0000 0000 0000 0000 0000 0000 0000 0000 ................
20 0000130: 0000 0000 0000 0000 0000 0000 0000 0000 ................
21 0000140: 0000 0000 0000 0000 0000 0000 0000 0000 ................
22 0000150: 0000 0000 0000 0000 0000 0000 0000 0000 ................
see the red block , what difference you've found than before?
good job !
haha, thanks.
- how to access and operate a binarry file ?
- how to operate softmac
- How to access resource file
- The Classical Example using DOM to operate a XML File
- How to open and sort a CSV file with Ruby
- How to Access and Use the Windows Hosts File in Windows 7 and Vista
- QT27 how to read text file and display file to a textbrowser or textedit
- How to open a file
- how to access file in kernel space
- How to resize a *.jpg image and save the result to a file
- How to Output a List of Files to a File and Sort Them in Linux
- how to use pl to operate excel
- how to use perl to operate excel
- How to mount partition with ntfs file system and read write access
- How to mount partition with ntfs file system and read write access
- How to access a value defined in the application.properties file in Spring Boot ( Externalized Conf)
- How to operate data in JTable ?
- how to operate BHO(browser help object)
- 斐波那契数列的几种求法
- 一篇学习HTTP状态码的神文:爱情的力量、生活的乐趣
- Java 代理之动态代理 (续前)
- Leetcode 268. Missing Number
- javascript 随记
- how to access and operate a binarry file ?
- Android Studio教程从入门到精通
- ImageLoader must be init with configuration before using
- Javascript深度复制对象
- strcpy和memcpy的区别
- 3、javascript脚本语言
- android-async-http 源码流程浅析
- ajax和jquery传输数据
- C#中RestoreDirectory属性