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
CFLAGS中指定:-static选项等
以上参考了下文:
转载于:https://blog.51cto.com/linuxjcq/724130