影月 发表于 2018-8-24 16:49

Xposed快速入门例子(一)----- 拉黑好友

本帖最后由 影月 于 2018-8-27 08:29 编辑

一、前言
废话不多说,就是要实现自动拉黑好友的功能。(微信版本是6.6.5)
二、寻找hook入口
利用DDMS轨迹录制,迅速找出突破口。具体的操作流程,请看https://blog.csdn.net/Andrio/article/details/80853157,已经讲得很详细了。
录制开始与结束,一定要找到合适的时机。否则trace到的方法会很多。
比如:
我们要在这个界面点开始录制,点了确定之后,要马上结束录制。

然后我们得到了一些方法。再通过click事件过滤,一层一层地跟下去。找到 com.tencent.mm.y.s类中的h方法就是拉黑的方法。
三、反编译微信apk,分析微信源码

这个是我们找到的h方法。参数是要传一个x对象。所以如果我们要用Xposed调个方法的话,得先构造一个x对象。
通过这个方法里的代码分析,里面只用到了这个x对象的field_username属性。
所以我们构造对象的时候只需要对这个对象加上这一个属性应该就可以了。
这个属性就是要拉黑的人的wxid。成不成功,得先试试看。
四、Xposed调找到的方法
话不多说,直接上代码   /**
   * 拉黑
   * */
fun setBlack(username: String){
      val clazz = XposedHelpers.findClass("com.tencent.mm.storage.x",
      WechatPackage.loader)
      //构造对象
      val obj = XposedHelpers.newInstance(clazz, "")
      //设置属性
      XposedHelpers.callMethod(obj, "setUsername", username)

      val clazz2 = XposedHelpers.findClass("com.tencent.mm.y.s",
      WechatPackage.loader)
      //调方法
      XposedHelpers.callStaticMethod(clazz2, "h", obj)
    }

五、测试
测试没有问题!拉黑的功能就这样简单地完成了! 具体的实现效果就不展示了,因为没有调这个方法的时机。
等下一篇写到关于跟踪聊天记录的消息,通过对方发的消息,再进行拉黑,这样时机有了,再把效果展示出来。
六、小结
核心技术就是DDMS的轨迹录制,实现的方法也是很简单。
后面的文章我会慢慢加大难度,能够帮助大家快速入门和进阶!

ozinne 发表于 2018-8-24 17:20

期待期待期待

余小二 发表于 2018-8-24 17:19

第一位啊,支持!

xuewei520 发表于 2018-8-24 17:19

这个字体和背景怎么改的

影月 发表于 2018-8-24 17:23

xuewei520 发表于 2018-8-24 17:19
这个字体和背景怎么改的

从我的Blog复制过来就是这样了。。

青鸾火凤 发表于 2018-8-24 17:52

这个没多大用处吧

影月 发表于 2018-8-24 17:58

青鸾火凤 发表于 2018-8-24 17:52
这个没多大用处吧

明天再发点有用的

bolipapadu 发表于 2018-8-24 19:21

讲得很简单明了,学到了

wnhkss 发表于 2018-8-24 20:28

学到了,可以的

924410377 发表于 2018-8-24 21:26

最喜欢技术文章了,顶顶
页: [1] 2 3 4 5
查看完整版本: Xposed快速入门例子(一)----- 拉黑好友