【Skill 创作】一个对 shell 脚本进行 gzip+base64 混淆保护并生成灵活 C 调用器的实用 Skill

1、Skill 简介

这是一个对 shell 脚本进行代码混淆保护的 Skill,能将 shell 脚本源码包装成 gzip+base64 乱码格式防止普通人随意看懂,同时可生成 只执行一次 或**自定义任意循环间隔时间(秒)**的 C 语言调用器。适合需要保护 shell 业务脚本源码、又需要保持跨架构兼容性的开发者使用。

2、使用场景

为什么想做它? 我有几个数据处理的 shell 脚本放到生产服务器上定时跑,不希望登录服务器的人随意 cat 就能看懂脚本逻辑,也不想用太重的方式(比如 shc 编译成二进制后跨架构不兼容)。

之前遇到了什么麻烦?

  • 直接放源码:任何人都能看懂

  • shc 编译成二进制:WSL 编译的 x86_64 二进制不能放到 ARM 服务器运行

  • 脚本需要支持:单次执行 + 定时循环执行(原脚本里有 while true + sleep ,想把循环逻辑抽出来放到 C 层统一管理)
    做出来之后能省掉哪些动作?

  • 不用再担心脚本被普通人看懂(gzip+base64 包装后打开只有一大串乱码)

  • 不用再手写 C 调用器模板,三个命令自动生成:

    • 生成混淆 shell
    • 生成"只执行一次就退出"的 C 源码
    • 生成"自定义任意秒数循环"的 C 源码

3、创作过程

核心是 confuse_script.py Python 工具的开发 + SKILL.md 规范文档:
第一步:确定三种命令模式
用 if name == ‘main’ 分支区分三种 CLI 入口:
第二步:C 模板用 .replace() 替代旧式 % 格式化
因为 C 源码里有大量 printf(“%s”, …) 的 % 符号,用旧式 Python %s 格式化会冲突,改成:
第三步:Skill 文档编写
按规范写 frontmatter,description 里必须包含 功能说明 + 触发条件说明 :

最后在文档末尾加快速参考表格和 Skill 调用话术,方便以后复用。

4、使用步骤 方式一:CLI 命令行直接调用(推荐)

Skill 目录下的 confuse_script.py 可直接独立运行。
方式二:对话中唤醒 Skill
只需说: “使用 shell-obfuscator skill 保护我的脚本”

系统就会自动加载本 Skill 的能力上下文。

5、效果展示 保护效果对比

文件类型 cat file.sh 效果 保护前 (源码) 代码一目了然:
#!/bin/bash
function scan_unit(){
for path in ${paths[1]}; do

done
} 保护后 (混淆) 只有乱码:
#!/bin/bash
`a=$(echo "H4sIAAAAAAAAA/…省略1000+字符…/+CMD
C 调用器两种模式效果
RUN ONCE 模式(只执行一次):

LOOP 模式(循环):

int loop_interval = 600;   // 可自定义秒数
while (1) {
    system(script_path);
    sleep(loop_interval);   // 循环睡眠
}

6、Skill 链接

  • 本地 Skill 位置: .trae/skills/shell-obfuscator/
    • SKILL.md
    • confuse_script.py
  • GitHub 仓库:(你上传后可补充)

7、总结与思考

效率提升:

  • 生成混淆 shell:1 条命令,5 秒搞定

  • 生成 C 循环调用器:1 条命令,不用再复制粘贴修改模板代码

  • 跨架构兼容性:混淆后的脚本还是文本 shell,任何架构 Linux 直接跑
    目前最满意的地方:

  • 三种 CLI 模式参数清晰, python3 confuse_script.py 不带参数直接打印帮助示例

  • C 代码里的循环秒数是变量,不是硬编码数字,一目了然

  • Skill description 触发条件写得比较完整,以后想用只要说"使用 shell-obfuscator skill" 就行
    后续还想怎么优化:

  • 增加 --gzexe 模式:调用系统 gzexe 做另一种保护方式对比

  • 增加 shell 变量名/函数名混淆(虽然 eval 包装已经足够应付普通人)

  • 增加 C 源码静态编译说明与脚本示例
    希望别人怎么体验或给你什么建议: 欢迎下载体验!你有 shell 脚本保护的需求吗?平时除了 shc、gzexe、base64 包装,还有什么别的保护方式?评论区一起交流吧 :grinning_face_with_smiling_eyes:

shell-obfuscator地址】hongwei-skills: 我做的一些skill

1 个赞