把一个shell程序编译成二进制可执行文件

或者是其他形式的可执行文件,只要无法查看程序内容就行.

  但是,如果你仅仅是看不见内容就行了的话,不妨用

  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~ ,并且不需要了,你可以删除或存在其它地方。

  这只是个变通的方式(只能称之为变通,不能称这为加密,因为学过一点shell编程的人就能很轻松地还原它),也许对不太 geek 的用户群中可以凑合用用。

  希望以上解释对你和众多想加密shell的人有点帮助。

本文来自:Linux宝库 -- http://doc.linuxpk.com/426.html


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值