shell脚本转换为c代码的工具

简介: 将shell脚本转换成代码,并编译成二进制可执行文件,在linux系统下具有防调试跟踪机制

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脚本编译成可执行程序的工具shcshellcrypt,存在的主要问题是:

  • shc 实际调用的是sh -c 命令,通过ps -ef 命令就能看到源码。shell脚本长度不能超过ARG_MAX值。
  • shellcrypt不支持外部参数输入,加密算法相对简单。生成的可执行程序可以通过与0x000C进行异或解密来获得源代码。

shellc除了解决上述这两工具存在的问题外,还增加了代码混淆、随机生成有效字符位置计算函数、随机字符加密、反调试等增加反汇编逆向复杂度。
该程序适用于可定义函数语法的shell,如kshbshzsh等,不支持cshcsh不支持函数定义)。
目前,该程序已在AIXUNIXLinux 环境中具有实际应用。建议对编译后的程序进行全面测试,以防止生产故障。

如果shell脚本涉及人机交互,需对原shell脚本做一些修改,read input 需改为 read input </dev/tty

工具获取地址:https://github.com/chenzhch/shellc

相关文章
|
3天前
|
人工智能 监控 Shell
常用的 55 个 Linux Shell 脚本(包括基础案例、文件操作、实用工具、图形化、sed、gawk)
这篇文章提供了55个常用的Linux Shell脚本实例,涵盖基础案例、文件操作、实用工具、图形化界面及sed、gawk的使用。
14 2
|
23天前
|
Shell
Shell脚本有哪些基本语法?
【9月更文挑战第4天】
41 17
|
23天前
|
存储 Unix Shell
shell脚本编程基础
【9月更文挑战第4天】
35 12
|
22天前
|
网络协议 关系型数据库 MySQL
Shell 脚本案例
Shell 脚本案例
34 8
|
23天前
|
Shell Linux 开发工具
linux shell 脚本调试技巧
【9月更文挑战第3天】在Linux中调试shell脚本可采用多种技巧:使用`-x`选项显示每行命令及变量扩展情况;通过`read`或`trap`设置断点;利用`echo`检查变量值,`set`显示所有变量;检查退出状态码 `$?` 进行错误处理;使用`bashdb`等调试工具实现更复杂调试功能。
|
1月前
|
Shell 开发工具 git
使用 Shell 代码简化 Git 步骤
【8月更文挑战第23天】本文介绍通过Shell脚本简化Git操作的方法:1) 使用`gitc &quot;提交信息&quot;`可一键完成代码提交与推送至远程仓库;2) 执行`gitpull`即可从远程仓库拉取最新代码并合并到当前分支;3) 输入`gitnewbranch 分支名称`快速创建并切换到新分支。将这些自定义函数加入`.bashrc`或`.zshrc`等配置文件后,即可随时调用简化版Git命令。
|
1月前
|
Ubuntu Linux Shell
在Linux中,如何使用shell脚本判断某个服务是否正在运行?
在Linux中,如何使用shell脚本判断某个服务是否正在运行?
|
1月前
|
Java Shell Linux
【Linux入门技巧】新员工必看:用Shell脚本轻松解析应用服务日志
关于如何使用Shell脚本来解析Linux系统中的应用服务日志,提供了脚本实现的详细步骤和技巧,以及一些Shell编程的技能扩展。
28 0
【Linux入门技巧】新员工必看:用Shell脚本轻松解析应用服务日志
|
1月前
|
监控 Shell Linux
在Linux中,如何使用shell脚本进行系统监控和报告?
在Linux中,如何使用shell脚本进行系统监控和报告?
|
1月前
|
Shell Linux
在Linux中,shell脚本中的条件语句和循环结构是什么?
在Linux中,shell脚本中的条件语句和循环结构是什么?