SO 加固与 Native 兼容性检查清单
御盾技术指南 · 技术原理与实操 · 简体中文
SO 加固的起点不是隐藏几个符号,而是理解 Native 库如何被构建、装载和调用。只有装载链与 ABI 范围明确,保护策略才有可验证的边界。
建立 Native 依赖图
列出应用直接加载的库、间接依赖、JNI 注册方式和初始化顺序。第三方 SDK 自带的 Native 库也应进入图中。
依赖图用于判断哪些库可以独立处理,哪些库必须保持导出或加载约束。
- 主库与依赖库
- JNI 注册方式
- 加载时机
- 第三方 Native SDK
按信息类型选择保护
导出符号、字符串、常量、协议处理和高价值函数暴露的风险不同。单一处理方式不应被包装成完整 SO 保护。
高频函数、启动初始化和异常处理路径需要特别关注性能与稳定性。
每个目标 ABI 都要有证据
构建产物应明确包含哪些 ABI,并在对应架构上验证安装、启动、库加载和关键 JNI 调用。
模拟器结果不能自动替代真实目标架构,缺少覆盖时应明确记录未验证。
- ABI 与产物一致
- 依赖可解析
- JNI 调用可回归
- 异常能够定位
发布边界
Native 保护提高分析与篡改成本,但签名、版本合法性和服务端授权仍需独立治理。最终候选包必须和 APK 层、业务层一起完成发布回归。
用真实候选包验证边界
提交应用的技术栈、关键路径与目标系统范围。登录、注册、申请和项目资料均由御盾中央平台承接。