Linux shell腳本加密

如何保護自己編寫的shell程序
要保護自己編寫的shell腳本程序,方法有很多,最簡單的方法有兩種:1、加密 2、設定過期時間,下面以shc工具爲例說明:

一、下載安裝shc工具
shc是一個加密shell腳本的工具.它的作用是把shell腳本轉換爲一個可執行的二進制文件.
 
# wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.7.tgz

安裝:
# tar zxvf shc-3.8.7.gz

# cd shc-3.8.7


# mkdir /usr/local/man/man1/ (install時會把man文件放入該目錄,如果該目錄不存在需提前建好) 這一步需要root權限

# make test
# make
# make test
# make strings
# make install   這一步需要root權限


二、加密方法:
shc -r -f script-name   注意:要有-r選項, -f 後跟要加密的腳本名.
運行後會生成兩個文件,script-name.x 和 script-name.x.c
script-name.x是加密後的可執行的二進制文件.
./script-name 即可運行.
script-name.x.c是生成script-name.x的原文件(c語言)
 

# shc -v -f test.sh

-v是verbose模式, 輸出更詳細編譯日誌;

-f 指定腳本的名稱.

# ll test*

-rwxr-xr-x   1 oracle oinstall    1178 Aug 18 10:00 test.sh
-rwx--x--x   1 oracle oinstall    8984 Aug 18 18:01 test.sh.x
-rw-r--r--   1 oracle oinstall   14820 Aug 18 18:01 test.sh.x.c

# file test.sh.x

test.sh.x: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), stripped

可以看到生成了動態鏈接可執行二進制文件test.sh.x和C源文件testup.sh.x.c, 注意生成的二進制文件因爲是動態鏈接形式, 所以在其它平臺上不能運行.

生成靜態鏈接的二進制可執行文件

可以通過下面的方法生成一個靜態鏈接的二進制可執行文件:

$ CFLAGS=-static shc -r -f test.sh

$ file testup.sh.x

 
三. 通過sch加密後的腳本文件很安全嗎?

一般來說是安全的, 不過可以使用gdb和其它的調試工具獲得最初的源代碼. 如果需要更加安全的方法, 可以考慮使用wzshSDK. 另外shc還可以設置腳本的運行期限和自定義返回信息:

$ shc -e 03/31/2007 -m "the mysql backup scrīpt is now out of date." -f test.sh

-e表示腳本將在2007年3月31日前失效, 並根據-m定義的信息返回給終端用戶.
 

題外:

如果你僅僅是看不見內容就行了的話,不妨用
gzexe a.sh

原來的 a.sh 就被存爲 a.sh~,新的 a.sh 是亂碼,但是可以用 sh 的方式運行


注意:當用shc生成二進制文件後執行的時候可能會出現”hang住“現象,特別是對該二進制文件傳參的時候,此時要編輯生成的.c文件,註釋掉最下面的//      untraceable(argv[0]); 然後再gcc去編譯,分別是gcc -c test.sh.x.c ;gcc test.sh.x.o -o test ;

目的是爲了出現異常的時候不自動發生trace。切記!

發佈了24 篇原創文章 · 獲贊 37 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章