微信公众号抓取研究----使用xposed程序hook

前言:
最近在学习点安卓的知识,发现了Xposed的安卓程序,想着之前搞个微信公众号抓取的研究,所有的聊天记录都会保存在手机本地,每接收或者发送一条消息,都要通过程序代码写入到本地的数据库文件里,要想拦截微信的消息,微信公众号的数据,可以通过Hook的方法拿到。
本文仅用来学习研究!!

1.准备工具
  • 安卓模拟器(android 5)(推荐用雷电模拟器)
  • 安卓微信安装包
  • Xposed框架安装包
  • Jadx-gui(0.7版本,Apk反编译工具)
  • Android Studio(提前安装java依赖)
2.原理讲解
  • Jadx-gui
    jadx是个人比较喜欢的一款反编译利器,同时支持命令行和图形界面,能以最简便的方式完成apk的反编译操作,微信这种大软件,需要兼容的设备需要非常多,对各个安卓版本也要兼容,良心的是这个软件的反编译不用脱壳。
    Jadx链接地址: https://github.com/skylot/jadx
  • Hook
    Hook 技术又叫做钩子函数,在系统没有调用该函数之前,钩子程序就先捕获该消息,钩子函数先得到控制权,这时钩子函数既可以加工处理(改变)该函数的执行行为,还可以强制结束消息的传递。简单来说,就是把系统的程序拉出来变成我们自己执行代码片段。
      要实现钩子函数,有两个步骤:
      1. 利用系统内部提供的接口,通过实现该接口,然后注入进系统(特定场景下使用)
      2.动态代理(使用所有场景)
    我们写得xposed模块就能实现hook微信公众号消息的功能。
3.微信反编译分析
  • 通过Jadx工具反编译安卓微信获得微信源码,搜索数据库相关关键字。
    这个时候需要直觉,男人的直觉很可怕,发现搜索Database关键字时,很可疑,点击跟进去
    在这里插入图片描述
  • 发现搜索Database关键字时,很可疑,点击跟进去
    在这里插入图片描述- 根据导入路径搜索目录树
    在这里插入图片描述
  • 仔细研究这个数据库操作类,搜索数据库的"insert"方法
    在这里插入图片描述
  • 跟到这里能够看到很直观的sql语句拼接的过程,那么这个方法的参数应该是我们收到的消息的值,只要Hook这个方法,应该就可以拿到数据库写入之前的数据。
    在这里插入图片描述
4.Xposed环境安装和Hook Apk开发
  • 要想使用Xposed来Hook程序,首先需要在安卓环境中安装Xposed

Xposed Installer(xposed框架)
是一款可以在不修改APK的情况下影响程序运行(修改系统)的框架服务,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作。

  • 下载地址 Xposed安装器下载地址: https://pan.baidu.com/s/1dEToAvJ 密码:uiu8
  • 下载地址2: https://www.wandoujia.com/apps/1253603
    在这里插入图片描述
  • 重启之后就完成安装
    在这里插入图片描述
5.Hook Apk 安卓程序开发
  • 通过配置好安卓开发环境,新建一个标准的Xposed安卓程序,项目目录结构如下
    在这里插入图片描述
    -部分接口的代码如下
    在这里插入图片描述
  • 起个后台服务,Django或Flask,在Hook Apk核心代码中加入http请求,将拿到的数据发送到后台服务8080端口。
    在这里插入图片描述
6.数据的处理,和文章内容的解析

在这里插入图片描述

  • 详情页的链接如下:https://mp.weixin.qq.com/s?__biz=MzA5NTI5NDkxMg==&mid=2650351028&idx=1&sn=f0c97526300340e5e6d34c1efd923338&chksm=884c011bbf3b880d3c3c645e56443d6b5e12c4d737f85a51e1ddd23a4289986d918752b1c3e6&scene=27
7.自动化操作模拟器
  • 为了保证接受到消息的及时性,模拟器中的软件不能一直不动,使用雷电模拟器的操作录制在这里插入图片描述
  • 点击打开软件,进入到订阅号消息列表,返回到软件首页,退出到桌面。定时循环操作。
  • 有设备的可以用真机,接受消息更及时,不用反复的操作。
    在这里插入图片描述
8.总结

理论上来讲,这套采集的方案,风控还可以,只hook这个接口,封号的几率不大。最新版本的微信也可使用。
转载请标明出处和链接


评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值