逆向分析发现海康威视 app 硬依赖 Google Services Framework,开发 MIT 协议补丁工具并提交 PR 至 GrapheneOS。
我已经和 Hikvision 摄像头应用在 GrapheneOS 上无法收到推送通知的问题斗争了一年多。无奈之下,我装了 LineageOS 就为了让它能正常运行。结果,两天前,过 TSA(美国运输安全管理局)检查后手机上所有 Google 服务相关的东西全炸了。那是压垮我的临界点。
我纯粹是因为受不了才重新回过头来解决这个问题。
Hikvision 的应用会检查 com.google.android.gsf(Google Services Framework)是否存在。如果不存在就直接退出——即使 GmsCore(Play Services)已安装且 FCM 完全正常工作也不行。因为 GrapheneOS 默认不包含 GSF,所以这个检查永远会失败。
我联系了 GrapheneOS。他们把我的帖子移到了第三方应用论坛并锁定了。我联系了 Hikvision/Annke。他们从未回复。
所以我自己动手对这个 APK 进行了逆向工程。
我反编译了这个应用,追踪了推送通知注册逻辑,找到了硬编码的 GSF 检查,并构建了一个 MIT 许可的补丁工具来移除它。
这个补丁工具获取你的 APK,剥离 GSF 检查,然后重新打包——其他所有内容都原封不动。你可以在本地运行,它是开源的,而且现在就能用。
我还向 GrapheneOS 提交了一个 PR,它能在检测到已验证的 GmsCore 对调用者可见时,综合出一个最小的 GSF 包存在性。这是带门槛的——只有当 Play Services 实际安装并可见时才会介入。
如果合并,这将为每一个做同样错误 GSF 检查的应用修复问题,而不仅仅是 Hikvision。
我记录了一个极其简单的方法:
在手机上启用 USB 调试
将其插入电脑
告诉 AI 助手(如 Cursor、Claude 等)使用 GitHub 仓库来修补你的 APK
MIT 许可的补丁工具:https://github.com/Alex9001/hikvision-grapheneos-fcm-patch
GrapheneOS PR:https://github.com/GrapheneOS/platform_frameworks_base/pull/432
完整技术报告:https://reflashlab.com/articles/graphene-vs-hikvision/
这不仅仅关乎 Hikvision。可能还有数十个应用犯同样的错误——检查 GSF 而不是验证 FCM 可用性。如果 PR 被合并,所有这些问题都将在操作系统层面得到修复。