使用SHC将Shell脚本编译为可执行文件

本文介绍如何利用SHC工具将Shell脚本编译为二进制可执行文件,包含安装指南、编译原理以及使用示例。该工具通过生成C源代码并编译实现脚本保护,支持设置脚本过期功能。

这篇文章已发布 1988 天,部分内容可能已过时。如有疑问,可在评论区留言。

介绍

官方仓库地址:https://github.com/neurobin/shc

一个通用的 shell 脚本编译器。Shc 接受一个在命令行中指定的脚本,并生成 C 源代码。然后生成的源代码被编译并链接以生成一个剥离的二进制可执行文件

编译后的二进制文件仍然依赖于 shell 代码第一行中指定的 shell (即 shebang)(即 # !/bin/sh) ,因此 shc 不会创建完全独立的二进制文件。

Shc 本身不是 cc 这样的编译器,而是对 shell 脚本进行编码和加密,并生成具有附加过期功能的 C 源代码。然后,它使用系统编译器编译一个精简的二进制文件,其行为与原始脚本完全一样。在执行时,已编译的二进制文件将使用 shell-c 选项解密并执行代码

安装

1
2
3
yum install epel-release
yum -y install gcc gcc-c++ libstdc++-devel
yum -y install shc
1
2
3
4
[root@template mnt]# shc -v
shc parse(-f): No source file specified

shc Usage: shc [-e date] [-m addr] [-i iopt] [-x cmnd] [-l lopt] [-o outfile] [-rvDSUHCABh] -f script

测试

1
2
shc -v -rf HelloWorld.sh
./HelloWorld.x
面朝大海,春暖花开。
使用 Hugo 构建
主题 StackJimmy 设计