
上次我们使用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代码也不一样,但是只要能满足我们想要的,不知道大家有没有其他思路?
请登录后发表评论
注册
社交帐号登录