shell脚本转换为c代码的工具
安装
cc -s shellc.c -O2 -o shellc
编译shell脚本并生成可执行程序
shellc example.sh
cc -s example.sh.c -O2 -o example -lpthread
生成的C代码是 example.sh.c,即原始文件名后加.c。
对于生产环境中使用的程序,建议在编译时添加参数-s, 以删除可执行程序中的符号表,增加了反汇编和逆向工程的难度。
本人试用了可以将shell脚本编译成可执行程序的工具shc 和 shellcrypt,存在的主要问题是:
shc实际调用的是sh -c命令,通过ps -ef命令就能看到源码。shell脚本长度不能超过ARG_MAX值。shellcrypt不支持外部参数输入,加密算法相对简单。生成的可执行程序可以通过与0x000C进行异或解密来获得源代码。
shellc除了解决上述这两工具存在的问题外,还增加了代码混淆、随机生成有效字符位置计算函数、随机字符加密、反调试等增加反汇编逆向复杂度。
该程序适用于可定义函数语法的shell,如ksh、bsh、zsh等,不支持csh(csh不支持函数定义)。
目前,该程序已在AIX、UNIX、 Linux 环境中具有实际应用。建议对编译后的程序进行全面测试,以防止生产故障。
如果shell脚本涉及人机交互,需对原shell脚本做一些修改,read input 需改为 read input </dev/tty。