本次升级实施了方案一:快速修复,主要改进包括:
- 升级哈希算法 - MD5 → SHA-256
- 统一加密模块 - 使用
uAntiTamperPackage - 生产环境优化 - 禁用详细日志
- 反调试保护 - 新增
uAntiDebug.pas模块
重要:在升级前务必备份数据库!
# 备份MoveC.db
copy MoveC.db MoveC.db.backup_%date:~0,10%以下文件已被修改,请确保使用最新版本:
- ✅
uAntiTamperPackage.pas- 添加SHA-256支持和编译指令 - ✅
FrameAboutMe.pas- 统一使用uAntiTamperPackage - ✅
uAntiDebug.pas- 新增反调试模块(新文件)
重要:由于哈希算法升级,需要重新导入所有打赏图像!
使用 ImportImages.exe 重新导入图像:
# 编译ImportImages项目
dcc32 ImportImages.dpr
# 运行导入工具
ImportImages.exe或者在Delphi IDE中:
- 打开
ImportImages.dpr - 按 F9 运行
- 选择图像文件并导入
- 不定义
RELEASE符号 - 启用详细日志
- 禁用反调试保护
- 打开项目选项 (Project → Options)
- 选择 "Delphi Compiler" → "Compiling"
- 在 "Conditional defines" 中添加:
RELEASE - 保存配置
这将自动:
- ✅ 禁用详细日志输出
- ✅ 启用反调试保护
- ✅ 优化性能
在主程序 uMain.pas 中添加反调试检测:
uses
// ... 其他单元
uAntiDebug;
procedure TfrmMain.FormCreate(Sender: TObject);
begin
// 在程序启动时检测调试器
{$IFDEF RELEASE}
if TAntiDebug.CheckAll then
begin
ShowMessage('检测到调试器,程序将退出。');
Application.Terminate;
Exit;
end;
{$ENDIF}
// ... 其他初始化代码
end;确保在使用前初始化 TAntiTamperPackage:
// 在主窗体或Frame的初始化代码中
var
Config: TAntiTamperConfig;
begin
Config := TAntiTamperPackage.GetDefaultConfig;
Config.EncryptionKey := 'YourStrongKey_2025'; // 使用强密钥
Config.DownloadURL := 'http://www.goodmem.cn';
Config.EnableLogging := {$IFDEF DEBUG}True{$ELSE}False{$ENDIF};
TAntiTamperPackage.Initialize(Config);
end;# Debug版本
dcc32 C盘瘦身.dpr
# Release版本
dcc32 -DRELEASE C盘瘦身.dpr- 程序正常启动
- 打赏页面正常显示
- 微信收款码显示正常
- 支付宝收款码显示正常
- BTC地址显示正常
- USDT地址显示正常
- 关于我页面显示正常
- 复制地址功能正常
- Release版本无详细日志输出
- 使用调试器时程序正确退出(Release版本)
- 篡改检测正常工作
- SHA-256校验正常工作
| 项目 | 升级前 | 升级后 | 改进 |
|---|---|---|---|
| 哈希算法 | MD5 | SHA-256 | ✅ 更安全 |
| 加密模块 | 分散 | 统一 | ✅ 易维护 |
| 日志输出 | 始终启用 | 可控制 | ✅ 更安全 |
| 反调试 | 无 | 多层检测 | ✅ 更安全 |
| 代码质量 | 重复代码 | 统一接口 | ✅ 更清晰 |
- ✅ 保留了
md5_hash字段以保持向后兼容 ⚠️ 新版本使用md5_hash字段存储SHA-256值(字段名未改变)⚠️ 旧数据库的图像将无法加载(需要重新导入)
⚠️ 默认密钥仍然硬编码,建议后续版本改进- ✅ 已统一密钥管理位置
- 💡 建议:在
uAntiTamperPackage.Initialize时设置强密钥
Debug版本会生成以下日志文件:
antitamper_debug.log- 防篡改包日志aboutme_debug.log- AboutMe框架日志FRAME_CONSTRUCTOR_DEBUG.log- 构造函数日志
Release版本不会生成这些文件。
- SHA-256比MD5略慢(约10-20%)
- 对用户体验影响可忽略不计
- 反调试检测耗时 < 100ms
原因:数据库中的哈希值是MD5,但新代码使用SHA-256验证。
解决:重新导入所有图像。
ImportImages.exe原因:未正确定义 RELEASE 编译符号。
解决:
- 检查项目选项中的 "Conditional defines"
- 确保包含
RELEASE - 重新编译
原因:未定义 RELEASE 符号,或在Debug模式下运行。
解决:使用Release配置编译和运行。
原因:未添加 uAntiDebug 到uses子句。
解决:
uses
// ... 其他单元
uAntiDebug;如果升级出现问题,可以回滚:
copy MoveC.db.backup MoveC.db使用版本控制系统恢复到升级前的版本:
git checkout HEAD~1 uAntiTamperPackage.pas
git checkout HEAD~1 FrameAboutMe.pasdel uAntiDebug.pas
del UpgradeDatabase.sql升级到方案二:标准升级时需要:
- ✅ 集成
uBasicProtection.pas的AES-256加密 - ✅ 实现动态密钥生成
- ✅ 添加数据库加密
- ✅ 实现多层校验机制
- ✅ 添加程序自身完整性检查
预计时间:1-2周
如遇到问题,请检查:
-
日志文件(Debug版本)
antitamper_debug.logaboutme_debug.log
-
编译输出
- 查看编译警告和错误
-
数据库状态
- 使用SQLite工具检查表结构
完成升级后,请确认:
- 已备份原数据库
- 已更新所有代码文件
- 已重新导入打赏图像
- Debug版本编译成功
- Release版本编译成功
- 所有功能测试通过
- 反调试保护工作正常
- 无详细日志泄露(Release版本)
- 已删除旧的备份文件
升级完成日期: _____________
升级执行人: _____________
版本号: v1.1.0 (SHA-256升级版)
上一版本: v1.0.0 (MD5版本)