利用Xposed框架Hook微信初探

前言:

最近拿到一个需求,要通过微信去爬去公众号的文章。

最开始使用的方法是用Accessibility去模拟点击,没想到才用了一个礼拜就WX爸爸给查封了。然后又动起了拿Xpose下手的想法.   (基于微信6.5.7 基于微信6.5.7 基于微信6.5.7) 

首先是从ID入手,通过AndroidStudio自带的 Android Device Monitor查看到你需要关注的ID。Tools--Android--AndroidDeviceMonitor 将手机到达想要显示的位置然后点击这里,就得到了我们要的ID


利用Xposed框架Hook微信初探_第1张图片


利用Xposed框架Hook微信初探_第2张图片
利用Xposed框架Hook微信初探_第3张图片

我们得到了一个 com.tencent.mm:id/afx的ID,这个就是我们得到文章的最终线索了


我们利用apktool反编译微信以后,得到res/values/public.xml文件。这个文件其实就是我们Android开发中特别重要的"R.java"的替身。

检索这个关键字"afx",找到了type=id,name=afx ,id=0x7f10064a的关联项,

记住这里的type一定得是id的那个。

然后我们将APK改名成 ***.zip,并解压缩 得到所有的.dex文件

dex是Android平台上(Dalvik虚拟机)的可执行文件, 相当于Windows平台中的exe文件, 每个Apk安装包中都有dex文件, 里面包含了该app的所有源码, 通过反编译工具可以获取到相应的java源码。



检索JAVA源码的16进制 -------没有发现相关连的资源,

我们将16进制的数值转化成10进制为2131756618,

然后利用JD-GUI 检索这个十进制的数值为 在R.class中找到了这个数值:

public static final int cbY = 2131756618;

//然后在JD-GUI中搜索R.h.cbY

解锁出来8个与这个id有关的疑似adapter的类

如法炮制检索 这几个类中 getView 方法内部的Inflate方法

一一排除后将Adapter锁定为  

com.tencent.mm.ui.conversation.a 这个类,它是一个adapter,

我们发现给这个控件提供数据的类是com.tencent.mm.storage.ad,

方法名为

这个方法会在这个Adapter调用然后我们在Xpose中锁定这个方法


利用Xposed框架Hook微信初探_第4张图片

这里特别图示的注释,不能使用Class.forname()来得到Class,会报ClassNotFound异常


利用Xposed框架Hook微信初探_第5张图片

将field_content导出就得到我们需要的文章啦,以后采集文章,只需要把微信号停在订阅号那里,等候微信推送过来就可以啦

你可能感兴趣的:(利用Xposed框架Hook微信初探)