Linux中将shell脚本打包为可执行文件
在实际运行中,将一个写好的脚本部署到生产系统上,但碍于保密或者密码泄露问题,需要将脚本打包封装。现在总结两种脚本打包方法,第二种shc实用性更加强。
1、gzexe加密
gzexe命令即可隐藏shell源码,这个命令是系统自带的gzexe程序。在运用中, gzexe script.sh会把原来没有加密的文件备份为 script.sh~ ,同时 script.sh 即被变成加密文件。 gzexe -d script.sh会解密还原脚本,所以只能够满足一般的加密用途。
看看下面的测试加密echo1脚本,脚本本来是输出111111,原来没有加密的文件备份为 echo1~,加密后脚本还是文本文件,打开后的脚本是加密后的,看不到原文信息了。 gzexe -d echo1就可以还原,所以gzexe 只能用于一般的用途,可以对一般人员加密,遇到专业人士就就要露馅了。
gzexe是将脚本内容加密,加密后还是脚本的文本文件,而且加密后可以解除加密。
gzexe加密 gzexe -d解除加密2、shc打包二进制文件
在源中搜索软件:apt-cache search shc,显示shc为Shell script compiler,然后安装 apt-get install shc ,安装后程序放置于/usr/bin/shc。
shc把shell脚本封装为一个可执行的二进制文件,shc -h查看使用方法:
shc -v -r -f echo1 打包成echo1.x二进制文件,同时生成 echo1.x.c文件,这个为C语言文件。猜想这个工具是将shell脚本转为C语言,然后在打包成二进制文件。
如果打包不成功的话,shc -h最下面有environment环境要求,要在保证满足。
3、shc的反编译UnSHc
github上克隆:git clone https://github.com/yanncam/UnSHc.git,文件夹lastest中有个脚本unshc.sh可以完成反编译功能。
./unshc.sh -h查看使用方法,笔者使用sample里面的例程测试可以。但是笔者觉得这个工具意义不大,除非知道二级制文件是使用shc来编译的,不然反编译出来也不成功。反编译UnSHc对于开发人员来说作用不大。