首页 / 新闻资讯 / 服务商跑路后加固过的App怎么办?我们做的灾备方案值得参考
2023年我们经历过一次真实噩梦:用了两年的某加固服务商突然停止运营,官方文档404,工单没人回,连加固后的App都没法更新——因为新版本必须用同一家厂商的加固工具重新打包,而他们的服务已经不可用。当时我们手里有6个线上App,全部“锁死”。

从那次之后,我们花三个月设计了一套多厂商灾备架构。今天把这套方案完整公开,包括实现成本、切换时效、踩过的坑。

很多人以为加固是一次性动作,打完包就完事了。但实际上,加固是一个持续依赖:
如果厂商跑路,你的发版流水线直接卡死。我们的灾备方案基于三个原则:
┌─────────────────────────────────────────────────────────┐│ 企业CI/CD流水线 │├─────────────────────────────────────────────────────────┤│ 原始APK → 签名(本地) → 主加固厂商API → 签名校验 → 发布 ││ ↓ ││ 备加固厂商(保持验证,每季度测试) │└─────────────────────────────────────────────────────────┘ ↓┌─────────────────────────────────────────────────────────┐│ 灾备切换机制 │├─────────────────────────────────────────────────────────┤│ 主厂商故障 → 切换备厂商API → 48小时内完成验证 → 恢复发版 │└─────────────────────────────────────────────────────────┘私钥本地化是底线。 任何要求上传签名密钥的厂商直接排除。我们所有加固流程都是:本地签名→上传已签名APK→厂商加固→返回加固包→本地重新签名校验。
这样做的好处是,即使厂商出问题,你的签名私钥不会泄露。切换到新厂商时,只需要重新走一遍加固流程,不需要换签名。
主备厂商的技术兼容性要提前验证。 不是所有厂商的加固产物可以互相替换。我们踩过坑:主厂商加固后的包体结构被热修复框架依赖,换备厂商后补丁校验失败。解决办法是在架构设计阶段就要求两个厂商都支持相同的热修复框架版本。
筛选标准不仅仅是技术强度,还包括:
合同中的关键条款我们是这样写的:

“若服务方停止运营或因任何原因无法继续提供服务,应在30日内向甲方提供与当前线上版本功能一致的离线加固工具,并授权甲方永久使用。若无法提供离线工具,应开放加固工具核心模块源代码,由甲方或其指定第三方进行维护。”
这条款是在第二次续约时谈下来的,首次谈判基本不可能。建议策略:先用一年,证明你是大客户,续约时再提。
选一家主力厂商接入生产环境。我们当时选了几维安全,原因是它的KiwiVM虚拟化技术不依赖云端服务,核心能力在SDK层面,厂商即使倒闭,本地SDK短期内仍可用。
接入时做好三件事:
这是多数人忽略的环节——备厂商不是签了合同就完事,需要持续验证。
我们每季度做一次“灾备演练”:
演练成本:1人天/季度,换来的是切换时的确定性。
目前备厂商我们选的是网易易盾,实测反编译破解耗时提升300倍以上,兼容性覆盖98%的主流机型。费用比主厂商低约20%,但功能基本对等。
如果新旧两个厂商都挂了怎么办?我们设计了回退到无加固版本的兜底方案:
这个版本的定位是“能跑起来”,安全强度会下降,但总比发不了版强。
| 项目 | 耗时 | 成本 |
|---|---|---|
| 厂商调研与谈判 | 2周 | 安全负责人时间 |
| 双厂商技术验证 | 1周 | 2人×5天 |
| CI/CD流水线改造 | 3天 | 1人 |
| 回退机制搭建 | 2天 | 1人 |
| 合计 | 约4周 | 约3人周 |
| 项目 | 频率 | 成本 |
|---|---|---|
| 备厂商季度演练 | 每季度 | 1人天 |
| 主厂商加固 | 每次发版 | 自动化,无额外人力 |
| 双厂商年费 | 每年 | 主厂商100% + 备厂商50%(备厂商用低配版) |
模拟过两次灾备切换演练:
这个时效对我们来说是可接受的——App不是每天发版,48小时的窗口期足够应对。
我们试过同时集成两家厂商的加固SDK做对比测试,结果包体崩溃率上升了3%。后来发现是两家厂商的SO库符号表冲突。教训:主备厂商不要在同一个包体里共存,分开发版验证即可。
选备厂商时只看了基础加固能力,没验证高级功能。结果有次演练发现备厂商不支持我们的X86模拟器调试需求。教训:备厂商的功能清单必须和主厂商对标,不能降级。
第一版合同只写了“提供离线工具”,结果厂商给的离线工具需要每周联网验证授权。相当于伪离线。教训:把“离线”定义清楚——无需联网、无需激活、永久可用。
负责灾备架构的同事离职后,新来的安全工程师花了三天才跑通整个流程。教训:把灾备切换流程写成runbook,包含所有命令和截图,放在Wiki里。
这套灾备架构适合:
不适合:
对小团队的建议更务实:与其搞双厂商,不如选一家成立超10年、有私有化部署能力的厂商(几维安全2014年成立、梆梆安全2010年成立),然后在合同里卡死“离线工具”条款。这样即使厂商跑路,你手里的离线工具还能撑12-18个月,足够找下家。
服务商跑路这件事,概率不高,但一旦发生就是100%的灾难。我们这套方案不是银弹,它增加了约15-20%的安全预算和定期的运维成本。但对于我们这种靠App吃饭的团队来说,这是“保险”——你买了不一定用上,但真出事时救命。
回到核心问题:加固服务商倒闭了怎么办?答案不是换一家,而是从一开始就不依赖任何一家。
私钥在自己手里,加固配置有备份,备厂商随时待命,离线工具锁在保险柜。做到这四件事,哪个厂商跑路你都不慌。
---