编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

Xposed系列 - 获取微信通讯录列表

wxchong 2024-06-22 21:07:47 开源技术 24 ℃ 0 评论

上一遍我们使用Xposed进行模拟登录,今天我们来使用Xposed批量获取好友列表信息,包括包括昵称、微信id等信息。

第一步:先分析微信的布局

登录微信,并切换至通讯录页面,打开Android Device Monitor工具,并选择打开Hierarchy View工具,并且在Tree View窗口查看窗口控件信息,当我们点击至单个好友控件时,我们可以看到左边View Properties信息,说明这个控件tag值为:com.tencent.mm.ui.contact.a$b

第二步:定位相关类

通过Jadx-gui,反编译打开微信的app,并定位类com.tencent.mm.ui.contact.a

第三步:分析代码,查找C15460b在使用的地方

通过查询关键字,我们可以发现在类中有2个函数有使用到C15460b这个类。并且这个两个类都有使用到这个类:C40334f。

第四步:我们查看下这个类C40334f,具体是干嘛的。

我们定位至这个类,通过源代码我们发现这个类是一个实体,并且我们通过字段命名看,有可能这个类就包含了通讯录的所有字段信息。

第五步:我们Hook函数a、b并打印日志,验证我们的思路对不对。

try {
 findAndHookMethod("com.tencent.mm.ui.contact.a", loadPackageParam.classLoader, "a",
 loadPackageParam.classLoader.loadClass("com.tencent.mm.storage.f"),
 loadPackageParam.classLoader.loadClass("com.tencent.mm.ui.contact.a$b"),
 new XC_MethodHook() {
 @Override
 protected void afterHookedMethod(MethodHookParam param) throws Throwable {
 readAttributeValue(param.args[0]);
 }
 });
 findAndHookMethod("com.tencent.mm.ui.contact.a", loadPackageParam.classLoader, "b",
 loadPackageParam.classLoader.loadClass("com.tencent.mm.storage.f"),
 loadPackageParam.classLoader.loadClass("com.tencent.mm.ui.contact.a$b"),
 new XC_MethodHook() {
 @Override
 protected void afterHookedMethod(MethodHookParam param) throws Throwable {
 readAttributeValue(param.args[0]);
 }
 });
} catch (ClassNotFoundException e) {
 e.printStackTrace();
}

第六步:查看日志

我们通过Xposed Install,日志模块查看日志,我们惊奇的发现我们的思路确实没错。

获取通讯录大家分析思路不一样,hook代码也是不一样,但是只要能满足我们的想要的就好,不知道大家有没有其他思路呢?

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表