2222package net.fosky.sticker.sticker_sword.hook.entity
2323
2424import com.highcapable.yukihookapi.hook.entity.YukiBaseHooker
25+ import com.highcapable.yukihookapi.hook.factory.allConstructors
26+ import com.highcapable.yukihookapi.hook.factory.allMethods
27+ import com.highcapable.yukihookapi.hook.factory.method
28+ import com.highcapable.yukihookapi.hook.log.YLog
2529import net.fosky.sticker.sticker_sword.const.PackageName
2630
2731object WechatHooker : YukiBaseHooker() {
@@ -33,9 +37,71 @@ object WechatHooker : YukiBaseHooker() {
3337 val SmileyInfo by lazyClassOrNull(" ${PackageName .WECHAT } .storage.emotion.SmileyInfo" )
3438 val SmileyPanelConfigInfo by lazyClassOrNull(" ${PackageName .WECHAT } .storage.emotion.SmileyPanelConfigInfo" )
3539 val MMAnimateView by lazyClassOrNull(" ${PackageName .WECHAT } .plugin.gif.MMAnimateView" )
36-
37-
40+ val EmojiPanelRecyclerView by lazyClassOrNull(" ${PackageName .WECHAT } .emoji.panel.EmojiPanelRecyclerView" )
41+ val EmojiPanelGroupView by lazyClassOrNull(" ${PackageName .WECHAT } .emoji.panel.EmojiPanelGroupView" )
42+ // 没摸明白怎么调用的
43+ // EmojiInfo 在微信启动时构造,看了一下是数据库读取的,混淆了类名和方法,不好调用
44+ // 后面没找到是哪个View调用了读取,先扔这里了
3845 override fun onHook () {
39- TODO (" Not yet implemented" )
46+ YLog .info(" Hooking Wechat" )
47+ // EmojiPanelGroupView?.allConstructors { _, constructor ->
48+ // constructor.hook().before {
49+ // var argString = ""
50+ // for (arg in args) {
51+ // argString += arg.toString() + "\n"
52+ // }
53+ // val traceElements = Thread.currentThread().stackTrace
54+ // var stackTraceString = ""
55+ // for (traceElement in traceElements) {
56+ // stackTraceString += traceElement.toString() + "\n"
57+ // }
58+ // YLog.debug("EmojiPanelGroupView.constructor\n$stackTraceString")
59+ // }
60+ // }
61+ // EmojiPanelRecyclerView?.allConstructors { _, constructor ->
62+ // constructor.hook().before {
63+ // var argString = ""
64+ // for (arg in args) {
65+ // argString += arg.toString() + "\n"
66+ // }
67+ // val traceElements = Thread.currentThread().stackTrace
68+ // var stackTraceString = ""
69+ // for (traceElement in traceElements) {
70+ // stackTraceString += traceElement.toString() + "\n"
71+ // }
72+ // YLog.debug("EmojiPanelRecyclerView.constructor\n$stackTraceString")
73+ // }
74+ // }
75+
76+ // EmojiInfo?.allConstructors { _, constructor ->
77+ // constructor.hook().before {
78+ // var argString = ""
79+ // for (arg in args) {
80+ // argString += arg.toString() + "\n"
81+ // }
82+ // // YLog.debug("EmojiInfo.constructor, args: $argString")
83+ // val traceElements = Thread.currentThread().stackTrace
84+ // var stackTraceString = ""
85+ // for (traceElement in traceElements) {
86+ // stackTraceString += traceElement.toString() + "\n"
87+ // }
88+ // YLog.debug("EmojiInfo.constructor\n$stackTraceString")
89+ // }
90+ // }
91+ // EmojiInfo?.allMethods { _, method ->
92+ // method.hook().before {
93+ // if (method.name == "F0") return@before
94+ // var argString = ""
95+ // for (arg in args) {
96+ // argString += arg.toString() + "\n"
97+ // }
98+ // val traceElements = Thread.currentThread().stackTrace
99+ // var stackTraceString = ""
100+ // for (traceElement in traceElements) {
101+ // stackTraceString += traceElement.toString() + "\n"
102+ // }
103+ // YLog.debug("EmojiInfo.method: ${method.name}\n${argString}\n$stackTraceString")
104+ // }
105+ // }
40106 }
41107}
0 commit comments