Gh0u1L5 / WechatMagician

WechatMagician is a Xposed module written in Kotlin, that allows you to completely control your Wechat.
http://repo.xposed.info/module/com.gh0u1l5.wechatmagician
GNU General Public License v3.0
1.86k stars 450 forks source link

[BUG][Feature]新版微信7.0无法Hook SQLite数据库 #76

Open kn007 opened 5 years ago

kn007 commented 5 years ago

如题,当前的基本环境信息是

Xposed Logs:

01-13 23:39:49.489 I/Xposed  (10545): Wechat Magician: process = com.tencent.mm:tools, version = 2.8.0
01-13 23:39:49.557 I/Xposed  (10545): Wechat SpellBook: 13 plugins, 1 hookers.
01-13 23:39:54.585 E/Xposed  (10545): java.lang.reflect.InvocationTargetException
01-13 23:39:54.585 E/Xposed  (10545):   at java.lang.reflect.Method.invoke(Native Method)
01-13 23:39:54.585 E/Xposed  (10545):   at com.gh0u1l5.wechatmagician.spellbook.SpellBook$$special$$inlined$tryHook$1.invoke(SpellBook.kt:199)
01-13 23:39:54.585 E/Xposed  (10545):   at com.gh0u1l5.wechatmagician.spellbook.SpellBook$$special$$inlined$tryHook$1.invoke(SpellBook.kt:22)
01-13 23:39:54.585 E/Xposed  (10545):   at com.gh0u1l5.wechatmagician.spellbook.util.BasicUtil.tryVerbosely(BasicUtil.kt:8)
01-13 23:39:54.585 E/Xposed  (10545):   at com.gh0u1l5.wechatmagician.spellbook.SpellBook.registerOfficialHookers(SpellBook.kt:207)
01-13 23:39:54.585 E/Xposed  (10545):   at com.gh0u1l5.wechatmagician.spellbook.SpellBook.startup(SpellBook.kt:145)
01-13 23:39:54.585 E/Xposed  (10545):   at com.gh0u1l5.wechatmagician.backend.WechatHook.handleLoadWechat(WechatHook.kt:182)
01-13 23:39:54.585 E/Xposed  (10545):   at com.gh0u1l5.wechatmagician.backend.WechatHook.access$handleLoadWechat(WechatHook.kt:47)
01-13 23:39:54.585 E/Xposed  (10545):   at com.gh0u1l5.wechatmagician.backend.WechatHook$handleLoadPackage$1$$special$$inlined$hookAttachBaseContext$2.afterHookedMethod(WechatHook.kt:204)
01-13 23:39:54.585 E/Xposed  (10545):   at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:375)
01-13 23:39:54.585 E/Xposed  (10545):   at android.content.ContextWrapper.attachBaseContext(<Xposed>)
01-13 23:39:54.585 E/Xposed  (10545):   at com.tencent.tinker.loader.app.TinkerApplication.attachBaseContext(SourceFile:162)
01-13 23:39:54.585 E/Xposed  (10545):   at android.app.Application.attach(Application.java:218)
01-13 23:39:54.585 E/Xposed  (10545):   at android.app.Instrumentation.newApplication(Instrumentation.java:1106)
01-13 23:39:54.585 E/Xposed  (10545):   at android.app.Instrumentation.newApplication(Instrumentation.java:1090)
01-13 23:39:54.585 E/Xposed  (10545):   at android.app.LoadedApk.makeApplication(LoadedApk.java:993)
01-13 23:39:54.585 E/Xposed  (10545):   at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5997)
01-13 23:39:54.585 E/Xposed  (10545):   at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(Native Method)
01-13 23:39:54.585 E/Xposed  (10545):   at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:361)
01-13 23:39:54.585 E/Xposed  (10545):   at android.app.ActivityThread.handleBindApplication(<Xposed>)
01-13 23:39:54.585 E/Xposed  (10545):   at android.app.ActivityThread.-wrap1(Unknown Source:0)
01-13 23:39:54.585 E/Xposed  (10545):   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1756)
01-13 23:39:54.585 E/Xposed  (10545):   at android.os.Handler.dispatchMessage(Handler.java:105)
01-13 23:39:54.585 E/Xposed  (10545):   at android.os.Looper.loop(Looper.java:164)
01-13 23:39:54.585 E/Xposed  (10545):   at android.app.ActivityThread.main(ActivityThread.java:6798)
01-13 23:39:54.585 E/Xposed  (10545):   at java.lang.reflect.Method.invoke(Native Method)
01-13 23:39:54.585 E/Xposed  (10545):   at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
01-13 23:39:54.585 E/Xposed  (10545):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
01-13 23:39:54.585 E/Xposed  (10545):   at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:108)
01-13 23:39:54.585 E/Xposed  (10545): Caused by: java.lang.NoSuchMethodError: com.tencent.wcdb.database.SQLiteDatabase#rawQueryWithFactory(com.tencent.wcdb.database.SQLiteDatabase.CursorFactory,java.lang.String,java.lang.String[],java.lang.String,com.tencent.wcdb.support.CancellationSignal)#exact
01-13 23:39:54.585 E/Xposed  (10545):   at de.robv.android.xposed.XposedHelpers.findMethodExact(XposedHelpers.java:344)
01-13 23:39:54.585 E/Xposed  (10545):   at de.robv.android.xposed.XposedHelpers.findAndHookMethod(XposedHelpers.java:185)
01-13 23:39:54.585 E/Xposed  (10545):   at com.gh0u1l5.wechatmagician.spellbook.hookers.Database.hookEvents(Database.kt:39)
01-13 23:39:54.585 E/Xposed  (10545):   ... 29 more
01-13 23:39:54.882 E/Xposed  (10545): java.lang.reflect.InvocationTargetException
01-13 23:39:54.882 E/Xposed  (10545):   at java.lang.reflect.Method.invoke(Native Method)
01-13 23:39:54.882 E/Xposed  (10545):   at com.gh0u1l5.wechatmagician.spellbook.SpellBook$$special$$inlined$tryHook$1.invoke(SpellBook.kt:199)
01-13 23:39:54.882 E/Xposed  (10545):   at com.gh0u1l5.wechatmagician.spellbook.SpellBook$$special$$inlined$tryHook$1.invoke(SpellBook.kt:22)
01-13 23:39:54.882 E/Xposed  (10545):   at com.gh0u1l5.wechatmagician.spellbook.util.BasicUtil.tryVerbosely(BasicUtil.kt:8)
01-13 23:39:54.882 E/Xposed  (10545):   at com.gh0u1l5.wechatmagician.spellbook.SpellBook.registerOfficialHookers(SpellBook.kt:207)
01-13 23:39:54.882 E/Xposed  (10545):   at com.gh0u1l5.wechatmagician.spellbook.SpellBook.startup(SpellBook.kt:145)
01-13 23:39:54.882 E/Xposed  (10545):   at com.gh0u1l5.wechatmagician.backend.WechatHook.handleLoadWechat(WechatHook.kt:182)
01-13 23:39:54.882 E/Xposed  (10545):   at com.gh0u1l5.wechatmagician.backend.WechatHook.access$handleLoadWechat(WechatHook.kt:47)
01-13 23:39:54.882 E/Xposed  (10545):   at com.gh0u1l5.wechatmagician.backend.WechatHook$handleLoadPackage$1$$special$$inlined$hookAttachBaseContext$2.afterHookedMethod(WechatHook.kt:204)
01-13 23:39:54.882 E/Xposed  (10545):   at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:375)
01-13 23:39:54.882 E/Xposed  (10545):   at android.content.ContextWrapper.attachBaseContext(<Xposed>)
01-13 23:39:54.882 E/Xposed  (10545):   at com.tencent.tinker.loader.app.TinkerApplication.attachBaseContext(SourceFile:162)
01-13 23:39:54.882 E/Xposed  (10545):   at android.app.Application.attach(Application.java:218)
01-13 23:39:54.882 E/Xposed  (10545):   at android.app.Instrumentation.newApplication(Instrumentation.java:1106)
01-13 23:39:54.882 E/Xposed  (10545):   at android.app.Instrumentation.newApplication(Instrumentation.java:1090)
01-13 23:39:54.882 E/Xposed  (10545):   at android.app.LoadedApk.makeApplication(LoadedApk.java:993)
01-13 23:39:54.882 E/Xposed  (10545):   at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5997)
01-13 23:39:54.882 E/Xposed  (10545):   at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(Native Method)
01-13 23:39:54.882 E/Xposed  (10545):   at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:361)
01-13 23:39:54.882 E/Xposed  (10545):   at android.app.ActivityThread.handleBindApplication(<Xposed>)
01-13 23:39:54.882 E/Xposed  (10545):   at android.app.ActivityThread.-wrap1(Unknown Source:0)
01-13 23:39:54.882 E/Xposed  (10545):   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1756)
01-13 23:39:54.882 E/Xposed  (10545):   at android.os.Handler.dispatchMessage(Handler.java:105)
01-13 23:39:54.882 E/Xposed  (10545):   at android.os.Looper.loop(Looper.java:164)
01-13 23:39:54.882 E/Xposed  (10545):   at android.app.ActivityThread.main(ActivityThread.java:6798)
01-13 23:39:54.882 E/Xposed  (10545):   at java.lang.reflect.Method.invoke(Native Method)
01-13 23:39:54.882 E/Xposed  (10545):   at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
01-13 23:39:54.882 E/Xposed  (10545):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
01-13 23:39:54.882 E/Xposed  (10545):   at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:108)
01-13 23:39:54.882 E/Xposed  (10545): Caused by: java.lang.Error: Failed to evaluate AddressUI
01-13 23:39:54.882 E/Xposed  (10545):   at com.gh0u1l5.wechatmagician.spellbook.WechatGlobal$wxLazy$1.invoke(WechatGlobal.kt:68)
01-13 23:39:54.882 E/Xposed  (10545):   at kotlin.SynchronizedLazyImpl.getValue(Lazy.kt:131)
01-13 23:39:54.882 E/Xposed  (10545):   at com.gh0u1l5.wechatmagician.spellbook.mirror.mm.ui.contact.Classes.getAddressUI(Unknown Source:7)
01-13 23:39:54.882 E/Xposed  (10545):   at com.gh0u1l5.wechatmagician.spellbook.mirror.mm.ui.contact.Classes$ContactLongClickListener$2.invoke(Classes.kt:28)
01-13 23:39:54.882 E/Xposed  (10545):   at com.gh0u1l5.wechatmagician.spellbook.mirror.mm.ui.contact.Classes$ContactLongClickListener$2.invoke(Classes.kt:11)
01-13 23:39:54.882 E/Xposed  (10545):   at com.gh0u1l5.wechatmagician.spellbook.WechatGlobal$wxLazy$1.invoke(WechatGlobal.kt:68)
01-13 23:39:54.882 E/Xposed  (10545):   at kotlin.SynchronizedLazyImpl.getValue(Lazy.kt:131)
01-13 23:39:54.882 E/Xposed  (10545):   at com.gh0u1l5.wechatmagician.spellbook.mirror.mm.ui.contact.Classes.getContactLongClickListener(Unknown Source:7)
01-13 23:39:54.882 E/Xposed  (10545):   at com.gh0u1l5.wechatmagician.spellbook.hookers.MenuAppender.hijackPopupMenuForContacts(MenuAppender.kt:64)
01-13 23:39:54.882 E/Xposed  (10545):   ... 29 more

不知道兄弟是否会继续维护这一项目?

如果会,会考虑更新代码兼容到API 28(Pie)么?(没看过源码

目前Xposed更新进度缓慢,而且Root方式,大多用上了Magisk。现在国内已知有另外的Xposed实现方式,通过Magisk。

比如太极,类似Riru引导方式加载Epic;还有刚刚有另外一个xposed插件作者,基于Riru做的Magisk模块Edxposed,也能在Pie上启用Xposed。 前者貌似可以支持资源Hook,但目前最新Epic没有开源,而且据说有兼容问题(可能是故意为之);后者不支持Hook资源,而且Xposed模块可能需要设配Pie API。

不知兄弟有时间研究下么。。。

真想在Pie上使用到兄弟的插件,谢谢。

feitianw commented 5 years ago

顶,7用不了

kn007 commented 5 years ago

@feitianw 是,撤回就看不到。