SHC加密shell脚本

安装: 
# wget  http://www.datsi.fi.upm.es/%7Efrosal/sources/shc-3.8.6.tgz  
# tar zvxf shc-3.8.6.tgz 
# cd shc-3.8.6 
# make test 
# make strings 
# make install 
应用: 
下面以mysql数据库备份(备份文件经过ftp上传到一台远程的服务器)脚本为例: 
############################### mysql_backup.sh ############################## 
#!/bin/sh 
newtime=`date +%m-%d-%y_%I%M%p` 
mysqldump -u ****** -p ****** dbname | gzip > /Users/****/Documents/dbName_$newtime.sql.gz 
echo “backup of dbname” 
curl –upload-file dbname$newtime.sql.gz –url “ftp://*****:*****@host/” 
echo “ftp of dbname done” 
############################### mysql_backup.sh ############################## 
1). 加密脚本. 
# shc -v -r -f mysql_backup.sh 
-v: 是verbose模式,输出更详细编译日志. -f: 指定脚本的名称. 
上面命令在屏幕上的输出: 
shc shll=sh 
shc [-i]=-c 
shc [-x]=exec ‘%s’ “$@” 
shc [-l]= 
shc opts= 
shc: cc mysql_backup.sh.x.c -o mysql_backup.sh.x 
shc: strip mysql_backup.sh.x 
shc: chmod go-r mysql_backup.sh.x 
咱们能够看到生成了动态连接可执行二进制文件mysql_back.sh.x和C源文件mysql_backup.sh.x.c, 注意生成的二进制文件由于是动态连接形式, 因此在其它平台上不能运行: 
mysql_backup.sh.x: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), 
dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped 
2). 生成静态连接的二进制可执行文件. 
不过, 咱们能够经过下面的方法生成一个静态连接的二进制可执行文件: 
# CFLAGS=-static shc -r -f mysql_backup.sh 
# file mysql_backup.sh.x 
mysql_backup.sh.x: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), 
statically linked, for GNU/Linux 2.6.9, stripped 
提示: 经过sch加密后的脚本文件很安全吗? 
通常来讲是安全的, 不过能够使用gdb和其它的调试工具得到最初的源代码. 若是你须要更加安全的方法, 能够考虑使用wzshSDK. 
另外, sch还能够设置脚本的运行期限和自定义返回信息: 
shc -e 03/31/2007 -m “the mysql backup script is now out of date.” -f mysql_back.sh 
-e表示脚本将在2007/3/31日前失效, 并根据-m定义的信息返回给终端用户. 
3). 二进制文件的剖析 
相关文章
相关标签/搜索