软件开发商将产品交付至客户现场、合作伙伴环境或终端设备后,可能面临反编译、调试、Hook、Dump 等静态分析和运行时分析手段,代码、算法、核心资源与模型均存在暴露风险。为降低上述风险,软件开发商需要选择合适的软件加密工具。与此同时,程序类型、操作系统、CPU 架构和发布流程日趋复杂。仅对比功能清单或依赖单次 Demo,难以判断工具在兼容性、性能、国产化适配和持续发布中的实际表现。
选型需要同步验证产品能力与项目适配情况。除功能数量和产品演示外,还应确认工具能否覆盖现有及后续技术栈、能否接入研发和发布流程,以及保护配置对性能和运行稳定性的影响。收费方式也应与项目实际需求匹配。
本系列将软件加密工具的选型要求归纳为九项标准,包括安全能力、可实施性、平台兼容性、开发集成、合规性、可测试性、成本、服务保障和厂商能力。各篇文章将分别说明各项标准需要检查的内容、常见风险和评估方法,为软件开发商选择软件加密、代码保护、防逆向、反破解和应用加固工具提供参考。
本文为系列第二篇——平台兼容性、开发集成与合规性篇。平台兼容性重点考察工具能否覆盖当前程序,并在项目增加开发语言、操作系统、文件格式或 CPU 架构时提供对应方案;开发集成重点考察工具能否通过 GUI、命令行和批量处理接入现有构建与发布流程;合规性重点考察工具是否适配项目要求的国产操作系统、CPU 架构和部署环境。下文将围绕程序与运行环境核对、后续技术变化、CI/CD 接入和国产化适配展开分析。
一、平台兼容性:核对程序与运行环境
软件产品可能包含可执行程序、动态库、Python 脚本、SDK 包、静态库、目标文件和资源文件。即使使用同一种开发语言,编译器、运行时、操作系统或 CPU 架构不同,生成的程序文件也可能存在差异。因此,选型时应结合待保护文件,逐项核对文件格式、操作系统、CPU 架构及编译、运行环境。
判断平台兼容性,需要围绕待保护文件逐项核对以下维度:
| 核对层面 | 需要确认的问题 |
|---|---|
| 程序与文件格式 | 待保护对象属于哪种文件格式,工具是否支持项目涉及的 EXE、DLL、ELF、SO、Mach-O、JAR、Class、APK、AAB、IPA、脚本、静态库或目标文件 |
| 开发语言与程序类型 | Native、.NET、Java、Python、Unity、移动应用等是否有对应保护方案 |
| 操作系统 | Windows、Linux、macOS、Android、iOS、HarmonyOS 及其他国产操作系统是否支持 |
| CPU 架构 | x86、x64、ARM32、ARM64、LoongArch 等是否覆盖 |
| 编译与运行环境 | 编译器、解释器、运行时、开发引擎及第三方框架的具体版本是否适配 |
| 后续处理 | 保护后的程序能否继续完成项目所需的签名、打包、安装或二次链接,并在目标设备上正常运行 |
上述六个维度用于判断工具与当前项目是否匹配。企业产品通常会持续增加开发语言、运行平台和交付形式,选型时还需检查工具对后续变化的适配情况。
后续适配能力:关注产品支持范围的变化
企业产品可能在后续版本中增加开发语言、操作系统、CPU 架构或交付形式。评估工具能否适应这些变化时,可以检查以下内容:
- 产品支持范围是否覆盖项目计划增加的程序类型和运行平台;
- 厂商是否持续更新对操作系统、CPU 架构、编译器和框架版本的支持;
- 系统、编译器或框架版本变化后,是否提供明确的支持范围和适配说明;
- 项目升级后,原有保护配置和处理流程是否仍可使用,是否需要重新调整。
VBP 如何对应平台兼容性要求
结合前述核对维度,Virbox 旗下核心产品 Virbox Protector(简称 VBP)的支持范围示例如下:
| 支持维度 | VBP 支持范围示例 |
|---|---|
| 程序类型 | Native 程序、.NET 程序、Android APK/AAB/AAR、Unity 全平台、Python 程序、macOS/iOS App、Harmony SO/HAP、Java JAR/WAR/Class、静态库和目标文件 |
| 语言框架 | C/C++、Java/Kotlin、C#/J#、Swift/OC、Java、Python、PB/Delphi/VB/VC、Flutter、Golang |
| 操作系统 | Windows、Linux、macOS、Android/iOS、Harmony、OpenWrt、欧拉/龙蜥、龙芯/统信/麒麟 |
| 指令集 | x86/x64、ARM32/ARM64/Thumb、LoongArch、MIPS、Dalvik、JVM、MSIL |
表中内容可用于初步核对 VBP 的支持范围。实际选型时,还需结合文件格式、编译器、运行时、框架版本和发布方式,使用真实程序验证保护后程序的运行情况。
项目新增技术栈或升级运行环境时,应重新确认保护范围、原有配置和发布流程是否仍然适用。VBP 也会根据技术变化和项目需求,持续完善对程序类型、运行平台、CPU 架构及相关版本的支持。
二、开发集成:将保护接入构建与发布流程
开发集成应重点检查工具能否通过命令行处理待保护程序、批量处理多个文件或程序模块,并将保护步骤接入现有构建与发布流程。使用 SDK 标签在源代码中指定保护对象时,还需确认标签添加、程序编译与保护处理的执行顺序。
开发集成检查清单
开发集成可以重点检查以下内容:
- 是否提供命令行调用方式;
- 保护配置能否保存和复用;
- 是否支持通过 SDK 标签在源代码中指定保护功能,编译后能否正确解析已标记的保护对象;
- 是否支持批量处理多个文件或程序模块;
- 是否返回明确的执行结果或退出状态,便于判断保护成功或失败;
- 能否与编译、签名、打包、测试和发布步骤正确衔接;
- 能否接入现有 CI/CD 流程或企业自建流水线。
VBP 如何对应开发集成要求
对应上述检查项,VBP 的开发集成主要包括 SDK 标签、命令行处理和 CI/CD 接入。SDK 标签应在源代码编译前添加,命令行用于处理编译后的程序文件;保护配置的保存与复用、批量处理方式及执行结果判断,则需结合具体模块和项目流程确认。
SDK 标签在保护流程中的处理顺序
SDK 标签写在源代码中,用于指定需要保护的对象。程序编译后,VBP 解析编译产物中的标签,并按标记范围执行保护。处理顺序如下:
- 在源代码中添加 SDK 标签,指定需要保护的对象;
- 编译生成 PE、ELF、Mach-O 或 JAR 等程序文件;
- 使用 VBP 解析编译产物,核对标签识别结果;
- 按标签标记的范围执行保护;
- 测试保护后的程序。
产品迭代并重新编译时,如源码中的标签仍然保留且能够被正确解析,VBP 可继续按标记范围执行保护,减少重复选择保护对象的操作。代码结构、编译方式或混淆流程发生变化后,应重新核对标签解析结果。
关于 SDK 标签的适用对象和保护粒度,详见本系列第一篇“安全能力与可实施性篇”。
CI/CD 接入的核对项
一个常见的保护与发布流程可以包括以下步骤:
- 编译并生成原始程序;
- 使用 VBP 命令行处理待保护文件;
- 检查命令执行结果;
- 对保护后的程序完成签名或打包;
- 执行功能、兼容性和性能测试;
- 保留最终发布版本和本次使用的保护配置。
具体顺序需要根据程序类型确定。移动应用需要核对签名和打包顺序,静态库和目标文件需要继续二次链接,桌面软件需要验证保护后的程序能否正常打包、安装和运行。
三、合规性:核对国产化环境适配范围
国产化适配需要落实到具体环境。同一操作系统的不同版本、不同 CPU 架构以及不同程序格式,可能对应不同的保护和运行条件。选型时应明确目标系统版本、CPU 架构、待保护文件和部署方式,再核对工具是否支持。
VBP 如何对应合规性要求
VBP 当前的国产化适配范围包括统信、麒麟、欧拉、龙蜥等操作系统,以及 LoongArch、ARM 等项目常用 CPU 架构。具体项目仍需选择对应模块处理真实程序,并验证保护后的程序能否正常部署、启动和运行。
国产化适配说明产品对相关环境具备适配能力,但不等同于满足项目的全部合规或采购要求。涉及兼容认证、测评报告、资质证明等材料时,还需按照采购文件逐项核对。
场景示例:国产化软件迁移中的平台适配与持续发布
某工业软件企业的一款产品原本运行于 Windows x64 环境,后续需要增加国产操作系统及 LoongArch、ARM 等 CPU 架构版本。选型时应分别核对程序文件格式、编译器与依赖库版本、目标操作系统和 CPU 架构,并验证保护后的程序能否正常打包、安装、启动和运行。
项目采用持续发布流程时,可在程序编译后调用 VBP 命令行进行保护,再完成签名、打包和测试。新增操作系统或 CPU 架构后,还需重新验证原有保护配置和发布流程;采购文件涉及兼容认证、测评报告等材料时,应另行核对。
选型结论
平台兼容性用于确认工具是否支持项目中的程序和运行环境;开发集成用于确认保护步骤能否接入构建与发布流程;合规性用于核对国产化环境和采购要求。选型时需要结合项目情况核对这三项内容。
VBP 针对不同程序和软件资产提供相应的保护方向,并支持通过命令行进行自动化处理。对于涉及多种程序类型、持续发布或国产化部署的软件项目,可将其纳入候选范围,结合具体模块说明和实际程序测试结果完成评估。
软件保护能否用于生产,取决于保护配置是否可复用、发布流程是否稳定、目标环境是否经过验证。程序类型、平台或 CPU 架构发生变化后,还应重新核对保护范围和发布流程。
系列专题
- 总述篇:软件加密工具九项选型标准
- 第一篇:安全能力与可实施性
- 第二篇:平台兼容性、开发集成与合规性(本文)
- 第三篇:可测试性与成本
- 第四篇:服务保障与厂商能力
深盾科技 · Virbox | 让数字世界充满信任
Virbox Protector(VBP)是一套面向软件交付安全的全栈软件加密与应用加固解决方案,覆盖本地程序、移动应用、Java/.NET/Python、Unity、SDK、静态库、目标文件与 AI 模型等软件资产,帮助企业在交付之后依然保持代码、算法、资源和业务价值可控。
