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

标签 bash shell hex patch dd

this thread 中已经有一个漂亮的技巧了。 使用 dd 将字节写入所需地址的二进制文件,有没有办法交换字节(例如交换 0x000xFF),或替换bytes 使用常用工具(例如dd)?

最佳答案

请您尝试以下操作:

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

关于bash - 从命令行交换或替换二进制文件中的字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71182536/

相关文章:

bash - 如何正确处理 bash 脚本中的错误?

bash - 如何将参数传递给 makefile 中的目标?

linux - 在 shell 脚本中保存预定后台进程的终端输出

python - 从 .ABR 文件(Photoshop 笔刷集)中读取版本信息

python - 如何在 python 中将十六进制字符串转换为彩色图像?

c - 在 c 中将字节转换为整数时出现奇怪的值

linux - 如何用逗号而不是空格分割列表

bash - 用于添加 shell 别名的 Makefile

linux - 在 Travis-CI 中采购 .bashrc 不工作

python - 无法从 Spark 提交中的 JAR 文件加载主类