gzexe a.sh
原来的 a.sh 就被存为 a.sh~,新的 a.sh 是乱码,但是可以用 sh 的方式运行。
一、 如果在 C 程序用 system() 来运行,就一点意义都没有了,
因为 system 就是就是又开了一个shell进程,然后其内容也是shell -c "" 中的参数。你可以在命令行中:
system("ls -l") 就相当于
sh -c 'ls -l'
这应该能够解释为什么在C中会暴露所有源码的问题。
二、如果是用shell,就一定不可能存在保险的加密方法!
因为shell是一种解释性的语言,它必须能被读,被逐行被解释器读入,所以不管用了何种方式,最后都逃不掉必须还原为明文,明文还能被读这一过程,这就决定了shell源码不可能有有效加密方式的宿命。
比如有做同样一件事的两个程序
---x--x--x 1 jingyi stud 806 Jan 14 03:02 a.out
---x--x--x 1 jingyi stud 94 Dec 20 15:49 a.sh
a.out 为 C 的编译产物,而 a.sh 是 shell 程序。 它们都有执行位,但是 a.out 能被执行,但是 a.sh 则不行!原因就是 a.sh 缺了 -r 位。
三、在不能保证安全的情况下,敏感口令还是不要出现在shell程序中为好。很多程序为了安全,不但不出现在程序中,还不准出现在命令行中,特意做成交互式的。因为在命令行中,通过 history 或其它类似手段重现历史命令,非常不安全。
四、如果只是出于防范不太高手的内部用户,执行
gzexec a.sh
后,a.sh 中源码会看不见了。原来的文件被更名为 a.sh~ ,并且不需要了,你可以删除或存在其它地方。
shc是一个加密shell脚本的工具.它的作用是把shell脚本转换为一个可执行的二进制文件.
用shell脚本对系统进行自动化维护,简单,便捷而且可移植性好.
但shell脚本是可读写的,很有可能会泄露敏感信息,如用户名,密码,路径,IP等.
同样,在shell脚本运行时会也泄露敏感信息.
shc是一个加密shell脚本的工具.它的作用是把shell脚本转换为一个可执行的二进制文件.
这就很好的解决了上述问题.
shc的下载地址:
安装:
tar zxvf shc-3.8.tgz
cd shc-3.8
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语言)
阅读(834) | 评论(0) | 转发(0) |