热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

微信机器人_微信聊天消息记录拦截分析

前言近期要针对微信聊天记录进行分析和拦截,通过xposed工具制作成机器人回复系统。为此对整个的微信代码结构分析了一遍,找到了核心的消息记录类-sq

前言

近期要针对微信聊天记录进行分析和拦截,通过xposed工具制作成机器人回复系统。

为此对整个的微信代码结构分析了一遍,找到了核心的消息记录类-sql工具类。

分析过程


收到消息->写入数据库

针对整个拦截,首先从界面的ui入手 。

从对方消息发送 再到消息通知 再到界面显示红点 再到打开界面框读取消息。

整个的过程最终走向的就是数据存储。

也就是微信在第一时间收到消息并储存到了sql记录里面。

清晰的知道了:

收到消息==写入数据库

数据库操作类

按照经验 db 就是和数据库相关的包名和类。正好微信没有混淆该部分的包名路径,很容易的找到了一个路径

com.tencent.wcdb.database

明眼人一瞧 这不就是所谓的数据库操作类

SQLiteDatabase

管他呢,先把他的方法全部勾上测试

拦截数据库HOOK测试

我们用 XposedBridge.hookAllMethods()
com.tencent.wcdb.database.SQLiteDatabase的所有相关方法勾上去测试 在所有的方法里面打印

而且很明显有个方法名字叫插入数据 重点的关注他

public Operation onDatabaseInserted(@NotNull Object thisObject, @NotNull String table, @Nullable String nullColumnHack, @Nullable ContentValues initialValues, int conflictAlgorithm, @Nullable Long result) {if (table == "message") {LogXUtils.e("New Message:"+initialValues);}return null;}

启动hook 消息发送

果然所有的消息写入都经过了这个所谓的Inserted方法

编写机器人插件

基于之前的hook逻辑,我们把hook主体放到我们的微信群里面。

因为大多数情况下 我们都想做一个管理微信群的机器人。

本机处理or后台处理

如果单纯的把机器人相关的逻辑都插入到hook模块的本身 后期更新维护逻辑都比较麻烦 我建议是要搭个后台,转发群聊天并且返回机器人应答逻辑。

整体的逻辑就像这样:

微信群消息->机器人后台->应答返回消息->发送回微信群消息

后台搭建

碍于篇幅这里不细说,大家可以参考我的项目地址

消息回复

说的机器人 除了理解消息还有核心的部分就是消息回复。这部分将在下一部分里面说到。

项目地址

https://github.com/HuRuWo/WeChatSimpleBot


推荐阅读
author-avatar
guanchunlei
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有