shell程式中經常會有不能讓人看到的密碼,找到個工具叫shc可以編譯加密shell腳本。
1. 安裝shc
- yum install shc -y
需要安裝rpmforge才能yum安裝shc,安裝方式見:http://wiki.centos.org/zh/AdditionalResources/Repositories/RPMForge?highlight=%28rpmforge%29
2. shc使用
a. 選項
- shc [ -e date ] [ -m message ] [ -i iopt ] [ -x cmnd ] [ -l lopt ] [ -ACDhTv ] -f script
說明:
-e date:設定過期日期,格式:dd/mm/yyyy
-m message:指定過期時提示的日期
-f scriptname:指定要編譯的腳本名
-r:可以在相同版本系統的不同機器上執行
-v:顯示編譯的詳細資訊
b. 使用
- shc -r -f scriptname
執行指令後會生成檔案:scriptname.x.c scriptname.x
scriptname.x.c:生成scriptname.x二進制檔案的源檔案,該檔案為C語言的源代碼,可以打開檔案檢視,裡面就是linux下C的代碼
scriptname.x:二進制可執行檔案
c. 指定過期時間和資訊
- shc -r -e dd/mm/yyyy -m "message" -f scriptname
生成的程式将在dd/mm/yyyy日期過期,那時候執行時會提示:message
d. 動态庫
檢視
- file scriptname.x
- scriptname.bash.x: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
注意:dynamically linked(uses shared libs)使用的是動态連結庫,不能跨平台使用
可以使用ldd檢視具體使用的庫
- ldd scriptname.x
如:
- ldd mysql_backup.bash.x
- linux-vdso.so.1 => (0x00007fff019ff000)
- libc.so.6 => /lib64/libc.so.6 (0x0000003a3c200000)
- /lib64/ld-linux-x86-64.so.2 (0x0000003a3ba00000)
e. 靜态庫
- CFLAGS=... shc -r -f scriptname