使用bash编辑可执行文件而不重新编译它?

时间:2018-04-22 17:26:55

标签: bash executable binaryfiles editing

我试图以这种方式编写用于编辑可执行文件的脚本(例如/ bin / bash):

搜索字符串 - 用新字符串替换旧字符串 - 保存对原始文件的更改(显然我出于安全原因尝试了/ bin / bash的副本)

我的字符串是一个单词。我该怎么办?

1 个答案:

答案 0 :(得分:1)

您可以使用sed轻松修改二进制文件中的字符串,但是 在评论中注意到它通常仅在旧字符串和新字符串具有相同长度时才起作用。以bash为例:

$ cp /bin/bash .
$ strings bash  | grep such
describe_pid: %ld: no such pid
    it creates, on systems that allow such control.
          such as cd which change the current directory.
%s: no such job
$ sed 's,no such job,no such boj,' -i bash
$ ./bash --noprofile --norc
bash-4.3$ kill %3333
bash: kill: %3333: no such boj
-i的{​​{1}} POSIX 所以如果你想实现最大的可移植性:

sed