立项背景和目标:美擎仿真软件的 .vcmx 工程文件是企业的核心商业机密,一旦被拷贝到非授权环境即可直接打开,并可通过"另存为""导出"等操作生成明文副本造成泄密。本项目目标是构建一套"加密存储 + 联网授权 + DLL 注入钩子 + 文件系统监控"的纵深防御体系,确保 .vcmx 工程文件仅能在授权环境下被打开,且任何时刻都无法在客户机上产生明文副本。
软件核心功能模块:① AES-256-GCM 文件加密模块(加密工具将 .vcmx 加密为 .vcmx.enc);② 联网授权模块(授权服务器签发 8 小时 Token,心跳续期);③ 反调试检测模块(逆向工具进程扫描、调试器检测、虚拟机检测);④ EasyHook 注入钩子(拦截 CreateFileW 写权限、另存为对话框、NtCreateFile、文件移动);⑤ 文件守护模块(FileSystemWatcher + 周期扫描,发现泄漏立即销毁并加密存储);⑥ 受保护临时目录(强 ACL 仅当前用户和 SYSTEM 可访问)。
业务流程:双击 .vcmx.enc → 反调试检查 → 读取注册表授权密钥 → 联网验证签发 Token → 派生密钥解密到受保护临时目录 → 启动美擎仿真 → 注入 Hook DLL → 启动文件守护 → 等待美擎退出 → 强制清理临时文件。全程任何一步失败即中止并清理。
整体架构和设计思路:系统分为四部分——VcmxAuthServer(net8.0 单文件自包含,ASP.NET Core,负责授权验证与管理后台)、VcmxEncryptor(net8.0 加密工具 CLI)、VcmxLauncher(net48 多文件发布启动器,负责解密、启动、注入、守护、清理)、VcmxHookDll(EasyHook 注入 DLL)。共享核心 VcmxCommon 库采用 net48;net8.0 多目标编译,分别服务于启动器和服务器/加密工具两条链路。
我负责的模块和结果:完成整个系统的架构设计与全部核心模块开发,包括双路径 AES-256-GCM 加密、授权服务器 9 个 API 接口与内嵌管理后台、启动器 8 阶段时序调度、EasyHook 六类 API 钩子、文件守护与临时目录 ACL 保护。代码质量通过 21 个自动化测试(8 加密 + 9 授权 + 4 文件守护)全部通过。
我遇到的难点和解决方案:① EasyHook 2.7 依赖 System.Runtime.Remoting,该程序集在 .NET 8 中已被移除,导致启动器无法用 net8.0 实现注入——解决方案是把启动器从 net8.0 自包含迁移到 net48 多文件发布(体积也从 162MB 降到 8.8MB);② 客户机不装 .NET 8 运行时,服务端单文件自包含可达 111MB——通过框架职责划分解决;③ net48 无内置 AesGcm,加密需双路径实现——设计统一加密接口,net8.0 用内置 AesGcm、net48 用 BouncyCastle GcmBlockCipher 分别实现;④ 文件守护误删临时解密文件——明确不监控临时目录,仅监控保存目录、文档、桌面等位置。