本文以微信版本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. [源码和文档分享]基于FFMEPEG-MATLAB和C#-SQL SERVER构建的手机录音数据库及特征分析...
  2. Linux如何查看进程、杀死进程、查看端口等常用命令
  3. MySQL性能分析及explain的使用
  4. 帆软报表(finereport)图表钻取详细类别 当前页对话框展示
  5. 中大博士偷偷做了这件事,今天终于曝光了...
  6. 量子计算机网络指数时间,科普:量子计算机是这样计算的
  7. 剑指Offer之数组中重复的数字
  8. oracle 表查询(1)
  9. Facebook Messenger 被曝漏洞,可导致恶意软件获得持续访问权限(详细分析)
  10. 20210422-微信刷脸支付获取调用凭证authinfo的时候,提示 rawdata无效
  11. 使用jemeter进行接口压力测试
  12. 鸿蒙系统屏幕录制,鸿蒙系统游戏性能出色;三星折叠屏发布屏下摄像头
  13. mac系统如何设置定位服务器,使用[查找我的 Mac]定位和查找Mac电脑的具体位置
  14. 安装Aras Innovator12 sp9全过程
  15. Python3.6爬取前程无忧
  16. SAP中有些物料凭证不能用MBST冲销的原因分析
  17. WebApp开发入门
  18. ESD静电二极管端口信号防护应用产品型号——SM712
  19. 邮政平邮/小包多个单号的物流信息是怎么同时查询的
  20. 技能兴鲁试题--数据分析挖掘

热门文章

  1. cdn系统服务器搭建,cdn服务器搭建系统
  2. 精排模型-从MLP到行为序列:DIN、DIEN、MIMN、SIM、DSIN
  3. 从零构建FLINK整合Drools动态规则实时运营系统(项目案例)第2篇(业务介绍篇)
  4. 基于javaweb的医院管理系统(java+springboot+mybatis+vue+mysql)
  5. LinkedIn怎么创建领英主页?领英怎么拓展人脉?
  6. 国标:建筑基坑支护技术规程JGJ 120-2012
  7. sqlserver 存储过程 转oracle存储过程,SqlServer存储过程转换成Oracle储存过程语法常见问题...
  8. 大数据应用有哪些免费的应用软件
  9. 20221219今天的世界发生了什么
  10. 一款新颖实用的安防产品--丁盯智能门磁