吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2726|回复: 5
收起左侧

[经验求助] 安卓微信防撤回提示hook修改无效

[复制链接]
conquerorfy 发表于 2025-3-5 21:12
25吾爱币
下面是frida的hook代码,我想修改撤回提示的内容,hook后显示修改成功!可是屏幕上显示的依旧没有“(已阻止)”相关字眼,有做过的大佬瞅瞅,这个问题很小,但是不解决就心痒痒的
[JavaScript] 纯文本查看 复制代码
  setTimeout(() => {
            let SQLiteDatabase = Java.use("com.tencent.wcdb.database.SQLiteDatabase");
            let ContentValues = Java.use("android.content.ContentValues");

            SQLiteDatabase.updateWithOnConflict.implementation = function (str, contentValues, str2, strArr, i15) {
                // 过滤目标表
                if (str === "message" || str === "rconversation") {
                    try {
                        // 处理content字段
                        if (contentValues.containsKey("content")) {
                            let content = contentValues.getAsString("content");
                            if (content && content.includes("撤回了一条消息") && !content.includes("(已阻止)")) {
                                let newContent = content + "(已阻止)";
                                contentValues.put("content", newContent);
                                console.log("[修改成功] content: " + contentValues.getAsString("content"));
                            }
                        }
                        // 处理digest字段(会话列表摘要)
                        if (contentValues.containsKey("digest")) { // 注意字段名是否正确,根据日志调整
                            let digest = contentValues.getAsString("digest");
                            if (digest && digest.includes("撤回了一条消息") && !digest.includes("(已阻止)")) {
                                let newDigest = digest + "(已阻止)";
                                contentValues.put("digest", newDigest);
                                console.log("[修改成功] digest: " + contentValues.getAsString("digest"));
                            }
                        }
                    } catch (e) {
                        console.error("处理contentValues时出错: " + e);
                    }
                }

                // 调用原方法并返回结果
                return this.updateWithOnConflict(str, contentValues, str2, strArr, i15);
            };
        }, 1000);

发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| conquerorfy 发表于 2025-3-6 16:10
来个大佬瞅瞅呗
apple00000 发表于 2025-5-8 11:15
BAIQWE 发表于 2025-11-23 21:04
liunianwen 发表于 2025-11-24 12:46
问题不在你的代码,在于安卓App的架构机制。
DB层Hook = 永久存储修改(重进生效)。
内存/业务层Hook = 实时UI修改(即时生效,但需要找混淆类)。

对于初学者,建议采用 “DB层拦截 update (return 0)” 的方式来实现防撤回,虽然当时UI可能还会变,但至少原消息的数据被你保存在手机里了,刷新一下就能看见原来的图/文。

坚持修改提示文字(且想即时生效)
如果你非要修改那个提示文字,且不想去逆向具体的混淆类(因为每个版本混淆名都不一样),只在DB层是很难做到即时UI同步的。你必须去Hook 构造那个提示文字的业务层方法,或者Hook XML解析层。
但如果你不想找混淆名,可以在Hook数据库的同时,尝试“脏”办法(不推荐,不稳定):在修改完 ContentValues 并写入数据库后,尝试触发一个UI刷新广播或重绘,但这非常复杂且容易Crash。

hwlhwl 发表于 2025-11-28 17:39

来个大佬瞅瞅呗
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-9-30 21:08

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表