基于 YukiHookAPI 的 LSPosed/Xposed 模块,用于移除 Google Password Manager 对已声明 Passkey 来源(origin)的特权浏览器允许列表检查。
- Google Play 服务
26.26.34(260400-945364269) - Android 10 或更高版本
- 支持旧版 Xposed API 的 LSPosed/EdXposed 构建版本(最低框架 API 93)
该项目使用 Gradle 9.6.1、Android Gradle Plugin 9.3.1、AGP 内置 Kotlin、YukiHookAPI 1.3.2、Xposed API 82 与 DexKit 2.2.0。
运行时,DexKit 会在 GMS 基础 APK 中搜索一个 String -> String 解析器。该解析器使用稳定的允许列表 JSON key:
privilegedAllowlistappscert_fingerprint_sha256
模块随后会从该解析器的 (String, *, String) 构造函数中捕获已声明的 origin,并直接返回该 origin,而不会执行允许列表比较。
这样可以避免依赖混淆后的固定类、方法或字段名称,因为这些名称会随着 GMS 版本变化。
不会使用固定 Hook 兜底。只有动态定位到唯一、且构造函数形状匹配的目标时才安装 Hook;否则会输出中文日志并保持原行为。
./gradlew assembleDebug
adb install -r app/build/outputs/apk/debug/app-debug.apk在 LSPosed/EdXposed 中启用该模块;模块声明的静态作用域为 com.google.android.gms。启用后需要强制停止 Google Play 服务或重启设备。
GMS 混淆规则会随着版本更新而变化。更新后,请检查 LSPosed 日志中的 通行密钥解限 标签。
动态匹配器只有在找到唯一一个候选目标时才会安装;否则它会故意不执行任何操作,以避免修改其他凭据相关流程。