# sinee-loader **Repository Path**: jeffcat/sinee-loader ## Basic Information - **Project Name**: sinee-loader - **Description**: PHP加密扩展 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-09 - **Last Updated**: 2026-08-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Sinee Loader `Sinee Loader` 是面向 PHP 商业软件交付的源码加密、运行加载和授权管理系统。 当前仓库已经完成 M0 技术验证、M1 本地授权原型和 M2 项目级加密原型,本机验证链路已经跑通: 1. 使用 Rust Encoder CLI 加密单个 PHP 文件或目录。 2. 输出需要 `sinee_loader` 扩展执行的包装 PHP 文件。 3. 提供 PHP Loader 扩展,并完成 M0 解密执行闭环。 4. Rust CLI 生成 Ed25519 授权密钥和离线 license。 5. C Loader 校验产品、过期时间、签名,并按 license 中填写的域名、IP、机器码限制执行加密 PHP;未填写的维度不限制。 当前 M2 已实现 manifest、exclude、项目级完整性校验和 Laravel / ThinkPHP 最小项目验证;下一步是补正式目标环境复验。 技术路线见 [docs/技术选型.md](docs/技术选型.md):Loader 用 C,Encoder 和 License 工具用 Rust。 ## 当前结构 ```text docs/ 方案和阶段任务 encoder/ 加密器 CLI 原型 loader/ PHP Loader 扩展 examples/ M0 示例文件 scripts/ 本地验证脚本 gui/ Windows / macOS 本地桌面界面 ``` ## 使用方法 日常加密交付走桌面界面即可,不需要手动敲 CLI 命令;纯命令行用法见 [encoder/README.md](encoder/README.md)。 ### Windows GUI ![Sinee Loader 界面](gui/ui.png) 开发环境直接运行: ```powershell python gui\windows\sinee_loader_gui.py ``` 或者打包成可双击运行的 exe(发行到不装 Python 的机器): ```powershell powershell -ExecutionPolicy Bypass -File scripts\build-windows-exe.ps1 ``` 生成 `dist\SineeLoaderGui\SineeLoaderGui.exe`。 界面右上角"编码器状态"显示当前用的是 Rust Encoder 还是内置 Python fallback:找到 `encoder\target\release\sinee-loader.exe` 就优先用 Rust Encoder;找不到就自动回退到 Python fallback(同样支持文件/目录加密、license 和 manifest)。构建 Rust Encoder(需先装好 Visual Studio C++ Build Tools): ```powershell powershell -ExecutionPolicy Bypass -File scripts\build-windows-encoder.ps1 ``` 界面分三步操作,对应左侧步骤条: **1. 选择源码** | 字段 | 说明 | | --- | --- | | 模式 | `文件`:加密单个 PHP 文件;`目录`:加密整个项目(支持 M2 manifest 和完整性校验) | | 输入路径 | 要加密的 PHP 文件或项目目录 | | 输出目录 | 加密结果的存放位置 | **2. 授权配置** | 字段 | 说明 | | --- | --- | | 产品编码 / 客户名称 | 写入 license,Loader 运行时会核对产品编码 | | PHP 版本 | 目标服务器 PHP 版本(7.2–8.5),决定要配哪个 Loader 扩展 | | 到期时间 | license 过期时间,过期后 Loader 拒绝执行 | | 版本号 | 交付版本标记,仅展示 | | 加密密钥 | 源码加密密钥,必须和 Loader 编译时内置的 `LOADER_DEFAULT_KEY`、或运行时 `sinee_loader.key` 配置一致,否则无法解密 | | 授权域名 / 授权 IP | 限制 license 生效的域名或 IP,逗号分隔多个值,留空表示该维度不限制 | | 宽限天数 / 并发数 | 界面预留字段,当前尚未接入校验逻辑,填写不影响本次加密和 license 结果 | **3. 加密输出** 右侧"交付包"面板预览三个产物的路径(以目录模式为例): - 许可证文件:`<输出目录>\_sinee_license\license.lic` - Manifest:`<输出目录>\<项目名>\sinee-loader-manifest.json` - 加密源码:`<输出目录>\<项目名>\` 点击"开始加密"执行;完成后点击"打开输出目录"跳转到产物文件夹。底部"执行日志"记录每一步操作,可按 INFO / WARN / ERROR 过滤排查问题。 首次加密会在 `%APPDATA%\SineeLoader\vendor-keys\` 自动生成厂商 Ed25519 密钥对,之后每次加密复用同一对: - `vendor-license-private.pem`:厂商私钥,需妥善备份,**不能交付客户** - `vendor-license-public.pem`:厂商公钥,构建统一 Loader 扩展时传给 `LOADER_PUBLIC_KEY_FILE` ### macOS ```bash sh scripts/run-gui.sh ``` 打包成可双击运行的 App: ```bash sh scripts/build-mac-app.sh ``` 生成文件:`dist/Sinee Loader.app`,内置 `sinee-loader` Encoder,无需额外安装。 macOS 界面和更多 GUI 细节见 [gui/README.md](gui/README.md)。 ## 验证 ```bash sh scripts/m0-smoke.sh sh scripts/rust-static-check.sh sh scripts/m0-loader-smoke.sh sh scripts/m1-license-smoke.sh sh scripts/m2-project-smoke.sh sh scripts/gui-smoke.sh ``` 当前 smoke 会优先使用 `encoder/target/release/sinee-loader`;如果尚未构建 Rust binary,则回退到 PHP fallback。`m0-loader-smoke.sh` 会在临时目录构建 C Loader,并验证解密执行闭环。 生成 Loader 扩展发布产物: ```bash PHPIZE=/path/to/php7.2/bin/phpize \ PHP_CONFIG=/path/to/php7.2/bin/php-config \ PHP_VERSION=7.2 \ TARGET_SYSTEM=linux \ LOADER_DEFAULT_KEY=你的GUI加密密钥 \ LOADER_PUBLIC_KEY_FILE=/path/to/vendor-license-public.pem \ sh scripts/build-loader-extension.sh ``` 输出文件遵循 `sinee_loader_系统_php版本.so` 命名,例如 `dist/extensions/sinee_loader_linux_php7.2.so`。 如果构建扩展时内置了 `LOADER_DEFAULT_KEY` 和 `LOADER_PUBLIC_KEY_FILE`,服务器部署可只配置 `extension=sinee_loader.so`。Loader 会自动从项目目录向上查找 `_sinee_license/license.lic` 和 `sinee-loader-manifest.json`;产品编码会从加密 payload 自动读取。仍可用 `sinee_loader.key/product/license/public_key/manifest` 显式覆盖。 当前本机验证已覆盖 Encoder、Loader、License、M2 项目级 manifest 和 GUI 编译。目标支持 PHP 7.2 NTS 和 PHP 8.2 NTS,但最终兼容性仍需要在 Linux x86_64 对应 PHP 版本环境中复验并分别构建 Loader 扩展;目标环境还需要 OpenSSL 1.1.1+ 或 OpenSSL 3.x 支持 Ed25519。 ## License 本项目采用 [MIT License](LICENSE)。