当前位置: 首页 > news >正文

linux上将sh脚本文件打包成二进制程序文件

shc 是一个将 Shell 脚本编译为二进制可执行文件的工具。它通过将脚本嵌入到 C 代码中并编
译生成二进制文件,从而增加脚本的反编译难度。

shc工具

介绍

shc的命令格式为

shc [-e date] [-m addr] [-i iopt] [-x cmnd] [-l lopt] [-o outfile] [-ABCDhUHvSr] -f script.sh

shc创建命令行上使用-f指定的脚本的剥离二进制可执行版本。

如果未使用[-o outfile]选项定义outfile,则默认情况下会附加.x扩展名,并且通常会比原始ascii代码大一点。生成的C源代码保存在扩展名为.x.c的文件中或使用适当选项指定的文件中。

如果您使用-e选项提供到期日期,编译后的二进制文件将拒绝在指定日期之后运行。将显示消息请联系您的提供商。可以使用-m选项更改此消息。

可以编译任何类型的外壳脚本,但需要提供有效的 -i、-x 和 -l 选项。

编译后的二进制文件仍然依赖于shell代码第一行中指定的shell(即 #!/bin/sh),因此shc不会创建完全独立的二进制文件。

shc本身不是一个编译器,比如cc,它编码和加密外壳脚本,并生成具有附加过期功能的C源代码。然后它使用系统编译器编译一个剥离的二进制文件,其行为与原始脚本完全相同。执行后,编译后的二进制文件将使用shell-c选项解密并执行代码。不幸的是,它不会像真正的C程序那样给你任何速度提升。

shc的主要目的是保护您的shell脚本免受修改或检查。如果您希望分发您的脚本但不希望它们易于被其他人阅读,您可以使用它。

选项

-e date:到期日期为dd/mm/yyyy格式[none]

-m message :到期后显示的消息[“Please contact your provider”]

-f script_name:要编译的脚本的文件路径

-i inline_option:shell解释器的内联选项,即:-e

-x command :eXec命令,作为printf格式即:exec(\‘%s\’,@ARGV);

-l last_option:最后一个shell选项,即:–

-o outfile:输出到outfile指定的文件

-r: Relax security。制作一个可再分发的二进制文件,在运行相同操作系统的不同系统上执行。您可以使用此选项发布您的二进制文件供其他人使用

-v:详细编译

-S:为root可调用程序打开setuid[OFF]

-D:打开调试执行调用

-U:使二进制文件不可追踪(使用strace、ptraces、truss等)

-H:Hardening。无需root访问要求的额外安全标志,可防止转储、代码注入、cat /proc/pid/cmdline、ptraces等…此功能是实验性的,可能不适用于所有系统。它需要born shell(sh)脚本

-C:显示许可证并退出

-A:显示摘要并退出

-B:为BusyBox编译

-h:显示帮助并退出

示例

注意,脚本文件中第一行,必须添加 “#!/bin/sh”,否则会出现 shc: invalid first line in script: xxx 的错误。

编译一个脚本,该脚本可以在启用跟踪选项的情况下在其他系统上运行(没有-U标志):

shc -f myscript.sh -o mybinary

编译一个无法追踪的二进制文件:

shc -Uf myscript.sh -o mybinary

编译一个不需要root访问权限的不可追踪的二进制文件(实验性):

shc -Hf myscript.sh -o mybinary

相关文章:

  • 深入探究LLamaFactory推理DeepSeek蒸馏模型时无法展示<think>思考过程的问题
  • 微电网协调控制器ACCU-100 分布式光伏 光储充一本化
  • 驭码CodeRider 闪电适配阿里QwQ-32B:8小时全栈集成,AI编程效率飞跃!
  • 关于tomcat使用中浏览器打开index.jsp后中文显示不正常是乱码,但英文正常的问题
  • Android Coil总结
  • AI是否可以实现全自动的生成内容,看看我的想法
  • 【连珠云弈】网页五子棋版项目测试报告
  • DeepSeek-R1:使用KTransformers实现高效部署指南
  • cs144 Lab Checkpoint 0: networking warmup
  • 使用 Arduino 和 Wi-Fi 控制 RGB LED
  • [MySQL初阶]MySQL(5)内置函数详解
  • 【搜索】P3654 First Step (ファーストステップ)
  • 备考六级:词汇量积累(day4)
  • 嵌入式学习L5D2-exec函数族和守护进程
  • 基于uniapp的蓝牙打印功能(佳博打印机已测试)
  • Linux 用户与组管理详解
  • 【LeetCode 热题 100】3. 无重复字符的最长子串 | python 【中等】
  • 算法策略深度解析与实战应用
  • 项目实战:Qt图像拼接渐进色图层生成工具v1.0.0(预设四路拼接,多路可通过多图叠层实现)
  • 再论滑动窗口与行头阻塞
  • 第五轮伊美核问题谈判将于5月23日在罗马举行
  • 人形机器人灵犀X2将走出实验室,首轮预售推出3个版本
  • 歼-10CE首战大放异彩,聊聊中国战机海外实战的那些事儿
  • 百年前淮北乡村的风俗画卷——读郑重 《九十自述》
  • 最高法:政府信息公开案件审理应避免泄露国家秘密、商业秘密
  • 外交部:国际调解院着眼以调解定分止争,更好维护国际公平正义