![有什么方法可以混淆“.sh”shell 脚本吗?](https://linux22.com/image/17497/%E6%9C%89%E4%BB%80%E4%B9%88%E6%96%B9%E6%B3%95%E5%8F%AF%E4%BB%A5%E6%B7%B7%E6%B7%86%E2%80%9C.sh%E2%80%9Dshell%20%E8%84%9A%E6%9C%AC%E5%90%97%EF%BC%9F.png)
我正在运行Ubuntu。我需要知道任何混淆.sh
shell 脚本文件内容的方法,以使其很难阅读。
欢迎任何建议,包括使用在线混淆器。
答案1
这实际上取决于您试图阻止谁阅读脚本以及您期望系统拥有哪些资源。
一种选择是简单地使用许多不同的程序来执行脚本的不同部分:shell、awk、sed、perl 等以及许多晦涩的工具参数,迫使读者不断参考手册页。
即使在 shell 中,您也可以创建不必要的函数和变量,使它们以令人困惑的方式相互依赖。当然,还要给它们起误导性的名字。
更复杂的是,您可以将二进制数据附加到 shell 的末尾,并让 shell 提取并执行二进制文件。我相信 nVidia 的 Linux 驱动程序和 Sun 的 JDK 都是通过这种方式安装的(二进制数据是一个 RPM,由 shell 提取并安装)。我前几天刚刚下载的另一个例子是肥皂用户界面程序。
在这种情况下,可以有一个可以用多种语言编译或解释的文本文件,因此它可以作为 shell 启动,将自身编译为 C 程序并执行结果。这国际奥委会有一些例子。
答案2
您可以使用 shc 来达到目的。
所以你可以使用这个命令来编码:
shc -f script.sh
它会生成两个文件:
script.sh.x
script.sh.x.c
该 .c 是 C 编程语言文件。 .x 是可执行文件。
因此,要运行它,请使用:
chmod +x script.sh.x
./script.sh.x
答案3
混淆与编译不同。 Internet 上有许多脚本可以很好地混淆 Bourne、Bash 或 Korn shell 脚本。
这是一个这样的脚本:obfuscate_shell_script-20011012.html
答案4
您可以将脚本复制到类似的网站kinglazy.com为您生成一个模糊的(可执行的)副本。