我们使用Xposed批量获取好友列表信息,包括昵称、微信id等信息

上次我们使用Xposed模拟登录c语言编写通讯录程序,今天我们将使用Xposed批量获取好友列表信息,包括昵称、微信id等信息。

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

登录微信,切换到通讯录页面,打开Android Device Monitor工具,选择打开Hierarchy View工具,在Tree View窗口中查看窗口控件信息。当我们点击单个好友控件时,可以看到左侧的View Properties信息c语言编写通讯录程序,表示控件标签值为:com.tencent.mm.ui.contact.a$b

第 2 步:找到相关类

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

第 3 步:分析代码以查找 C15460b 的使用位置

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

第 4 步:让我们检查一下这个类 C40334f,它是做什么用的。

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

第 5 步:我们挂钩函数 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();
}

第 6 步:查看日志

我们通过Xposed Install,日志模块检查了日志,我们惊讶地发现我们的想法确实是正确的。

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

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论