Bash-如何使Linux脚本文件变得不可读?

Bash-如何使Linux脚本文件变得不可读?

我见过许多 Linux 脚本,它们虽然可执行,但由于是二进制格式,所以无法读取。

我的问题是如何使我的脚本不可读/二进制格式?

答案1

我的问题是如何使我的脚本不可读/二进制格式?

一般来说,你无法以任何不痛苦的方式轻易做到这一点。

脚本是纯文本文件(而非非文本二进制文件),必须由脚本解释器读取。脚本解释器使用运行脚本的用户的 ID 和权限运行。因此,脚本必须可供用户读取,因此无需使用脚本解释器即可直接读取。

有多种方法可以混淆脚本,但这只会让生活变得更加困难,而并不能真正阻止阅读脚本。

原则上,您可以创建一个 Set-UID 脚本解释器,它在运行时使用更高的权限,因此可以读取用户自己无权读取的脚本文件。有些脚本解释器是故意编写的,因此出于安全原因,它们拒绝以这种方式以提升的权限运行。

如果您想创建一个源代码不易读懂的程序,您可以将脚本转换为编译语言或使用各种黑客手段。但反编译器、反汇编器和其他工具通常可以从编译代码重新创建可读源代码。

我见过许多 Linux 脚本,它们虽然可执行,但由于是二进制格式,所以无法读取。

我没有。在我看来,二进制格式的任何东西都不是脚本。我很想看一个例子。

答案2

只是想法 - 我从来没有真正尝试过这样的事情 - 但你不能编写自己的包含解码器引擎的脚本解释器吗?因此,脚本的第一行是“#!/bin/cryptoshell”,脚本文件中的所有其他内容都由单独的脚本编码器引擎加密。

但问题是,你为什么要这样做。我的意思是,大多数 bash 脚本本身就很难理解 :-)

答案3

gzexe 是一个被低估的糟糕黑客。在各种 zip 版本中是否有类似的功能 - pkzip?如果它可以解决您的问题,请告诉我 :)。作为一个老糊涂,我会使用一个小的 perl 存根对脚本进行异或和解异或,并将其通过管道传输到 sh。

相关内容