bash - 是否可以将 bash 脚本转换为可执行文件?

标签 bash converters exe elf

问题很简单;是否可以将 bash 脚本转换为可执行文件?如果是,如何实现?

最佳答案

这是可能的,但你不想。

  • 这不会是有效的混淆。
  • 不会再小了。
  • 它不会更快。

不会变小

在支持将脚本编译成独立可执行文件的地方,这是通过将解释器的副本放入可执行文件来完成的。因此,这比单独的脚本要大得多。

不会更快

不幸的是,bash 使用的执行模型天生就很慢:几乎所有功能都由外部命令提供;简单命令的参数,甚至它们的名称,都可以通过扩展操作的结果进行修改。这种动态水平使得有效编译性能变得不可能。 (zsh 支持预编译过程,但好处有限,主要是解析自身的过程)。

这不会是有效的混淆

shc 为例:它按字面意思将脚本的原始源作为命令行参数传递。因此,可以通过从 /proc 中读取命令行参数或使用 strace 来读取该源代码。

正如他们所说,“默默无闻的安全根本不是安全”——任何有能力的人都可以轻松提取任何密码或以这种方式混淆的其他内容。

关于bash - 是否可以将 bash 脚本转换为可执行文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31280501/

相关文章:

bash 文件名通配 - 对以大写字母开头的文件进行操作

linux - 在 Bash 脚本中,函数的第二个参数未按预期处理

linux - 如何将后台作业的输出分配给 bash 变量?

android - 在MVVMCross中的ItemTemplate中绑定(bind)item对象

java - 如何将 HttpServletRequest 的 ParameterMap 转换为 Java 中的 bean

swift - 在 Int swift 中转换 Char

php - 如何使用 PHP 的参数执行 .exe 并将输出放入 txt 文件?

windows - 有没有办法制作只能播放一次的音频文件?

c++ - 文件能否同时是可执行文件 (EXE) 和动态链接库 (DLL)?

bash - bash 中 `set -o` 选项的预期有效顺序是什么? `histexpand` 胜过 `posix` 吗?