加密工具介绍
shc(Shell Sc
以下是一些关于shc工具的主要特点和使用说明:
- 保护脚本源代码:
shc编译器会将Shell脚本转换为C语言代码,并生成一个可执行的二进制文件,从而隐藏了脚本的源代码。这可以防止他人查看或修改您的脚本。 - 加密和压缩:
shc还提供了加密和压缩选项,以进一步保护编译后的二进制文件。加密功能使用密码来加密生成的C代码,只有正确的密码才能运行二进制文件。 - 平台兼容性: 编译的二进制文件在支持相应的Shell解释器的系统上运行。因此,通过
shc编译的二进制文件可以在与原始脚本具有兼容Shell解释器的系统上运行,无需安装任何其他依赖项。 - 使用简单: 使用
shc非常简单。只需在命令行中执行shc命令,并指定要编译的源代码文件,shc将在当前目录生成一个可执行的二进制文件。
项目地址:https://github.com/neurobin/shc
1、下载、编译安装
由于 SHC 已长时间未更新,目前遇到了几个问题如下:
1、建议在加密 SHELL 脚本时使用 CentOS 7 系统安装 SHC 工具。在新版本Linux系统中安装的 SHC 工具对脚本加密后,在其他 低版本Linux 发行版上运行时,会出现 GLIBC 版本不兼容的问题。
2、加密后的二进制文件,执行过程中,可以通过ps -aux 查看到脚本里面的内容
[root@localhost ~]# mkdir -p /opt/soft && cd $_
[root@localhost soft]# wget https://github.com/neurobin/shc/archive/refs/tags/4.0.3.tar.gz
# 构建和安装软件
[root@localhost soft]# tar -xf 4.0.3.tar.gz
[root@localhost soft]# cd shc-4.0.3/
[root@localhost shc-4.0.3]# mkdir -p /usr/local/man/man1/ # 创建目录这一步这个是必须的,没这个目录会报错
[root@localhost shc-4.0.3]# ./configure
[root@localhost shc-4.0.3]# make
# 安装
[root@localhost shc-4.0.3]# make install
2、对脚本进行加密
注意:脚本文件中一定到写上魔法字符 #!/bin/bash 不然无法加密
语法:shc [-e date] [-m addr] [-i iopt] [-x cmnd] [-l lopt] [-o outfile] [-rvDSUHCABh] -f script
| 参数 | 参数说明 |
-e <日期> | 设置脚本的过期日期(格式:dd/mm/yyyy)。过期后运行脚本会显示提示信息。 |
-m <消息> | 设置脚本过期时显示的消息(默认:”Please contact your provider”)。 |
-f <脚本文件> | 指定要编译的 Shell 脚本文件。 |
-i <选项> | 为 Shell 解释器设置内联选项(如 -e)。 |
-x <命令> | 设置执行命令的格式(如 exec('%s',@ARGV);)。 |
-l <选项> | 设置最后一个 Shell 选项(如 --)。 |
-o <输出文件> | 指定编译后的输出文件名。 |
-r | 放宽安全性,生成可再分发的二进制文件。 |
-v | 显示详细的编译过程。 |
-S | 启用 setuid,允许 root 调用程序(默认关闭)。 |
-D | 启用调试执行调用(默认关闭)。 |
-U | 使二进制文件不可追踪(默认关闭)。 |
-H | 启用额外的安全保护(硬化)。 |
-C | 显示许可证信息并退出。 |
-A | 显示摘要信息并退出。 |
-B | 为 BusyBox 编译脚本。 |
-h | 显示帮助信息并退出。 |
[root@localhost ~]# shc -h
shc Version 4.0.3, Generic Shell Script Compiler
[root@localhost ~]# cat > shc_srcipt.sh <<EOF
> #!/bin/bash
> echo "hello shell"
> EOF
[root@localhost ~]# bash shc_srcipt.sh
hello shell
# 对上面的shell脚本进行加密
[root@localhost ~]# shc -v -f shc_script.sh -H -U -o shc_script
shc shll=bash
shc [-i]=-c
shc [-x]=exec '%s' "$@"
shc [-l]=
shc opts=
shc: cc shc_script.sh.x.c -o shc_script
shc: strip shc_script
shc: chmod ug=rwx,o=rx shc_script
- 执行后,会在脚本所在目录生成两个文件
[root@localhost ~]# ls
shc_script shc_script.sh shc_script.sh.x.c
shc_script.sh.x.c:是脚本的源文件,可以直接删除。shc_script:就是原来脚本加密后的可执行文件,可随意改名,不用赋权,shc处理的过程中有赋权这一步。
3、查看加密文件
[root@localhost ~]# cat shc_script

4、执行加密后的脚本
- 注意:执行加密脚本时,通过
bash xxx或者sh xxx是无法执行的
[root@localhost ~]# ./shc_script
hello shell
5、常用选项应用示例
示例 1:基本编译
- 将一个 Shell 脚本编译为二进制文件:
shc -f script.sh -o compiled_script
-f script.sh:指定要编译的脚本文件。-o compiled_script:指定编译后的输出文件名。
示例 2:设置过期日期
- 编译脚本并设置过期日期:
shc -f script.sh -o compiled_script -e 15/02/2020
-e 15/02/2020:设置脚本在 2020 年 2 月 15 日后过期。
示例 3:显示过期消息
- 编译脚本并自定义过期时显示的消息:
shc -f script.sh -o compiled_script -e 15/02/2020 -m "This script has expired."
-m "This script has expired.":设置过期时显示的消息。
示例 4:启用详细编译输出
- 编译脚本并显示详细的编译过程:
shc -f script.sh -o compiled_script -v
-v:启用详细输出。
示例 5:生成可再分发的二进制文件
- 编译脚本并放宽安全性,生成可再分发的二进制文件:
shc -f script.sh -o compiled_script -r
-r:放宽安全性,允许二进制文件在其他系统上运行。
示例 6:增强安全性
- 编译脚本并启用额外的安全保护(硬化):
shc -f script.sh -H -U -o compiled_script
-H:启用额外的安全保护。-U:使二进制文件不可追踪
注意事项
使用shc编译生成的二进制文件只是将其源代码隐藏在可执行文件中,但通过执行ps -ef命令可以查看到正在运行的进程及其参数,包括编译后的二进制文件名称和路径。
这是因为编译后的二进制文件仍然需要Shell解释器来运行。当您执行编译后的二进制文件时,Shell解释器会创建一个新的进程,并将其显示在ps输出中。
请注意,shc工具主要用于隐藏和保护Shell脚本的源代码,以防止普通用户轻易查看或修改。它并不旨在提供绝对的安全性。如果您需要更高级别的代码保护,建议考虑其他技术,如加密存储、访问控制、数字签名等。

必须 注册 为本站用户, 登录 后才可以发表评论!