提取含会话数据的APK以启用SSL代理及Firebase 403问题解决
解决Firebase 403请求拦截问题
首先,你遇到的Requests from this Android client application correct.url.here are blocked错误,核心原因是Firebase Installations会严格验证应用的签名哈希值和包名。你用AddSecurityExceptionAndroid修改APK后,应用的签名已和原应用不一致,所以Firebase直接拒绝了请求。这里有几个可行的解决方向:
用原应用的签名给补丁APK重新签名
这是最稳妥的方案。如果能找到原应用的签名文件(.jks或.keystore格式),直接用它给修改后的APK签名:apksigner sign --ks your-original-keystore.jks --ks-key-alias your-key-alias modified-app.apk要是拿不到原签名文件,也可以先通过
keytool从原APK提取签名信息,再生成匹配的签名文件(需要一点逆向工具辅助)。绕过Firebase Installations验证(需Root设备)
如果你的设备已经Root,可以使用Xposed类的模块(比如专门的Firebase Bypass模块),跳过Firebase的签名验证逻辑,让修改后的APK能正常和Firebase通信。调整代理规则,排除Firebase请求
你提到只代理*.apiwebsite.com时应用运行正常,那可以在Charles里把firebaseinstallations.googleapis.com加入SSL代理例外列表,让设备直接处理这个请求,只代理你需要抓包的目标API。这样既不会触发Firebase的验证问题,又能拿到你需要的GET请求数据。
保留会话状态,让补丁APK自动“登录”
要让修改后的APK启动后直接处于已登录状态,核心是把原应用的会话数据迁移过去,有两种实用方式:
1. 手动迁移会话文件
应用的会话数据通常存在以下几个路径:
/data/data/[你的应用包名]/shared_prefs/(SharedPreferences存储的会话)/data/data/[你的应用包名]/files/(文件存储的会话)/data/data/[你的应用包名]/databases/(数据库存储的会话)
具体步骤:
- 先用
adb pull从原应用导出这些文件到本地:adb pull /data/data/com.your.app/shared_prefs/ ~/local-session/ - 安装补丁APK后,先清除应用数据(避免新旧数据冲突),再用
adb push把本地的会话文件推回应用目录,最后修复文件权限:adb push ~/local-session/shared_prefs/ /data/data/com.your.app/ # 先通过下面命令获取应用UID,替换u0_aXXX # adb shell dumpsys package com.your.app | grep userId adb shell chown -R u0_aXXX:u0_aXXX /data/data/com.your.app/shared_prefs/
2. 制作带内置会话的补丁APK(适合有逆向基础)
如果想让补丁APK安装后自动加载会话,可以:
- 把提取的会话文件放到APK的
assets目录 - 反编译APK,修改应用的初始化代码(比如Application类的
onCreate方法),在启动时将assets里的会话文件复制到应用的沙盒目录(注意处理文件覆盖和权限问题) - 重新编译打包并签名APK
额外小提示
- 可以用
adb backup备份原应用的完整数据,避免遗漏会话相关文件:
之后用adb backup -noapk com.your.appabe工具解压备份文件,就能提取到完整的应用数据。 - 测试时,建议先卸载补丁APK、清除残留数据,再重新安装并导入会话,避免数据冲突导致的异常。
内容的提问来源于stack exchange,提问作者MortenMoulder




