代码解读-Nathan_SG11 在线加密平台
Nathan_SG11 在线加密平台 - 项目分析报告
一、项目概述
1.1 项目名称
Nathan_SG11 在线加密平台

1.2 项目定位
一个提供 SG11(SourceGuardian)加密服务的在线平台,用户可上传 PHP 源码文件进行加密保护。
二、技术栈
2.1 后端技术
- 核心语言: PHP
- 加密组件: SourceGuardian (sg_load)
- 支持的 PHP 版本: 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4
2.2 前端技术
- UI 框架: Layui(主流前端模块化框架)
- JavaScript 库: jQuery
- 图表库: ECharts
- 富文本编辑器: TinyMCE, CKEditor
- UI 组件库:
- FullCalendar(日历组件)
- Cropper(图片裁剪)
- zTree(树形菜单)
- dtree(动态树)
- city-picker(城市选择器)
- 等多种 Layui 扩展模块
2.3 服务器环境
- Web 服务器: Nginx
- 运行环境: 宝塔面板环境
- 加密保护: SourceGuardian 加密组件
三、项目结构
sg11-jiami/├── index.php # 主入口页面(前端表单界面)├── Nathan_Ajax.php # 核心业务处理(上传 + 加密)├── Nathan_Encode.php # 加密处理核心(SourceGuardian 保护)├── NathanUpload.php # 文件上传处理类├── Lib/│ ├── NathanUpload.php # 上传处理类│ └── NathanEncode.php # 加密处理类├── File/│ └── storage/│ ├── upload/ # 上传文件临时存储目录│ └── download/ # 加密后文件下载目录├── Static/│ ├── favicon.ico # 网站图标│ ├── logo.png # 网站 LOGO│ ├── libs/ # 第三方库│ │ ├── echarts/ # 图表库│ │ ├── layui/ # Layui 框架│ │ ├── jquery/ # jQuery 库│ │ ├── fullcalendar/ # 日历组件│ │ └── tinymce/ # 富文本编辑器│ ├── js/ # 自定义 JS 文件│ │ ├── common.js # 公共 JS│ │ └── Tips.js # 提示消息 JS│ └── module/ # Layui 扩展模块│ ├── admin.css # 后台管理样式│ ├── steps/ # 步骤条组件│ ├── notice/ # 消息通知组件│ ├── cascader/ # 级联选择器│ ├── dropdown/ # 下拉菜单│ ├── fileChoose/ # 文件选择器│ ├── Cropper/ # 图片裁剪│ ├── zTree/ # 树形组件│ ├── city-picker/ # 城市选择器│ └── ... # 其他扩展├── 使用说明.html # 使用说明文档├── 免责声明_必看.txt # 免责声明└── .user.ini # PHP 配置覆盖文件四、功能模块
4.1 核心功能模块
1. 用户界面模块 (index.php)
功能描述: 提供 SG11 加密服务的用户交互界面
主要功能:
- PHP 版本选择(5.4-7.4 共 8 个版本)
- 自定义版权注释输入
- ZIP 文件上传(拖拽上传)
- 加密进度显示
- 加密结果下载
界面特点:
- 渐变背景(紫色系)
- 响应式布局
- 卡片式设计
- 动态背景图片(随机风景图)
2. 文件上传模块 (NathanUpload.php)
功能描述: 处理用户上传的 ZIP 文件
主要功能:
- 文件类型校验(仅限 zip 格式)
- 文件大小限制(最大 2MB)
- 文件名校验(不能包含中文)
- 文件安全存储
- 上传状态反馈
3. SG11 加密模块 (NathanEncode.php)
功能描述: 核心加密处理模块,使用 SourceGuardian 对 PHP 文件进行加密
主要功能:
- 多 PHP 版本加密支持
- 批量文件处理
- 版权注释添加
- 加密后文件打包
- 自动下载链接生成
技术实现:
- 使用 SourceGuardian 商业加密组件
- 加密文件通过 sg_load() 函数保护
- 支持动态 loader 加载检测
4. AJAX 处理模块 (Nathan_Ajax.php)
功能描述: 统一处理前端 AJAX 请求
处理接口:
- act=Nathan_Upload: 处理文件上传
- act=Nathan_Encode: 处理文件加密
返回格式:
{ "code": 1, // 状态码 "msg": "成功", // 消息 "data": "url" // 下载链接}4.2 辅助模块
1. 前端公共 JS (common.js)
- Layui 框架配置
- 模块扩展定义
- 项目路径获取
2. 提示消息 JS (Tips.js)
- 成功提示
- 错误提示
- 加载提示
五、核心业务流程
5.1 加密服务流程
用户访问 → 选择 PHP 版本 → 输入版权注释 → 上传 ZIP 文件 ↓自动下载 ← 显示下载按钮 ← 返回下载链接 ← 加密处理完成 ↑ 检查 SourceGuardian 组件 ↓ 读取上传文件 → 解压 ↓ 遍历 PHP 文件 → 逐个加密 ↓ 重新打包 → 存储到 download 目录5.2 文件上传流程
前端拖拽上传 → AJAX 请求 → 后端校验 ↓ 校验通过? ↙ ↘ 是 否 ↓ ↓ 保存到 upload/ 返回错误信息 ↓ 返回文件名5.3 SG11 加密保护机制
NathanEncode.php 和 NathanUpload.php 都使用 SourceGuardian 进行加密保护:
- Loader 检测: 检查 sg_load() 函数是否存在
- 版本匹配: 自动检测 PHP 版本和操作系统
- 动态加载: 尝试动态加载 SourceGuardian loader
- 保护提示: 如果缺少 loader,显示下载和安装说明
六、核心代码分析
6.1 SourceGuardian 保护代码结构
// 检查 sg_load 函数是否存在if(!function_exists('sg_load')) { // 获取 PHP 版本信息 $__v = phpversion(); $__x = explode('.', $__v); $__v2 = $__x[0].'.'.(int)$__x[1]; $__u = strtolower(substr(php_uname(),0,3)); $__ts = (@constant('PHP_ZTS') || @constant('ZEND_THREAD_SAFE')?'ts':''); // 构建 loader 文件名 $__f = $__f0 = 'ixed.'.$__v2.$__ts.'.'.$__u; $__ff = $__ff0 = 'ixed.'.$__v2.'.'.(int)$__x[2].$__ts.'.'.$__u; // 尝试动态加载 $__dl = function_exists('dl') && function_exists('file_exists') && @ini_get('enable_dl') && !@ini_get('safe_mode'); // 加载 loader 文件 if($__dl && $__e) { // 查找并加载 loader if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f); } // 如果加载失败,显示错误信息 if(!function_exists('sg_load')) { die($__msg); }}// 加载加密内容return sg_load('E31377DA5E9C04D0AAQAAAAX...');6.2 AJAX 处理逻辑
// 根据 act 参数路由到不同处理函数$act = $_GET['act'];switch($act) { case 'Nathan_Upload': // 调用上传处理 include 'Lib/NathanUpload.php'; break; case 'Nathan_Encode': // 调用加密处理 include 'Lib/NathanEncode.php'; break;}6.3 前端表单提交
// Layui 表单提交form.on('submit(Nathan_SG)', function (obj) { var loadIndex = layer.msg('加密中...', {icon: 16, shade: 0.01, time: false}); $.post('Nathan_Ajax.php?act=Nathan_Encode', obj.field, function (res) { layer.close(loadIndex); if (res.code == 1) { // 显示下载通知 notice.success({ title: res.msg, buttons: [['', function () { location.replace(res.data); }]] }); } else { class_Tips(res.msg, 'error'); } }, 'json'); return false;});七、业务规则
7.1 上传限制
限制项 | 规则 |
文件格式 | 仅限 ZIP 压缩文件 |
文件大小 | 最大 2MB |
文件命名 | 不能包含中文字符 |
目录命名 | 不能包含非法字符 |
7.2 加密说明
- 处理时间: 一般 10 秒 -60 秒
- 加密方式: SG11 组件加密
- 运行要求: 需要安装 SourceGuardian 组件
- 兼容性: 不适合虚拟主机运行
7.3 PHP 版本支持
PHP 版本 | 支持状态 |
5.4 | ✓ 支持 |
5.5 | ✓ 支持 |
5.6 | ✓ 支持 |
7.0 | ✓ 支持 |
7.1 | ✓ 支持 |
7.2 | ✓ 支持 |
7.3 | ✓ 支持 |
7.4 | ✓ 支持(默认) |
八、安全特性
8.1 文件安全
- 文件类型白名单校验
- 文件大小限制
- 文件名安全检查(防中文、防非法字符)
- 独立上传/下载目录隔离
8.2 代码保护
- SourceGuardian 商业级加密
- 加密后代码无法直接阅读
- 需要 loader 组件才能运行
- 防止源码泄露
8.3 用户提示
- 明确的上传要求提示
- 加密等待状态显示
- 错误信息友好提示
九、部署说明
9.1 环境要求
- PHP 5.4 - 7.4
- Nginx 服务器
- SourceGuardian Loader 扩展
9.2 目录权限
需要确保以下目录可写:
- File/storage/upload/
- File/storage/download/
9.3 SourceGuardian 安装
# 1. 下载对应版本的 loader# 2. 复制到 PHP 扩展目录# 3. 在 php.ini 中添加:extension=ixed.xxx.so# 4. 重启 PHP-FPM十、总结
10.1 项目特点
- 轻量级: 代码简洁,功能聚焦
- 易用性: 拖拽上传,自动下载
- 专业性: 使用商业级 SourceGuardian 加密
- 兼容性: 支持多 PHP 版本
10.2 适用场景
- PHP 源码作者保护知识产权
- 商业软件分发前的代码加密
- 防止源码被反编译和篡改
10.3 技术亮点
- Layui 现代化前端框架
- SourceGuardian 商业加密方案
- 完善的文件上传校验机制
- 友好的用户交互体验
文章版权声明:除非注明,否则均为边学边练网络文章,版权归原作者所有