上一遍我们使用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代码也是不一样,但是只要能满足我们的想要的就好,不知道大家有没有其他思路呢?
本文暂时没有评论,来添加一个吧(●'◡'●)