本文以微信版本6.7.3为例进行分析有hook, 大部分做微信机器人的话,首先要实时抓取微信的消息,在这里展示三种方式对微信的消息进行hook:

1.基于UI层拉取加载进行监听

2.基于微信dao层调用的保存进行监听

3.基于数据库的插入保存进行监听 这三层各有各的特点请自行选用

package cn.robot;

import android.content.ContentValues;

import android.database.Cursor;

import de.robv.android.xposed.XC_MethodHook;

import de.robv.android.xposed.XposedHelpers;

import de.robv.android.xposed.callbacks.XC_LoadPackage;

import org.xmlpull.v1.XmlPullParserException;

import java.io.IOException;

import static de.robv.android.xposed.XposedBridge.log;

/**

* author: zhao .

* date: 2019/4/19

*/

public class WechatTest {

/**

* 注册接收消息的监听,处理UI触发流程

*/

public static void uiMsgListener(XC_LoadPackage.LoadPackageParam lpparam) {

log("uiMsgListener 开始");

Object[] arrayOfObject = new Object[2];

arrayOfObject[0] = Cursor.class;

arrayOfObject[1] = new XC_MethodHook() {

protected void afterHookedMethod(MethodHookParam methodHookParam) throws XmlPullParserException, IOException {

//0代表别人发的消息,1代表是自己发的消息

int field_isSend = ((Integer) XposedHelpers.getObjectField(methodHookParam.thisObject, "field_isSend")).intValue();

//消息类型:1是文本...参考wechat_manager里的消息类型定义

int field_type = ((Integer) XposedHelpers.getObjectField(methodHookParam.thisObject, "field_type")).intValue();

//微信服务器端的消息id

Object field_msgSvrId = XposedHelpers.getObjectField(methodHookParam.thisObject, "field_msgSvrId");

//消息内容

String field_content = (String) XposedHelpers.getObjectField(methodHookParam.thisObject, "field_content");

String field_talker = (String) XposedHelpers.getObjectField(methodHookParam.thisObject, "field_talker");

//消息创建时间

long field_createTime = ((Long) XposedHelpers.getObjectField(methodHookParam.thisObject, "field_createTime")).longValue();

log("uiMsgListener field_isSend:" + field_isSend + "--field_type:" + field_type + "--field_msgSvrId--" + field_msgSvrId + "--field_talker--" + field_talker + "--field_content--" + field_content);

}

};

XposedHelpers.findAndHookMethod("com.tencent.mm.storage.bi", lpparam.classLoader, "d", arrayOfObject);

log("uiMsgListener 结束");

}

/**

* 插入消息监听 处理微信 dao层

*/

public static void insertMsgDAOListener(XC_LoadPackage.LoadPackageParam lpparam) {

log("insertMsgDAOListener 开始");

Class> au = XposedHelpers.findClass("com.tencent.mm.storage.bi", lpparam.classLoader);

Object[] arrayOfObject = new Object[3];

arrayOfObject[0] = au;

arrayOfObject[1] = boolean.class;

arrayOfObject[2] = new XC_MethodHook() {

protected void afterHookedMethod(MethodHookParam paramAnonymousMethodHookParam) throws XmlPullParserException, IOException {

Object au = paramAnonymousMethodHookParam.args[0];

if (au == null) {

return;

}

int field_isSend = ((Integer) XposedHelpers.getObjectField(au, "field_isSend")).intValue();

int field_type = ((Integer) XposedHelpers.getObjectField(au, "field_type")).intValue();

Object field_msgSvrId = XposedHelpers.getObjectField(au, "field_msgSvrId");

String field_content = (String) XposedHelpers.getObjectField(au, "field_content");

String field_talker = (String) XposedHelpers.getObjectField(au, "field_talker");

log("insertMsgDAOListener field_isSend:" + field_isSend + "--field_type:" + field_type + "--field_msgSvrId--" + field_msgSvrId + "--field_talker--" + field_talker + "--field_content--" + field_content);

}

};

XposedHelpers.findAndHookMethod(XposedHelpers.findClass("com.tencent.mm.storage.bj", lpparam.classLoader), "b", arrayOfObject);

log("insertMsgDAOListener 结束");

}

/**

* 插入消息监听

*/

public static void insertMsgDBListener(XC_LoadPackage.LoadPackageParam lpparam) {

log("insertMsgDBListener 开始");

Object[] arrayOfObject = new Object[4];

arrayOfObject[0] = String.class;

arrayOfObject[1] = String.class;

arrayOfObject[2] = ContentValues.class;

arrayOfObject[3] = new XC_MethodHook() {

protected void afterHookedMethod(MethodHookParam paramAnonymousMethodHookParam) throws XmlPullParserException, IOException {

log("insertMsgDBListener 0"+paramAnonymousMethodHookParam.args[0]);

log("insertMsgDBListener 1"+paramAnonymousMethodHookParam.args[1]);

log("insertMsgDBListener 2"+paramAnonymousMethodHookParam.args[2]);

}

};

XposedHelpers.findAndHookMethod(XposedHelpers.findClass("com.tencent.wcdb.database.SQLiteDatabase", lpparam.classLoader), "insert", arrayOfObject);

log("insertMsgDBListener 结束");

}

}

