代码之家  ›  专栏  ›  技术社区  ›  user410989

从编译的bash脚本中检索纯文本脚本

  •  5
  • user410989  · 技术社区  · 14 年前

    不久前,我为学校写了一些bash脚本。我认为“保护”它们是非常聪明的,所以我用 shc 一个二进制文件。几周后,我丢失了未编译的脚本,现在只剩下二进制文件了。

    有没有办法从 生成的二进制文件?我查了 shc公司 找到一种方法来反编译二进制文件。

    4 回复  |  直到 12 年前
        1
  •  54
  •   sloth JohnnBlade    12 年前

    使用shc编译脚本并不能保护它们。这样你就不会有更多的安全感。shc编译的二进制文件在启动时解密并将脚本加载到内存中。然后,在启动二进制文件之后,只需对其进行分段,然后从coredump中检索脚本。

    #! /bin/bash
    echo "starting script and doing stuff"
    sleep 1
    echo "finished doing stuff"
    

    用shc编译:

    shc -f test.sh
    

    ./test.sh.x&  ( sleep 0.2 && kill -SIGSEGV $! )
    

    [1]  + segmentation fault (core dumped)  ./test.sh.x
    

    现在我们可以在转储中搜索原始脚本:

    cat core | strings
    

    ...
    4.0.37(2)-release
    BASH_VERSINFO
    BASH_VERSINFO
    release
    i686-pc-linux-gnu
    BASH_EXECUTION_STRING
    BASH_EXECUTION_STRING
                               #! /bin/bash
    echo "starting script and doing stuff"
    sleep 1
    echo "finished doing stuff"
    1000
    EUID
    EUID
    1000
    ...
    

    如果脚本非常大,可能需要使用ulimit调整核心文件的大小。

        2
  •  3
  •   belousov    11 年前

    因此,您将在控制台中看到shell脚本的解密源代码。

        3
  •  1
  •   pmod    14 年前

    斯特拉斯 或者类似的东西,然后尝试至少恢复基本功能。

    ( http://www.datsi.fi.upm.es/~frosal/sources/shc.html ).

    谣传有人写了一封信( http://www.linuxjournal.com/article/8256 )

        4
  •  1
  •   ycam    8 年前

    unsc,一个自动脚本,用于恢复用SHc工具加密的*.sh.x加密文件,已于上发布 github here .

    unsc是一个工具,可以反转任何SHc加密的*.sh.x脚本的加密。它基于通过自动反转嵌入*.sh.x中的所有加密数据来自动提取。使用这些加密数据(用于加密),该工具以明文形式重新生成初始的*.sh文件。

    [root@server:~/unshc]$ ./unshc.sh -h
     _   _       _____ _   _
    | | | |     /  ___| | | |
    | | | |_ __ \ `--.| |_| | ___
    | | | | '_ \ `--. \  _  |/ __|
    | |_| | | | /\__/ / | | | (__
     \___/|_| |_\____/\_| |_/\___|
    
    --- UnSHc - The shc decrypter.
    --- Version: 0.6
    ------------------------------
    UnSHc is used to decrypt script encrypted with SHc
    Original idea from Luiz Octavio Duarte (LOD)
    Updated and modernized by Yann CAM
    - SHc   : [http://www.datsi.fi.upm.es/~frosal/]
    - UnSHc : [https://www.asafety.fr/unshc-the-shc-decrypter/]
    ------------------------------
    
    [*] Usage : ./unshc.sh [OPTIONS] <file.sh.x>
             -h | --help                          : print this help message
             -a OFFSET | --arc4 OFFSET            : specify the arc4() offset arbitrarily (without 0x prefix)
             -d DUMPFILE | --dumpfile DUMPFILE    : provide an object dump file (objdump -D script.sh.x > DUMPFILE)
             -s STRFILE | --stringfile STRFILE    : provide a string dump file (objdump -s script.sh.x > STRFILE)
             -o OUTFILE | --outputfile OUTFILE    : indicate the output file name
    
    [*] e.g :
            ./unshc.sh script.sh.x
            ./unshc.sh script.sh.x -o script_decrypted.sh
            ./unshc.sh script.sh.x -a 400f9b
            ./unshc.sh script.sh.x -d /tmp/dumpfile -s /tmp/strfile
            ./unshc.sh script.sh.x -a 400f9b -d /tmp/dumpfile -s /tmp/strfile -o script_decrypted.sh
    

    可以看到演示视频 here