android微信hook过滤检测,基于Xposed hook 实时监测微信消息
本文以微信版本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 实时监测微信消息相关推荐
- xposed hook java_[原创]Android Hook 系列教程(一) Xposed Hook 原理分析
章节内容 一. Android Hook 系列教程(一) Xposed Hook 原理分析 二. Android Hook 系列教程(二) 自己写APK实现Hook Java层函数 三. Androi ...
- ART模式下基于Xposed Hook开发脱壳工具
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/78092365 Dalvik模式下的Android加固技术已经很成熟了,Dalvik ...
- Android数据库加密与破解(Xposed hook SQLCipher 密码)
Xposed hook SQLCipher 密码 什么是SQLCipher HOOK加密的原理 介绍 原理 开始使用 下载安装模块 运行ADB命令 启动待解密的APP 在Windows下解密 下载wi ...
- java监听微信_一种基于java后台应用监控微信小程序的用户访问量的方法与流程...
本发明涉及java应用与微信小程序应用开发技术领域,具体涉及一种基于java后台应用监控微信小程序的用户访问量的方法. 背景技术: 微信小程序,简称小程序,是一种不需要下载安装即可使用的应用,它实现了 ...
- 微信小程序|基于小程序实现发送语音消息及转文字
此文主要在小程序内聊天的基础上实现语音发送及文字转换. 小程序 账号创建及工具准备 页面大体设计 实现录音功能 实现对话界面 语音转换文字 账号创建及应用申请 实现语音转文字 小程序 账号创建及工具准 ...
- c++读取yolov5模型进行目标检测(读取摄像头实时监测)
文章介绍 本文是篇基于yolov5模型的一个工程,主要是利用c++将yolov5模型进行调用并测试,从而实现目标检测任务 任务过程中主要重点有两个,第一 版本问题,第二配置问题 一,所需软件及版本 训 ...
- Android手机跑逆向,Android 逆向工程:基于Xposed Hook实现动态逆向分析
Xposed是一个非常神奇的框架,对于普通用户,Xposed框架可以发挥Android系统更高的使用效率,可以随便折腾,美化优化系统.但是用于开发者而言,Xposed可以用于 逆向工程,动态逆向分析A ...
- 基于xposed Hook框架实现个人免签支付方案(支付宝)
这个有点非常复杂的,关键点在于如何逆向微信支付宝云闪付这些App,找到核心函数钩子 反编译apk稍微提一下 方法:使用jadx反编译(推荐,简单方便) 首先下载jadx,下载地址:https://gi ...
- 基于dalvik模式下的Xposed Hook开发的某加固脱壳工具
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/77966109 这段时间好好的学习了一下Android加固相关的知识和流程也大致把A ...
最新文章
- 公路病害检测有了“智慧眼”,思谋AI“助力”广东省高速公路
- LINUX-NAT(二)
- 自编码AutoEncoder 及PyTorch 实现
- 工程制图 (装配图)
- Git一电脑配置config多个git用户 一个用于公司工作 一个用于个人学习
- python新建文件夹口令_Python 口令保管箱
- linux创建数据库并设置密码,CentOS 8安装MySQL教程并创建数据库并添加用户
- CentOS 7关闭firewalld启用iptables
- Springboot后台接收前端Date类型
- stl向量最大值_C ++ STL中向量的最小和最大元素
- linux mei swap,Linux swapoff命令
- 一位女孩对男孩的忠告(转贴)
- 软件包管理 之 RPM 基础 《RPM 的介绍和应用》
- MasterPage嵌套及MasterPage中的控件和变量的访问
- python爬取book118中的书籍
- DayDayUp:2020,再见了,不平凡的一年,让我懂得了珍惜,让我明白了越努力越幸运
- drupal主题开发_开发人员充满了Drupal的活力和活力
- WEBGUI中上一页(PgUp/Page Up)和下一页(PgDn/Page Down)键不起效
- 如何拦截各种软件的广告弹窗?
- Redis-敲黑板划重点
热门文章
- Docker操作命令汇总
- iOS性能新工具detox(一)
- 小孩分油问题 (附python代码)
- 简繁转换的VBS代码
- uniapp功能篇-1.二次封装luch-request(类似于axios)
- CCF201812 JAVA
- Plato Farm即将开启的IEO,我们有哪些期待?
- java邮件抄送_Java发送邮件遇到的常见需求汇总
- android手机系统怎么刷机包,怎么刷机安卓系统-安卓手机刷机包如何DIY让Android刷机包更好用...
- 迅雷7 V7.2.2.3178去广告优化增强典藏版(VIP6离线免等待)【仅9M】