侧边栏壁纸
博主头像
运维贼船的技术小站 博主等级

行动起来,活在当下

  • 累计撰写 30 篇文章
  • 累计创建 19 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Shell脚本加密运行

aoarasi
2025-07-02 / 0 评论 / 0 点赞 / 1 阅读 / 0 字

0.背景

作为一名运维工程师,在实现一些Shell脚本的时候,往往会希望自己的脚本内容不被他人查看,但实际上作为解释型语言,并不能像编译型语言那样被转换为二进制,因此内容安装得不到保障。

下面介绍两种脚本的编译和加密方法,供大家参考使用:

1.shc加密(编译加密)

shc是shell编译器(Shell Compiler)的缩写,它能够将shell脚本编译为可执行的二进制文件,以实现隐藏代码的功能,推荐在安全性要求高的场景中使用。安装也非常简单,仅需以下一条命令:

yum -y install shc

shc是一个开源项目,也可以通过官方网站下载手动编译安装,地址为:

http://www.datsi.fi.upm.es/~frosal/sources/

img

还可在https://pkgs.org/ 中查到shc包文件后下载安装使用。

img

基本用法:

参数

参数说明

-h

显示帮助信息并退出

-f

指定需要加密的shell脚本

-v

参数-v表示verbose模式,输出更详细的编译日志

-r

可以在相同操作系统的不同系统中执行,也就是放宽安全限制,生成可再分发的二进制文件

-o

输出文件名,也可以不指定

-f

指定shell脚本名称

-e

指定过期日期

-m

指定过期后的提示信息

-U

使二进制无法被追踪,默认不开启

-H

强化:额外的安全保护,默认不开启,它需要shell不支持参数

常用举例:

# xxx.sh是需要进行加密的脚本。shc -f xxx.sh

img

使用shell脚本和二进制运行的结果一致。

img

查看编译后的源代码,和C语言类似:

cat hello.sh.x.c 

img

也可以指定过期时间和过期后的提示,如:

shc -e 01/10/2025 -v -f hello.sh或shc -e 01/10/2025 -v -m "the script has expired, please contact xxx@xxx.com" -f hello.sh 

过期后脚本将不再能够被执行。

另外,此编译的脚本只能在本机被执行,如果希望在其它同jiag架构的机器上运行,还需要指定-r选项,如:

shc -r -f xxx.sh

将生成后的二进制文件传输到其它平台,也能够被正常运行了。

2.gzexe加密(混淆加密)

gzexe无需安装任何软件,是linux自带的功能。通过gzexe命令,可以对脚本进行混淆,在加密要求度不高的场景下使用。如对hello.sh脚本进行加密,源文件为:

#!/bin/shecho "hello world"

加密脚本:

gzexe hello.sh

img

加密后,源文件会被移动为hello.sh~,加密的文件为hello.sh

解密也很简单,执行:

gzexe -d sshrc.sh

0

评论区