一、前言
廢話不多說,就是要實現自動拉黑好友的功能。(微信版本是6.6.5)
二、尋找hook入口
利用DDMS軌跡錄製,迅速找出突破口。具體的操作流程,請看blog.csdn.net/Andrio/arti…,已經講得很詳細了。
錄製開始與結束,一定要找到合適的時機。否則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 群裡會實時分享技巧。包括一些簡單實用的原始碼
如果有不懂的地方可以加我的微信。有什麼建議和功能需要也可以向我提出來,我寫部落格分享給大家!