shc在嵌入式Linux上的使用
shell脚本转成二进制可执行程序:
gzexe
gzexe命令即可隐藏shell源码,它不但加密,同时压缩文件
gzexe xxx.sh
生成加密后的脚本xxx.sh和shell备份源码xxx.sh~
缺点: gzexe
可以直接转换明文。
gzexe -d xxx.sh
shc
通过shc
加密后一般来说是安全的, 不过可以使用gdb和其它的调试工具获得最初的源代码. 如果你需要更加安全的方法, 可以考虑使用wzshSDK
.
另外, shc
还可以设置脚本的运行期限和自定义返回信息:
shc -e 11/23/2027 -m "xxx." -f xxx.sh
-e
表示脚本将在2027年11月23日前失效, 并根据-m
定义的信息返回给终端用户
shc编译
- 下载源码:http://www.datsi.fi.upm.es/~frosal/(官方), 也可以在github上搜索下载
./configure
配置生成Makefile- 修改
src
下面Makefile
:
根据使用场景修改CC
和CPP
,如果是嵌入式,则修改为对应的交叉编译链;如果是PC,则不需要修改 make
生成可执行程序
shc基本使用
shc -h
shc Version 4.0.3, Generic Shell Script Compiler shc GNU GPL Version 3 Md Jahidul Hamid <jahidulhamid@yahoo.com> shc Usage: shc [-e date] [-m addr] [-i iopt] [-x cmnd] [-l lopt] [-o outfile] [-rvDSUHCABh] -f script -e %s Expiration date in dd/mm/yyyy format [none] -m %s Message to display upon expiration ["Please contact your provider"] -f %s File name of the script to compile -i %s Inline option for the shell interpreter i.e: -e -x %s eXec command, as a printf format i.e: exec('%s',@ARGV); -l %s Last shell option i.e: -- -o %s output filename -r Relax security. Make a redistributable binary -v Verbose compilation -S Switch ON setuid for root callable programs [OFF] -D Switch ON debug exec calls [OFF] -U Make binary untraceable [no] -H Hardening : extra security protection [no] Require bourne shell (sh) and parameters are not supported -C Display license and exit -A Display abstract and exit -B Compile for busybox -h Display help and exit Environment variables used: Name Default Usage CC cc C compiler command CFLAGS <none> C compiler flags LDFLAGS <none> Linker flags Please consult the shc man page.
加密脚本.
# shc -v -r -f xxx.sh
生成两个文件,xxx.sh.x 和 xxx.sh.x.c.
其中xxx.sh.x是加密后的可执行的二进制文件,是动态链接形式;
xxx.sh.x.c是生成 xxx.sh.x的原文件(c语言)生成静态链接的二进制可执行文件.
# CFLAGS=-static shc -r -f xxx.sh
在嵌入式设备上使用:
编译时选择交叉编译链编译
编译完成后需将生成的
shc
可执行程序和需要转换的脚本文件拷贝到嵌入式设备上在设备上运行,生成相应的C文件,因嵌入式设备上一般不带编译链,所以还需要下一步
#一定要加上`-B` ./shc -r -f xxx.sh -B #一定要重新赋予可执行权限 chmod a+x xxx
将上一步生成的C文件拷贝到主机上,交叉编译生成对应的可执行程序
评论