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). 二進制文件的剖析
歡迎關注本站公眾號,獲取更多信息