【shc】【脚本加密】最简单、最通用、Ubuntu 一键能用、小白也能操作 的 Shell 脚本加密方案
分两种:
- 轻度装逼:代码乱码混淆(看起来一团乱,普通人看不懂)
- 硬核加密:直接编译成二进制文件(看不到源码,只能运行,最能装大佬)
结合你 Batocera + Ubuntu 的场景,直接给你能用的成品方案。
一、最推荐:shc 工具(编译成二进制,最硬核、最装逼)
原理
把你的.sh脚本直接编译成 Linux 可执行二进制文件
- 打开就是乱码,完全看不到代码
- 只能运行,不能编辑
- Ubuntu、Batocera 都能跑,兼容性完美
- 就是你要的:给别人用、别人看不懂源码,装大佬神器
- ======================
-
终极解决方法(你直接照做)
1. 先安装:
===【sudo apt update && sudo apt install shc -y 】====
==错误写法【sudo apt update sudo apt install shc -y 】================
sudo apt update sudo apt install shc -y
2. 再加密:
==【shc -f batocera_auto_full_fix.sh 】================shc -f batocera_auto_full_fix.sh3. 再查看:
bash运行ls会看到:==【】================batocera_auto_full_fix.sh batocera_auto_full_fix.sh.x batocera_auto_full_fix.sh.x.c
输入 shc 然后按回车,有没有输出东西?如果什么都没有,就是 没安装成功,
============================分割线,下面的没有安装成功,可忽略不看==========================================
Ubuntu 一键安装
==【sudo apt update && sudo apt install shc -y 】==============
正确写法:sudo apt update && sudo apt install shc -y 错误写法:sudo apt update sudo apt install shc -y
加密命令(直接复制用)
假设你的脚本叫:bato_permission_fix.sh
==【# 加密,生成二进制可执行文件
shc -f bato_permission_fix.sh 】=============
# 加密,生成二进制可执行文件 shc -f bato_permission_fix.sh
执行后会生成 2 个文件:
- bato_permission_fix.sh.x→ 最终加密好的二进制文件(发给别人用这个)
- bato_permission_fix.sh.x.c→ C 语言源码(可以删掉)
用法
别人拿到后,直接:
==【chmod +x bato_permission_fix.sh.x
./bato_permission_fix.sh.x 】=============
chmod +x bato_permission_fix.sh.x
./bato_permission_fix.sh.x
和普通脚本一模一样运行,但永远看不到你的底层代码。
优点:最简单、最稳、Linux 原生、Batocera 完美兼容缺点:只能在 Linux 环境跑(本来你就是 Ubuntu / Batocera,完全适配)
二、轻度装逼:脚本代码混淆(变成乱码字符串)
不用装任何软件,Ubuntu 自带,把你的脚本变成一长串乱码 base64,打开全是乱码。
一键混淆命令
==【# 生成混淆后的脚本
cat bato_permission_fix.sh | base64 -w0 > temp.txt
echo '#!/bin/bash
eval $(echo "XXX" | base64 -d)' > obfuscated_script.sh
sed -i "s|XXX|$(cat temp.txt)|" obfuscated_script.sh
rm temp.txt
chmod +x obfuscated_script.sh 】=============
# 生成混淆后的脚本 cat bato_permission_fix.sh | base64 -w0 > temp.txt echo '#!/bin/bash eval $(echo "XXX" | base64 -d)' > obfuscated_script.sh sed -i "s|XXX|$(cat temp.txt)|" obfuscated_script.sh rm temp.txt chmod +x obfuscated_script.sh
打开obfuscated_script.sh就是:
==【#!/bin/bash
eval $(echo "IyEvYmluL2Jhc2gKIyBCYXRvY2VyYSB5dWFuX3NxdWFucGFv..." | base64 -d) 】=============
#!/bin/bash eval $(echo "IyEvYmluL2Jhc2gKIyBCYXRvY2VyYSB5dWFuX3NxdWFucGFv..." | base64 -d)
全是乱码,普通人完全看不懂,也能正常运行。
三、结合你 Batocera 的最佳方案(我帮你选好了)
你现在的场景:
- 要发给玩 Batocera 的朋友
- 不想别人看到你的底层脚本逻辑(父目录变量、精准权限、密钥修复逻辑)
- 要装逼、显得是大佬级工具
直接用 shc 编译成二进制,这是最专业、最有逼格的方式。
别人打开你的文件,全是乱码,只能运行、不能修改,圈内没人会拆这个二进制,直接达到你想要的效果。
四、补充:Batocera 里能不能跑加密后的脚本?
完全可以Batocera 本身就是 Linux 内核,shc 编译出来的二进制,直接丢进去就能执行,和原生脚本一模一样。
万能权限脚本 + 密钥恢复脚本,一键生成加密后的二进制文件