微信防撤回插件技术文档
【免费下载链接】wechat_no_revoke项目地址: https://gitcode.com/gh_mirrors/we/wechat_no_revoke
1. 功能概述
微信防撤回插件是一款基于Xposed框架的安卓应用,旨在拦截并保存微信中被撤回的消息。该插件能够实时监控微信消息系统,当检测到撤回操作时,自动保存原始消息内容并替换撤回提示,支持文字、图片等多种消息类型。
2. 技术架构
2.1 核心模块组成
WechatRevokeHook:消息拦截核心模块,负责Hook微信撤回方法WechatVersion:版本适配系统,提供不同微信版本的兼容性支持WechatDatabase:数据库操作模块,处理消息的存储与恢复MessageUtil:消息处理工具类,提供消息解析与重建功能
2.2 工作原理
插件通过Xposed框架注入微信进程,监控消息处理流程:
- 识别消息撤回系统调用
- 提取原始消息内容
- 保存消息到独立存储
- 修改撤回提示为原始内容
3. 环境准备
3.1 开发环境要求
- Android Studio 4.2 或更高版本
- Gradle 6.7 或更高版本
- Xposed框架或LSPosed管理器
- Android SDK 24 (Android 7.0) 或更高版本
3.2 源码获取
git clone https://gitcode.com/gh_mirrors/we/wechat_no_revoke cd wechat_no_revoke4. 编译与部署
4.1 编译APK
在项目根目录执行以下命令:
./gradlew assembleDebug编译产物将生成在app/build/outputs/apk/debug/目录下。
4.2 安装插件
⚠️ 确保设备已启用USB调试模式
adb install -r app/build/outputs/apk/debug/app-debug.apk4.3 启用模块
- 打开Xposed/LSPosed管理器
- 在模块列表中勾选微信防撤回插件
- 重启设备使模块生效
5. 核心功能实现
5.1 消息拦截机制
通过Hook微信消息处理方法实现撤回拦截,主要流程包括:
- 识别撤回消息类型
- 提取消息ID和原始内容
- 重建消息内容替换撤回提示
5.2 版本适配策略
WechatVersion模块通过以下方式实现多版本兼容:
- 自动检测微信版本号
- 提供版本特定的Hook点信息
- 维护版本特征数据库
5.3 数据持久化方案
WechatDatabase模块实现消息的安全存储:
- 监控微信数据库操作
- 拦截消息删除指令
- 建立独立的消息存档系统
6. 配置与优化
6.1 调整核心参数
通过修改res/values/strings.xml文件配置插件行为:
<!-- 自动保存撤回消息 --> <string name="pref_key_auto_save">auto_save_revoked</string> <string name="pref_default_auto_save">true</string> <!-- 显示通知提醒 --> <string name="pref_key_notification">show_notification</string> <string name="pref_default_notification">true</string>6.2 性能优化建议
禁用通知功能减少内存占用:
<string name="pref_default_notification">false</string>启用消息加密保护隐私:
<string name="pref_key_encrypt">encrypt_messages</string> <string name="pref_default_encrypt">true</string>旧版本微信兼容模式:
<string name="pref_key_compatibility">compat_mode</string> <string name="pref_default_compatibility">false</string>
7. 故障排除
7.1 模块未激活
- 确认Xposed框架已正确安装并激活
- 检查插件是否在Xposed管理器中启用
- 验证微信版本是否在支持列表内
7.2 撤回消息拦截失败
- 尝试清除微信数据后重启
- 确认插件版本与微信版本匹配
- 检查是否存在其他防撤回模块冲突
7.3 查看运行日志
通过ADB命令查看插件运行日志:
adb logcat | grep "WechatRevokeHook"8. 扩展与定制
8.1 支持新微信版本
修改WechatVersion.kt添加版本支持:
fun getVersionHookInfo(version: String): VersionInfo { return when { version.startsWith("8.0") -> VersionInfo("com.tencent.mm.plugin.chat.ui.ChatUI", "onRevokeMsg") version.startsWith("8.1") -> VersionInfo("com.tencent.mm.ui.chatting.ChattingUI", "a") version.startsWith("8.2") -> VersionInfo("com.tencent.mm.ui.chatting.ChattingUI", "b") else -> defaultVersionInfo } }8.2 自定义备份路径
修改WechatDatabase.kt配置消息备份位置:
fun setBackupPath(path: String) { backupDir = File(Environment.getExternalStorageDirectory(), "wechat_backup") if (!backupDir.exists()) { backupDir.mkdirs() } }9. 许可证信息
本项目采用MIT开源许可证,所有代码可自由修改与分发。建议定期同步最新源码以获取版本适配更新,确保在微信版本迭代中保持防护效果。
【免费下载链接】wechat_no_revoke项目地址: https://gitcode.com/gh_mirrors/we/wechat_no_revoke
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考