Shc可以用來對shell指令碼進行加密,可以將shell指令碼轉換為一個可執行檔二進位檔案。經過shc對shell指令碼進行加密後,會同時產生兩種個新的檔案,一個是加密後的可執行檔二進位檔案(檔案名稱以.x結束),另一個是C語言的原檔案(檔案名稱以.x.c結束)。
下面就說明一下shc的安裝,參數,以及使用樣本:
下載安裝:
(官網下載地址: http://www.datsi.fi.upm.es/~frosal/sources/)
複製代碼 代碼如下:
# wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.7.tgz
# cd shc-3.8.7
# make
# make install
(僅用make就可以完成安裝,運行shc時要指出絕對路徑;用make install,將shc安裝到/usr/local/bin下,可以直接運行)
常用參數:
複製代碼 代碼如下:
-e date
Expiration date in dd/mm/yyyy format [none](指定到期日期)
-m message
message to display upon expiration ["Please contact your provider"](指定到期提示的資訊)
-f script_name
File name of the script to compile(指定要編譯的shell的路徑及檔案名稱)
-r Relax security.
Make a redistributable binary which executes on different systems running the same operat-ing system.(可以相同作業系統的不同系統中執行)
-v Verbose compilation(編譯的詳細情況)
使用樣本:
複製代碼 代碼如下:
[root@centos54 tmp]# /usr/local/src/shc-3.8.7/shc -e 20/10/2010 -m "lianxi aaa@163.com" -v -r -f ./ex.sh
-e:指定到期時間為2010年10月20日
-m:到期後列印出的資訊;
-v: verbose
-r: 可在相同作業系統的不同主機上執行
-f: 指定源shell
方法:
複製代碼 代碼如下:
shc -r -f script-name
注意:要有-r選項, -f 後跟要加密的指令碼名.
運行後會產生兩個檔案,script-name.x 和 script-name.x.c
script-name.x是加密後的可執行檔二進位檔案.
./script-name.x 即可運行.
script-name.x.c是產生script-name.x的原檔案(c語言)
說明:
經我測試,相同在作業系統,shc後的可執行二進位檔案直接可以移植運行,但不同作業系統可能會出現問題,如我將源shell在CentOS5.4上加密後移到redhat as5u4上不能運行,出現“Floating point exception”錯誤提示,但移到另一台CentOS5.4上直接運行沒問題。