NCC 注入器使用说明(开放注入 DAG)

注入器一键加固你的 APK,服务端验证运行时指纹并用私钥签发短时授权,防换签名重打包。本页只讲四件事:开放注入怎么用、它和 AES 传输加密 / 设备会话模式的关系、怎么限制谁能产出构建、怎么用硬件证明与风控报表发现异常。

只填 AppKey 即可注入与 AES 加密完全兼容配合设备会话 = 产物不含 AppSecret构建令牌 / Key Attestation / 风控报表更新:2026-10-05

一、开放注入是什么

控制台「软件管理 → 编辑」里的 「开放注入(DAG)」 开关。开启后,任何人在注入器里只要填入你的 AppKey,就能完成注入——不需要登录控制台、不需要填 AppSecret、不需要填 AES 密钥,全部配置由服务端按 AppKey 自动下发。

注入过程中服务端会做三件事保护你的 APK:

机制作用
构建登记注入完成后,产物的签名证书、包名等指纹登记到服务端,作为唯一合法快照
运行时证明(attest)产物运行时上报实测指纹,与登记快照比对;换签名重打包的包会被拒绝(421)
短时授权(grant)验证通过后服务端用 Ed25519 私钥签发 15 分钟授权,产物内置公钥离线验签后放行门禁——伪造「验证通过」响应不再可能

诚实说明:实测指纹由客户端上报,技术扎实的攻击者可伪造上报内容绕过比对。DAG 的价值 = 重打包可检测、可撤销(控制台「注入构建」页一键吊销)+ 防伪造响应,不是绝对拦截。

二、使用步骤(作者视角)

步骤操作说明
1控制台 → 软件管理 → 编辑 → 勾选 「开放注入(DAG)」 → 保存一次性操作。开启后你名下该软件的注入器用户零配置
2把 AppKey 发给你的用户(或贴在下载页)这是用户唯一需要填的东西
3用户在注入器里:粘贴 AppKey → 选择目标 APK → 开始注入注入器自动完成:取配置 → 注入 → 登记构建 → 写入产物
4(可选)控制台「注入构建」页查看/管理产物每个注入产物是一个「构建」:可看设备数、验证通过/拒绝计数;泄露时一键吊销(在线设备 ≤15 分钟失效)或删除

不开启开放注入也可以用:注入器支持登录你的控制台账号(安全强度更高,密钥不经公开接口下发)。开放注入只是把「填三把密钥」简化成「填一个 AppKey」,是否开启取决于你是否接受:任何拿到 AppKey 的人也能用注入器处理你的软件(风险细节见 §四、§五)。

三、注入器对接接口

开放模式下注入器只调两个免签接口(/api/v1 前缀),流程先后固定:

顺序接口返回
①POST /injector/open-register,body:{"appkey":"nk...","pkg":"宿主包名","cert_fpr":"产物证书SHA-256","version":"1.0.0"}(软件开了「强制构建令牌」时需附 build_token)deployment_id(构建号,写入产物)、inject_secret(注入专用签名密钥)、dag_aes_key(构建派生 AES 钥,软件开了 AES 才有意义)、pubkeys(验签公钥)。同一产物重复注入返回同一构建号(幂等)
②GET /injector/config?appkey=nk...&dep=dep_x软件名/版本/公告、enc_enabled(是否开 AES)、strict_mode(是否开设备会话)、allow_register 等展示配置

产物运行后周期调用 POST /injector/attest 上报实测指纹换授权(请求带 ik=1 用 inject_secret 签名;换签名重打包 → 421 拒绝)。接口细节以注入器内置实现为准,此表仅供理解流程。

四、与 AES 传输加密的关系

结论:开放注入与 AES 完全兼容,不用关。

历史说明:早期版本开放模式曾直接下发 enc_key(当时建议关闭 AES),现已改为构建派生方案,该顾虑不复存在。

五、与设备会话模式(strict_mode)的关系

结论:strict_mode 是「要不要把 AppSecret 从产物里彻底拿掉」的选择,与开放注入正交、可叠加。

不开 strict_mode开 strict_mode(设备会话)
业务请求怎么签名用 AppSecret(所以产物里仍会内置 AppSecret)先设备注册(enroll)换会话密钥,业务全用会话签名
产物泄露后果提取 AppSecret 可伪造登录/卡验证等业务请求产物里没有 AppSecret,只有受限密钥(签不了业务接口);会话密钥 15 分钟级过期
对用户的影响无感旧版客户端(未接入会话协议的)将无法验证——开启前确认产物走新协议

两个开关的分工:开放注入管「注入器怎么拿到配置」(零登录、只填 AppKey);strict_mode 管「产物运行后用什么凭证与服务器通信」。互不依赖,同时开启是完整形态。

注:注入器取配置的接口里也可以代你开关 strict_mode(POST /api/dev/injector/config,需登录态);手动开关在控制台软件编辑弹窗。

六、推荐组合

组合配置适合
省事开「开放注入」,其他不动快速分发。产物含 AppSecret(业务签名需要),但换签名重打包被 421 拦、可吊销
推荐开「开放注入」+ 开「AES 传输加密」+ 开「设备会话模式」产物不含 AppSecret、流量加密、指纹比对、可吊销——四层防护全齐,且三个开关互不冲突
强对抗推荐组合 + 控制台「注入构建」页定期看 attest 拒绝计数发现拒绝突增(疑似重打包)立即吊销对应构建

七、常见问题

八、注入器构建令牌(build_token)

开放注入 + 公开 AppKey 意味着「任何拿到 AppKey 的人都能登记构建」。如果你向第三方分发注入器、或想精确控制谁能产出你软件的构建,开启软件的 「强制构建令牌」:

步骤操作
1控制台「注入构建 → 注入器构建令牌」→ 新建令牌:选择软件、可选绑定注入器 ID、日配额(0=不限)、有效期(0=永久)
2令牌明文只显示一次,复制后配置到注入器(register / open-register 请求的 build_token 参数)
3软件编辑弹窗勾选 「强制构建令牌」并保存。之后无令牌登记一律 426 拒绝;令牌可随时吊销/恢复/删除

九、Key Attestation 完整性证明

指纹比对依赖客户端上报,理论上可伪造;Key Attestation 把信任根转移到设备硬件:注入产物在 AndroidKeyStore 生成 TEE/StrongBox 硬件密钥并请求证书链,attest 时一并上报,服务端验证证书链 + challenge + 安全等级 + Verified Boot 后才签发授权。

构件说明
信任根控制台「注入构建 → Key Attestation 信任根」(平台管理员)粘贴厂商/Google 根证书 PEM。未配置信任根时完整性证明一律失败
构建策略登记构建时在 policy 里配置:require_integrity(1=必须提供)、integrity_min_level(0 软件 / 1 TEE / 2 StrongBox)、integrity_require_verified_boot(1=要求 Verified Boot)
attest 提交integrity: {"kind":"key_attestation","chain":["base64 DER",...],"sig":"base64"};challenge 约定为 "dag|<deployment_id>|<请求nonce>",证书链中 attestationChallenge 必须与之一致,sig 为 leaf 私钥对同一 challenge 的签名
拒绝码未通过返回 425;未开启要求的构建提交了无效证明时仅告警并记入风控

十、风控报表

控制台「风控报表」页汇总 DAG 的安全信号(开发者只能看到自己名下软件):