Gh0u1L5 / WechatSpellbook

Wechat Spellbook 是一个使用Kotlin编写的开源微信插件框架,底层需要 Xposed 或 VirtualXposed 等Hooking框架的支持,而顶层可以轻松对接Java、Kotlin、Scala等JVM系语言。让程序员能够在几分钟内编写出简单的微信插件,随意揉捏微信的内部逻辑。
MIT License
1.7k stars 444 forks source link

您好,有个疑问,只要实现了IDatabaseHook,“executeSql”一定会被绕过 #27

Closed CuteRem closed 5 years ago

CuteRem commented 5 years ago

Database中onExecuteHooker的"beforeHookedMethod"“notifyForBypassFlags”, 只要实现了IDatabaseHook,其中的“onDatabaseExecuting”的默认值是false, "notifyForBypassFlags"方法中“notifyForResults”得到的就是一个{false,……}的list, any方法执行得到的值就会是true, 那么微信数据库的“executeSql”方法就一定会被绕过,无法执行原生方法

我的测试是微信【设置-聊天-清空聊天记录】的操作,一定会被拦截无法成功执行

CuteRem commented 5 years ago

我觉得如果要根据返回值来判断的话,“notifyForBypassFlags”的第一行是不是应该改为 val shouldBypass = notifyForResults(event, action).any{it}