android微信hook过滤检测,基于Xposed hook 实时监测微信消息相关推荐

  1. xposed hook java_[原创]Android Hook 系列教程(一) Xposed Hook 原理分析

    章节内容 一. Android Hook 系列教程(一) Xposed Hook 原理分析 二. Android Hook 系列教程(二) 自己写APK实现Hook Java层函数 三. Androi ...

  2. ART模式下基于Xposed Hook开发脱壳工具

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/78092365 Dalvik模式下的Android加固技术已经很成熟了,Dalvik ...

  3. Android数据库加密与破解(Xposed hook SQLCipher 密码)

    Xposed hook SQLCipher 密码 什么是SQLCipher HOOK加密的原理 介绍 原理 开始使用 下载安装模块 运行ADB命令 启动待解密的APP 在Windows下解密 下载wi ...

  4. java监听微信_一种基于java后台应用监控微信小程序的用户访问量的方法与流程...

    本发明涉及java应用与微信小程序应用开发技术领域,具体涉及一种基于java后台应用监控微信小程序的用户访问量的方法. 背景技术: 微信小程序,简称小程序,是一种不需要下载安装即可使用的应用,它实现了 ...

  5. 微信小程序|基于小程序实现发送语音消息及转文字

    此文主要在小程序内聊天的基础上实现语音发送及文字转换. 小程序 账号创建及工具准备 页面大体设计 实现录音功能 实现对话界面 语音转换文字 账号创建及应用申请 实现语音转文字 小程序 账号创建及工具准 ...

  6. c++读取yolov5模型进行目标检测(读取摄像头实时监测)

    文章介绍 本文是篇基于yolov5模型的一个工程,主要是利用c++将yolov5模型进行调用并测试,从而实现目标检测任务 任务过程中主要重点有两个,第一 版本问题,第二配置问题 一,所需软件及版本 训 ...

  7. Android手机跑逆向,Android 逆向工程:基于Xposed Hook实现动态逆向分析

    Xposed是一个非常神奇的框架,对于普通用户,Xposed框架可以发挥Android系统更高的使用效率,可以随便折腾,美化优化系统.但是用于开发者而言,Xposed可以用于 逆向工程,动态逆向分析A ...

  8. 基于xposed Hook框架实现个人免签支付方案(支付宝)

    这个有点非常复杂的,关键点在于如何逆向微信支付宝云闪付这些App,找到核心函数钩子 反编译apk稍微提一下 方法:使用jadx反编译(推荐,简单方便) 首先下载jadx,下载地址:https://gi ...

  9. 基于dalvik模式下的Xposed Hook开发的某加固脱壳工具

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/77966109 这段时间好好的学习了一下Android加固相关的知识和流程也大致把A ...

最新文章

  1. 公路病害检测有了“智慧眼”,思谋AI“助力”广东省高速公路
  2. LINUX-NAT(二)
  3. 自编码AutoEncoder 及PyTorch 实现
  4. 工程制图 (装配图)
  5. Git一电脑配置config多个git用户 一个用于公司工作 一个用于个人学习
  6. python新建文件夹口令_Python 口令保管箱
  7. linux创建数据库并设置密码,CentOS 8安装MySQL教程并创建数据库并添加用户
  8. CentOS 7关闭firewalld启用iptables
  9. Springboot后台接收前端Date类型
  10. stl向量最大值_C ++ STL中向量的最小和最大元素
  11. linux mei swap,Linux swapoff命令
  12. 一位女孩对男孩的忠告(转贴)
  13. 软件包管理 之 RPM 基础 《RPM 的介绍和应用》
  14. MasterPage嵌套及MasterPage中的控件和变量的访问
  15. python爬取book118中的书籍
  16. DayDayUp:2020,再见了,不平凡的一年,让我懂得了珍惜,让我明白了越努力越幸运
  17. drupal主题开发_开发人员充满了Drupal的活力和活力
  18. WEBGUI中上一页(PgUp/Page Up)和下一页(PgDn/Page Down)键不起效
  19. 如何拦截各种软件的广告弹窗?
  20. Redis-敲黑板划重点

热门文章

  1. Docker操作命令汇总
  2. iOS性能新工具detox(一)
  3. 小孩分油问题 (附python代码)
  4. 简繁转换的VBS代码
  5. uniapp功能篇-1.二次封装luch-request(类似于axios)
  6. CCF201812 JAVA
  7. Plato Farm即将开启的IEO,我们有哪些期待?
  8. java邮件抄送_Java发送邮件遇到的常见需求汇总
  9. android手机系统怎么刷机包,怎么刷机安卓系统-安卓手机刷机包如何DIY让Android刷机包更好用...
  10. 迅雷7 V7.2.2.3178去广告优化增强典藏版(VIP6离线免等待)【仅9M】