QQ Recall Guard

面向 QQ 9.2.60(versionCode 13010,arm64-v8a)的 LSPosed 防撤回模块,基于 libxposed Modern API 102。

功能

  • QQ 正在运行时,保留好友与群聊中被撤回的原消息,并插入“尝试撤回”提示。
  • 在 ColorOS/HeyTap 推送服务已经收到通知、但 QQ 随后冷启动同步到撤回记录的情况下,尝试从本地推送快照恢复通知中已有的文本正文。
  • 冷启动恢复成功后,在原撤回记录上持久化灰字覆盖标记,显示“对方尝试撤回一条消息”;蓝色“一条消息”使用 QQ 原生消息定位器。保留原记录的 ID、时间和位置。
  • 为恢复的文本气泡保留原发送者身份,使 QQ 自身继续解析头像、好友备注或群成员名称。
  • 仅恢复经过真实撤回记录匹配的文本;不会下载或重建图片、视频、语音等媒体。
  • 对已验证格式的 QQ 私聊推送,重投时使用推送标识中的稳定时间匹配;恢复气泡使用原撤回记录的时间,避免通知重投改变记录位置。
  • 解析、IPC 或存储失败时保持 fail-open,不阻断 QQ 启动和系统通知。

兼容性与作用域

项目 要求
目标应用 QQ 9.2.60(13010)
CPU 架构 arm64-v8a
Android 8.0(API 26)及以上
框架 支持 libxposed Modern API 102 的 LSPosed
模块版本 1.3.3(versionCode 27)

LSPosed 作用域需要同时选择:

  • com.tencent.mobileqq
  • com.heytap.mcs(仅用于 ColorOS/OPush 冷启动恢复能力)

QQ 的 Java 类、native 签名和内部消息接口均严格适配 9.2.60。其他版本不会被视为受支持版本。

隐私与数据

模块不联网,不包含更新器、常驻服务、长期轮询、WakeLock、通知监听或外部共享存储。ColorOS 冷启动恢复功能会把通知中已经存在的文本及必要会话元数据写入模块私有 SQLite:最多保留 200 条候选记录,有效期 7 天。卸载模块会删除该私有缓存。

安装

  1. 从 GitHub Releases 下载并安装 APK。
  2. 在 LSPosed 中启用模块,并勾选 QQ 与 com.heytap.mcs。
  3. 重启这两个目标进程;首次安装时也可以直接重启设备。

停用模块时,从 LSPosed 移除作用域并重启目标进程,或直接卸载 dev.recallguard.qq。

构建

需要 JDK 17、Android SDK Platform 37、NDK 29.0.13599879 和 CMake 3.31.0。

运行自检:

.\tools\run-parser-self-test.ps1
python .\tools\test-push-cache-policy.py
python .\tools\test-git-privacy.py
.\tools\run-push-message-time-self-test.ps1
.\gradlew.bat :app:testDebugUnitTest :app:lintRelease
.\gradlew.bat :app:assembleDebug

测试 APK 输出到 app/build/outputs/apk/debug/。面向普通用户的已签名版本请从 GitHub Releases 下载。

许可证

本项目采用 MIT License。

免责声明

本项目仅供学习、研究和个人设备使用,与腾讯、QQ、HeyTap、ColorOS 或 LSPosed 项目无隶属或认可关系。使用前请确认符合当地法律及相关服务条款。

Releases

10/3/2026, 11:51:31 AM

更新说明

  • 修复多条推送与撤回记录匹配错误的问题,避免恢复未撤回消息或混淆发送者;无法确认归属时不猜测恢复正文。
  • 冷启动恢复后显示“对方尝试撤回一条消息”,支持点击蓝色“一条消息”定位恢复气泡,重复启动保持提示与消息对应。
  • 修复延迟推送、通知重投及点击通知进入 QQ 时的时间与重复恢复问题,保留原撤回记录的位置。
  • 改善群聊发送者匹配、旧版 Android 兼容性和缓存通信稳定性,写入或解析失败时不阻断 QQ 启动与系统通知。

兼容性

  • QQ 9.2.60(versionCode 13010)
  • arm64-v8a
  • Android 8.0 及以上
  • 支持 libxposed Modern API 102 的 LSPosed

安装

  1. 下载并安装下方 APK。
  2. 在 LSPosed 中启用模块,并勾选 QQ 与 com.heytap.mcs。
  3. 重启这两个目标进程。

SHA-256

96a0642c122bb8bc48e11226a3eb8260e680f2292fb42272857a894652e93ae4

Assets

1

8/14/2026, 9:03:47 AM

版本说明

面向 QQ 9.2.60 的防撤回模块,并支持 ColorOS/HeyTap 冷启动文本恢复。

兼容性

  • QQ 9.2.60(versionCode 13010)
  • arm64-v8a
  • Android 8.0 及以上
  • 支持 libxposed Modern API 102 的 LSPosed

安装

  1. 下载并安装下方 APK。
  2. 在 LSPosed 中启用模块,并勾选 QQ 与 com.heytap.mcs。
  3. 重启两个目标进程或重启设备。

SHA-256

3536d847b0b32b70d2a3299ed08b703a1c6f4eb16386556f06c576b8c8ff0a1a

Assets

1