> 文章列表 > linux shell 操作二进制文件(xxd、dd)

linux shell 操作二进制文件(xxd、dd)

linux shell 操作二进制文件(xxd、dd)

1,生成一个二进制文件

         dd 工具

# 全零 二进制文件
dd if=/dev/zero of=1.bin bs=1 count=1024#全0xff
tr '\\000' '\\377' < /dev/zero | dd of=all_0xff.bin bs=1 count=1024 > /dev/null

xxd 工具:只能改单个地址

#
echo "0x123" | xxd -r – xxd.bin

修改二制文件某个地址的值,比如修改上位全FF  all_oxff.bin 里,第10个地值时

 echo "10:0x12" | xxd -r - all_0xff.bin

yuan@ubuntu:~$ echo "10:0x12" | xxd -r - all_0xff.bin 
yuan@ubuntu:~$ xxd all_0xff.bin 
0000000: ffff ffff ffff ffff ffff ffff ffff ffff  ................
0000010: 12ff ffff ffff ffff ffff ffff ffff ffff  ................
0000020: ffff ffff ffff ffff ffff ffff ffff ffff  ................
0000030: ffff ffff ffff ffff ffff ffff ffff ffff  ................
0000040: ffff ffff ffff ffff ffff ffff ffff ffff

 注意:使用 hexdump 查看二进制文件 结果是不一样,他会有大小端的区别。

 

2,将两个bin 文件合成一个

这样的话 0在前面。 0xff 在后面 

cat 1.bin al_0xff.bin  > 2.bin

3,更改二进制文件里面某一块地址的内容

 把 dd 和xxd 结合使用, dd  生成一块内容。 然后使用xxd 去改你想要改的内容

# 使用dd 生成一个全是零的bin文件 长度为10
dd if=/dev/zero of=1.bin bs=1 count=10
# 使用xxd 把前面全0xff 的文件从0x10 开始改成0
xxd 1.bin | xxd -r -s 0x10 - all_0xff.bin

如果想改成自己想要的地址,利用好for 这些工具吧