Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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:Loader 用 C,Encoder 和 License 工具用 Rust。

当前结构

docs/       方案和阶段任务
encoder/    加密器 CLI 原型
loader/     PHP Loader 扩展
examples/   M0 示例文件
scripts/    本地验证脚本
gui/        Windows / macOS 本地桌面界面

使用方法

日常加密交付走桌面界面即可,不需要手动敲 CLI 命令;纯命令行用法见 encoder/README.md

Windows GUI

Sinee Loader 界面

开发环境直接运行:

python gui\windows\sinee_loader_gui.py

或者打包成可双击运行的 exe(发行到不装 Python 的机器):

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 -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

sh scripts/run-gui.sh

打包成可双击运行的 App:

sh scripts/build-mac-app.sh

生成文件:dist/Sinee Loader.app,内置 sinee-loader Encoder,无需额外安装。

macOS 界面和更多 GUI 细节见 gui/README.md

验证

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 扩展发布产物:

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_KEYLOADER_PUBLIC_KEY_FILE,服务器部署可只配置 extension=sinee_loader.so。Loader 会自动从项目目录向上查找 _sinee_license/license.licsinee-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

About

PHP加密扩展

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages