zoukankan      html  css  js  c++  java
  • shell脚本加密

     
    如何保护自己编写的shell程序
    要保护自己编写的shell脚本程序,方法有很多,最简单的方法有两种:1、加密 2、设定过期时间,下面以shc工具为例说明:

    一、下载安装shc工具
    shc是一个加密shell脚本的工具.它的作用是把shell脚本转换为一个可执行的二进制文件.
     
    # wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.7.tgz

    安装:
    # tar zxvf shc-3.8.7.gz

    # cd shc-3.8.7


    # mkdir /usr/local/man/man1/ (install时会把man文件放入该目录,如果该目录不存在需提前建好) 这一步需要root权限

    # 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语言)
     

    # shc -v -f test.sh

    -v是verbose模式, 输出更详细编译日志;

    -f 指定脚本的名称.

    # ll test*

    -rwxr-xr-x   1 oracle oinstall    1178 Aug 18 10:00 test.sh
    -rwx--x--x   1 oracle oinstall    8984 Aug 18 18:01 test.sh.x
    -rw-r--r--   1 oracle oinstall   14820 Aug 18 18:01 test.sh.x.c

    # file test.sh.x

    test.sh.x: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), stripped

    可以看到生成了动态链接可执行二进制文件test.sh.x和C源文件testup.sh.x.c, 注意生成的二进制文件因为是动态链接形式, 所以在其它平台上不能运行.

    生成静态链接的二进制可执行文件

    可以通过下面的方法生成一个静态链接的二进制可执行文件:

    $ CFLAGS=-static shc -r -f test.sh

    $ file testup.sh.x

     
    三. 通过sch加密后的脚本文件很安全吗?

    一般来说是安全的, 不过可以使用gdb和其它的调试工具获得最初的源代码. 如果需要更加安全的方法, 可以考虑使用wzshSDK. 另外shc还可以设置脚本的运行期限和自定义返回信息:

    $ shc -e 03/31/2007 -m "the mysql backup scrīpt is now out of date." -f test.sh

    -e表示脚本将在2007年3月31日前失效, 并根据-m定义的信息返回给终端用户.
     

    题外:

    如果你仅仅是看不见内容就行了的话,不妨用
    gzexe a.sh

    原来的 a.sh 就被存为 a.sh~,新的 a.sh 是乱码,但是可以用 sh 的方式运行

     
  • 相关阅读:
    关于javaScript substring()方法的一点点应用
    解决Vue报错:Invalid prop: type check failed for prop "id". Expected Number with value 14, got String with value "14".
    better-scroll滚动无效的查错
    Vue程序化导航---又称编程式导航
    Vue路由初始化Can't read prooerty '$createElement' of undefined
    在前台利用jquery对dom元素进行排序
    js/jquery如何获取获取父窗口的父窗口的元素
    jquery使鼠标滚轮暂时失效
    introJs写法
    用Intro.js创建站点分步指南
  • 原文地址:https://www.cnblogs.com/lvdongjie/p/4249475.html
Copyright © 2011-2022 走看看