"与其写好代码被人白嫖,不如屎山加密让他绝望。"
你写了三个月的项目,README 写得漂亮,代码整洁优雅。
结果有人 fork 了,改个名就说是自己的。
但有没有想过——最好的加密,其实是让他看不懂?
毕竟功能一样跑,但维护成本直接上天。
与其优雅被抄,不如屎山护体。欢迎加入代码混淆!
把你的代码变成 15 层混淆的屎山
功能完全不变,但没人能读懂、改动、二次开发
变量重命名 + 控制流平坦化 + 字符串加密 + 死代码注入 + ...
Claude 作为混淆引擎,理解语义,保证等价
重要: Claude Code 从 git 仓库根目录的
.claude/skills/查找 skill。请在正确的位置执行。
# 安装到当前项目(在 git 仓库根目录执行)
mkdir -p .claude/skills
git clone https://github.com/dox012/shit-skill.git .claude/skills/shitify
# 或安装到全局(所有项目都能用)
git clone https://github.com/dox012/shit-skill.git ~/.claude/skills/shitify/shitify path/to/file.py # 混淆单个文件
/shitify repo # 混淆当前仓库
/shitify repo src/ # 混淆指定目录
/shitify preview path/to/file.py # 预览混淆结果(不写入文件)
/shitify undo # 回滚到混淆前
/shitify status # 查看备份状态| Before — 人能看懂的代码 | After — 屎山 |
def calculate_total(items, tax_rate=0.08):
"""Calculate the total price with tax."""
subtotal = sum(
item.price * item.quantity
for item in items
)
tax = subtotal * tax_rate
return round(subtotal + tax, 2) |
_GLOBAL_0xDEAD=None;_GLOBAL_0xBEEF=None
_retry_pool=[];_auth_handler=None
def _0xCAFE(_Il1I,_I1lI=(lambda:0.08)()):
global _GLOBAL_0xDEAD,_GLOBAL_0xBEEF
if(1^1):_phantom={chr(_0xA):_0xA
for _0xA in range((0x80))}
_GLOBAL_0xDEAD=(lambda _f,_i:_f(_i))(
sum,(_O0._I1Il.__mul__(_O0._lI1l)
for _O0 in _Il1I))
_GLOBAL_0xBEEF=(lambda _a,_b:
_a.__mul__(_b))(_GLOBAL_0xDEAD,_I1lI)
return(lambda _v,_n:__builtins__.
__dict__["\x72\x6f\x75\x6e\x64"](
_v,_n))(_GLOBAL_0xDEAD.__add__(
_GLOBAL_0xBEEF),(1<<1)) |
功能完全一致。但你再也不想读这段代码了。
全部同时施加,最大力度,没有中间态:
| # | 策略 | 效果 |
|---|---|---|
| 1 | 变量重命名 | calculate_total → _Il1I |
| 2 | 误导性命名 | width 存储 height |
| 3 | 注释销毁 | 删除一切注释和文档 |
| 4 | 控制流平坦化 | if/else → while+switch 状态机 |
| 5 | 字符串加密 | "hello" → "\x68\x65\x6c\x6c\x6f" |
| 6 | 数字混淆 | 42 → (0x2a), 0 → (1^1) |
| 7 | 死代码注入 | 添加看似重要的不可达代码 |
| 8 | 格式破坏 | 删空行、压缩语句、单空格缩进 |
| 9 | 不必要抽象 | 简单操作套多层 lambda/proxy |
| 10 | 嵌套地狱 | 深层嵌套三元/lambda/闭包 |
| 11 | 魔法数字 | 删除命名常量,内联混淆数值 |
| 12 | 全局状态滥用 | 局部变量提升为全局 |
| 13 | 类型滥用 | x → int(str(x)) |
| 14 | 反模式 | 上帝函数、意大利面结构 |
| 15 | 编码技巧 | Unicode 同形字 (а vs a) |
- 自动备份 — 每次混淆前自动备份到
.shitify-backup/ - 一键回滚 —
/shitify undo恢复原始代码 - 多版本备份 — 每次操作独立会话,支持历史回滚
- 跳过配置 — 不会动
.json,.yaml,.toml等配置文件 - 功能等价 — Claude 理解代码语义,保证行为不变
shitify-skill/
├── SKILL.md # 技能入口
├── prompts/
│ ├── analyze.md # 代码结构分析指南
│ ├── shitify_core.md # 15 种混淆策略详细规则
│ ├── shitify_repo.md # 仓库级混淆流程
│ └── validate.md # 功能等价性验证清单
├── tools/
│ ├── scanner.py # 仓库扫描工具
│ └── backup.py # 备份/还原工具
├── examples/
│ ├── before.py # 混淆前示例
│ └── after.py # 混淆后示例
├── README.md
└── LICENSE
本项目受 自己.skill 启发,遵循 AgentSkills 开放标准。
MIT