二进制文件实际也是类似于文本文件,可以用bash命令sed直接修改,关键是找到要修改哪里

例如我现在有文件:

file iconAndroidManifest.xml

先使用工具查看它原始字符:

上传到网站查看文件二进制数据、十六进制数据 - 在线工具

然后找出你需要修改的位置,或者把转出来的内容发给ai,让他解析一下你需要修改的位置在哪里,

例如此文件,ai指出我需要修改的是版本号,位置在630行左右,

image.png

然后自己在文件中看:

image.png

其实是620和630两行,

在二进制文件中其实是完整字符:

69 00 67 00 00 00 08 00 31 00 2e 00 32 00 2e 00 30 00 2e 00 31 00 38 00 00 00 02 00 31 00 38 00

对应的是ig 1.2.0.18 18

把这段16进制,直接替换为新值就可以了,保证位数一致:

plaintext
OLD_HEX="69 00 67 00 00 00 08 00 31 00 2e 00 32 00 2e 00 30 00 2e 00 31 00 38 00 00 00 02 00 31 00 38 00"
NEW_HEX="69 00 67 00 00 00 08 00 31 00 2e 00 32 00 2e 00 30 00 2e 00 31 00 38 00 00 00 02 00 31 00 36 00"
sed -i "s/$OLD_HEX/$NEW_HEX/g" hex.txt