一、前言
废话不多说,就是要实现自动拉黑好友的功能。(微信版本是6.6.5)
二、寻找hook入口
利用DDMS轨迹录制,迅速找出突破口。具体的操作流程,请看,已经讲得很详细了。
录制开始与结束,一定要找到合适的时机。否则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的轨迹录制,实现的方法也是很简单。
后面的文章我会慢慢加大难度,能够帮助大家快速入门和进阶!
加QQ群:536941874 群里会实时分享技巧。包括一些简单实用的源码
如果有不懂的地方可以加我的微信。有什么建议和功能需要也可以向我提出来,我写博客分享给大家!