Shell脚本的4种加密详细教程

普及,shell脚本是什么?
Shell Script,Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比Windows下的批处理更强大,比用其他编程程序编辑的程序效率更高,毕竟它使用了Linux/Unix下的命令。
对于shell脚本加密,常见的方法有gzexe压缩,shc加密,upx压缩以及C语言转接
本篇文章先介绍一下如何进行脚本加密

首先将需要加密的脚本放在服务器的root文件夹内(我这里所说的是CentOS系统)

gzexe压缩
gzexe 脚本名(如 gzexe test.sh)
原来的文件就加密了之后会在目录产生一个test.sh~的文件这个就是原来文件的备份

upx压缩
项目官网:https://upx.github.io/
项目地址:https://github.com/upx/upx/releases
这个算法我最近才发现,不过也应该是一个简单的加壳算法罢。需要去下载相应的执行程序。
下载完解压,赋予执行权限。
加密方法:

1
./upx 脚本名(如 ./upx test.sh)  

解密方法:

1
./upx -d 脚本名 (如./upx -d test.sh)  

shc加密
shc官网:http://www.datsi.fi.upm.es/~frosal/
安装方法:

1
2
3
4
5
6
wget http://www.datsi.fi.upm.es/%7Efrosal/sources/shc-3.8.9.tgz  
tar vxf shc-3.8.9.tgz  
cd shc-3.8.9  
make test  
make strings  
make install  

发现报错的情况比较严重
如果报错内容如下

1
2
3
4
5
6
\*\*\* Installing shc and shc.1 on /usr/local  
\*\*\* ?Do you want to continue? y  
install -c -s shc /usr/local/bin/  
install -c -m 644 shc.1 /usr/local/man/man1/  
install: target 

普及,shell脚本是什么?
Shell Script,Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比Windows下的批处理更强大,比用其他编程程序编辑的程序效率更高,毕竟它使用了Linux/Unix下的命令。
对于shell脚本加密,常见的方法有gzexe压缩,shc加密,upx压缩以及C语言转接
本篇文章先介绍一下如何进行脚本加密

首先将需要加密的脚本放在服务器的root文件夹内(我这里所说的是CentOS系统)

gzexe压缩
gzexe 脚本名(如 gzexe test.sh)
原来的文件就加密了之后会在目录产生一个test.sh~的文件这个就是原来文件的备份

upx压缩
项目官网:https://upx.github.io/
项目地址:https://github.com/upx/upx/releases
这个算法我最近才发现,不过也应该是一个简单的加壳算法罢。需要去下载相应的执行程序。
下载完解压,赋予执行权限。
加密方法:

1
./upx 脚本名(如 ./upx test.sh)  

解密方法:

1
./upx -d 脚本名 (如./upx -d test.sh)  

shc加密
shc官网:http://www.datsi.fi.upm.es/~frosal/
安装方法:

1
2
3
4
5
6
wget http://www.datsi.fi.upm.es/%7Efrosal/sources/shc-3.8.9.tgz  
tar vxf shc-3.8.9.tgz  
cd shc-3.8.9  
make test  
make strings  
make install  

发现报错的情况比较严重
如果报错内容如下

/usr/local/man/man1/' is not a directory: No such file or directory make: \*\*\* \[install\] Error 1

请创建 mkdir -p /usr/local/man/man1/  ,然后运行make install
也可以直接无视,一般没什么影响,只是少了对应的帮助文档。
常用参数:

1
2
3
4
5
6
7
8
9
\-e date (指定过期日期)  
\-m message (指定过期提示的信息)   
\-f script\_name(指定要编译的shell的路径及文件名)  
\-r   Relax security. (可以相同操作系统的不同系统中执行)  
\-v   Verbose compilation(编译的详细情况)  
加密方法:  
shc -v -f 脚本名(如shc -v -f test.sh)  
\-v 是现实加密过程  
\-f 后面跟需要加密的文件    

abc.sh.x为二进制文件,赋予执行权限后,可直接执行。更改名字mv test.sh.x test.sh 
abc.sh.x.c 是c源文件。基本没用,可以删除
过期加密法
另shc还提供了一种设定有效执行期限的方法,过期时间,如:
shc -e 14/09/2016 -m  -f test.sh
选项“-e”指定过期时间,格式为“日/月/年”;选项“-m”指定过期后执行此shell程序的提示信息。
如果在过期后执行,则会有如下提示:

1
2
./abc.sh.x    
./abc.sh.x: has expired!(文件已经过期)  

使用以上方法要注意,需防止用户更改系统时间,可以通过在程序中加入自动更新系统时间的命令来解决此问题。
测试都已通过,请放心使用
C语言转接
学习过Linux C语言的都应该知道最基础的命令
printf 打印函数
system 运行函数
下面我就教大家最简单的转接脚本

1
2
3
4
5
6
#include <string.h>  
 main()  
 {  
   system("wget 真实脚本地址");  
   return 0;  
 }  

得到一个C文件test.c
因为这个不能在linux中直接运行,所以需要进行编译

1
2
yum install -y gcc (编译安装需要的gcc环境)  
gcc -o test test.c  

然后得到就是可以直接运行的脚本文件test

坚持原创技术分享,您的支持将鼓励我继续创作!