# rhythm-protect **Repository Path**: YuYao-Gith/rhythm-protect ## Basic Information - **Project Name**: rhythm-protect - **Description**: Rhythm Protect — 自用软件加壳器(ELF/PE 压缩、加密、防护、脱壳) - **Primary Language**: Unknown - **License**: MulanPubL-2.0 - **Default Branch**: master - **Homepage**: https://gitee.com/YuYao-Gith - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-23 - **Last Updated**: 2026-11-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Rhythm Protect **自用软件加壳器** — 保护开发者自己的合法软件 版权所有 (c) 2026 Qiiqnira (email: qiiqnira@zohomail.cn) 本软件依据木兰公共许可证第 2 版授权,详见 LICENSE 文件。 ## 项目定位 Rhythm Protect 是开发者个人用于保护自身合法软件的自用加壳器。它对可执行文件的代码段进行压缩、加密,并在运行时通过内嵌加载器完成防护检查、密码验证、解密解压与重定位重放,最后跳转原始入口点。 > **法律声明**:本工具仅用于保护开发者自己的合法软件,禁止用于任何非法用途。 ## 功能 | 壳类型 | 说明 | |--------|------| | `compress` | 压缩壳:代码段压缩,运行时解压 | | `encrypt` | 加密壳:代码段加密(需密码) | | `protect` | 保护壳:加密 + 全部防护 | | `mixed` | 混合壳:压缩 + 加密 + 全部防护(默认) | ### 平台支持 | 平台 | 格式 | 状态 | |------|------|------| | Linux | ELF x86-64 (PIE/静态/动态) | ✅ 完整可用 | | Windows | PE32+ x86-64 | ✅ 加壳/脱壳/运行(Wine 验证) | | macOS | Mach-O x86-64 | 🔶 解析+检测,加壳框架 | | macOS | Mach-O ARM64 | 📄 理论支持 | | Android | ELF AArch64 | 📄 理论支持 | | UEFI | PE32+ EFI | ✅ 加壳/脱壳完整 | ### 压缩格式 zstd(默认)/ gzip / bzip2 / xz / zip / 7z(自研容器,兼容 7-Zip) > PE 目前仅支持 `gz` / `zip` / `none`(依赖 mingw 版 zlib)。 ### 加密算法 AES-128/192/256-CBC/CTR/GCM、SM4-CBC/CTR/GCM、ChaCha20-Poly1305、XChaCha20-Poly1305 - 最多 8 层叠加,每层独立密钥(HKDF-SM3 展开) - **多态加密**:每次加壳随机选择算法组合与层数 ### 密钥派生 SM2 曲线密钥(ECDH)+ PBKDF2-HMAC-SM3(100000 轮)+ HKDF-SM3 分层展开 ### 防护机制 | 类别 | 功能 | 状态 | |------|------|------| | 反调试 | TracerPid / 调试寄存器 / 自占用金丝雀 / 父进程链 / 环境变量 / 单步 / 代码段自校验 | ✅ | | 反篡改 | SHA-512+SM3 双校验(对明文、重定位重放前)/ SM2 签名 / 函数级校验 | ✅ | | 反虚拟机 | CPUID / DMI / 注册表 / MAC 特征 | ✅ | | 指令替换 | `xor rax,rax` ⟷ `sub rax,rax` 对合变换 | ✅ | | 字符串加密 | .rodata 节 XOR-256 加密 | ✅ | | 资源段加密 | .rodata 后半段 XOR | ✅ | | TLS 加密 | PT_TLS 数据段 XOR | ✅ | | 反 API Hook | GOT/JUMP_SLOT 可执行映射校验 | ✅ | | API 监控检测 | frida/xposed/substrate/magisk 特征扫描 | ✅ | | 反内存转储 | PE 清除 DOS 头 / ELF ptrace 检测 | 🔶 部分 | | 导入表混淆 | 函数名名字区 XOR 加密(运行时解密解析) | ✅ | | IAT 加密 | 导入表名字区 XOR 加密(运行时解密解析) | ✅ | | 许可证 | SM2 签名 + HWID + 过期(ELF/PE) | ✅ | | 垃圾代码注入 | 不透明谓词 | 🔶 仅种子(未注入真实代码) | ## 安装 ```bash ./install.sh ``` ## 发行版 | 平台 | 格式 | 安装方式 | |------|------|----------| | Linux x86-64 | `.deb` | `sudo dpkg -i rhythm-protect_<版本>_amd64.deb` | | Linux x86-64 | `.AppImage` | `chmod +x rhythm-protect-<版本>-x86_64.AppImage && ./...` | 发行版附件见 [Gitee Releases](https://gitee.com/YuYao-Gith/rhythm-protect/releases)。 > **当前为第一次测试版本,仅面向 Linux 端。** Windows / macOS / Android / UEFI 暂未提供发行包。 ### 打包 ```bash bash scripts/buildp.sh # 同时生成 deb 与 AppImage 到 dist/ ``` ## 快速使用 ```bash # 混合壳(压缩+加密+全部防护) rhythm-protect myapp myapp.protected --key "mypassword" # 多态加密(每次算法随机) rhythm-protect myapp out --key "pw" --polymorphic # 全防护壳 rhythm-protect myapp out --key "pw" --type mixed \ --polymorphic --inst-subst --encrypt-strings --anti-hook --anti-dump # 许可证(授权 / 试用期) rhythm-protect myapp out --key "pw" --license rhythm-protect --hwid # Linux 指纹 RP_HWID=1 ./out # PE 目标机取指纹 # 查看信息 / 脱壳 rhythm-protect --info myapp.protected rhythm-protect --unpack myapp.protected myapp.restored --key "pw" ``` ## 测试 ```bash bash tests/run_all.sh ``` **测试结果**:65/65 通过(ELF 全矩阵 + 指令替换/脱壳一致性 + PE 加壳/脱壳/运行时 + PE 导入表加密 + PE 许可证 + 检测/JSON/同路径/valgrind 等)。 > PE 运行时用例需要 Wine(`wine` / `wine64` / `deepin-wine10-stable` 任一),否则自动跳过。 ## 已知限制 1. **PE 导入表高级选项**:`--encrypt-iat` / `--obfuscate-imports` 仅支持 PE; ELF 因动态链接器先于加载器运行,无法支持。 2. **PE 压缩格式**:仅 `gz` / `zip` / `none`。 3. **重定位类型**:ELF 仅支持 RELATIVE / IRELATIVE。 4. **垃圾代码注入**:目前仅写入不透明谓词种子,未注入真实指令。 5. **反内存转储**:PE 已清除内存中的 DOS 头;ELF 未做内存擦除。 6. **侧信道**:未做常量时间防护。 7. **PE 许可证**:Windows HWID 与 Linux `--hwid` 不同,需在目标机用 `RP_HWID=1` 获取。 8. **多语言文档**(`docs/`)可能滞后于主 README/MANUAL。 ## 目录结构 ``` rhythm-protect/ ├── CMakeLists.txt / install.sh / scripts/ ├── include/ # 对外接口 ├── src/ # 加壳器、解析器、防护、CLI │ └── stub/ # 运行时加载器 (ELF + PE + Android + EFI) ├── tests/ # 测试脚本 └── docs/ # 多语言文档 ``` ## 许可证 木兰公共许可证第 2 版(MulanPubL-2.0),见 LICENSE。