从命令行交换或替换二进制文件中的字节

Swap or replace bytes in a binary file from command line

this thread已经有绝招了 使用 dd 将字节写入所需地址的二进制文件,有没有办法交换字节(例如交换 0x000xFF ), 或者用常用工具替换字节(如dd)?

请您尝试以下操作:

xxd -p input_file | fold -w2 | perl -pe 's/00/ff/ || s/ff/00/' | xxd -r -p > output_file
  • xxd -p file 以连续 hexdump 方式转储二进制数据 file
  • fold -w2 每两个字符(=每个字节)换行输入行。
  • perl -pe 's/00/ff/ || s/ff/00/' 交换输入字符串中的 00ff|| 逻辑作为 if .. else .. 条件。否则输入 00 一旦转换为 ff 并立即再次转换回 00
  • xxd -r -pxxd -p 的反转版本,它转换输入 十六进制字符串转换为二进制文件。