包含二进制可执行文件的 Bash 脚本

标签 bash unix binary dump

是否可以编写一个 bash 脚本,其中包含一个二进制可执行程序?

我的意思是一个脚本,它包含一个文本形式的可执行文件的转储,当它被执行时,它会被这个脚本转储回可执行文件?

我很想知道一个解决方案,它可以开箱即用,无需安装额外的软件包。可能吗?

谢谢!

最佳答案

我以前从来没有做过这样的事情;) 这将编译一些 c 源代码,创建一个包含二进制文件的 b.bash 脚本(以及用于简单开发的原始脚本)

(a.bash)

#!/bin/bash

if [ "$0" == "b.bash" ];then
  tail -n +$[ `grep -n '^BINARY' $0|cut -d ':' -f 1` + 1 ] $0 | base64 -d > a2.out
  chmod +x a2.out
  ./a2.out
  echo $?
  exit
fi

cat "$0" > b.bash
echo "BINARY" >> b.bash
cat > a.c << EOF
int     main(){
        return 12;
}
EOF
gcc a.c 
base64 a.out >> b.bash

调用(a.bash 生成 b.bash):

bash a.bash ;bash b.bash

我不知道如何避免在执行前将二进制文件写入临时文件...

关于包含二进制可执行文件的 Bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18410785/

相关文章:

linux - 如何在 Iterm 中插入制表符?

bash - 随机生成可变大小的测试文件

python - 如何将日志文件中的特定列提取到csv文件

java - 在 Unix 上使用 Java 验证 SSH 凭据

mysql - 安装 MySQL Workbench 但 File/etc/my.cnf 不存在

MySQL 在将十六进制转换为二进制时去除前导零

linux - 改变鞭尾鱼的颜色

mysql - 在 BASH 脚本中使用变量创建 MySQL 数据库

c# - 无法应用位掩码

c - 按位移位说明