From 11aa064b90a23b66f389c26a5bf70cfeb8bfe20b Mon Sep 17 00:00:00 2001 From: Fankesyooni Date: Wed, 22 Dec 2021 00:36:02 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E7=9C=81=E7=94=B5(=E6=96=B0?= =?UTF-8?q?=E5=BB=BA=E6=96=87=E4=BB=B6=E5=A4=B9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fankes/tsbattery/hook/HookMain.kt | 51 +++++++++++-------- 1 file changed, 31 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/com/fankes/tsbattery/hook/HookMain.kt b/app/src/main/java/com/fankes/tsbattery/hook/HookMain.kt index a01c3cb..92f9083 100644 --- a/app/src/main/java/com/fankes/tsbattery/hook/HookMain.kt +++ b/app/src/main/java/com/fankes/tsbattery/hook/HookMain.kt @@ -86,7 +86,7 @@ class HookMain : IXposedHookLoadPackage { } /** - * 这个类 BaseChatPie 是控制聊天界面的 + * 这个类 QQ 的 BaseChatPie 是控制聊天界面的 * 里面有两个随机混淆的方法 ⬇️ * remainScreenOn、cancelRemainScreenOn * 这两个方法一个是挂起电源锁常驻亮屏 @@ -96,7 +96,7 @@ class HookMain : IXposedHookLoadPackage { * ⚠️ Hook 错了方法会造成闪退! * @param version QQ 版本 */ - private fun XC_LoadPackage.LoadPackageParam.hookBaseChatPie(version: String) { + private fun XC_LoadPackage.LoadPackageParam.hookQQBaseChatPie(version: String) { when (version) { "8.8.17" -> { replaceToNull(BASE_CHAT_PIE, "bd") @@ -139,6 +139,27 @@ class HookMain : IXposedHookLoadPackage { Log.e("TSBattery", content, e) } + /** Hook 系统电源锁 */ + private fun XC_LoadPackage.LoadPackageParam.hookSystemWakeLock() { + runWithoutError("wakeLock acquire()") { + XposedHelpers.findAndHookMethod( + "android.os.PowerManager\$WakeLock", + classLoader, + "acquire", + replaceToNull + ) + } + runWithoutError("hook wakeLock acquire(time)") { + XposedHelpers.findAndHookMethod( + "android.os.PowerManager\$WakeLock", + classLoader, + "acquire", + Long::class.java, + replaceToNull + ) + } + } + override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam?) { if (lpparam == null) return when (lpparam.packageName) { @@ -152,23 +173,7 @@ class HookMain : IXposedHookLoadPackage { ) /** 经过测试 QQ 与 TIM 这两个是一个模子里面的东西,所以他们的类名也基本上是一样的 */ "com.tencent.mobileqq", "com.tencent.tim" -> { - runWithoutError("wakeLock acquire()") { - XposedHelpers.findAndHookMethod( - "android.os.PowerManager\$WakeLock", - lpparam.classLoader, - "acquire", - replaceToNull - ) - } - runWithoutError("hook wakeLock acquire(time)") { - XposedHelpers.findAndHookMethod( - "android.os.PowerManager\$WakeLock", - lpparam.classLoader, - "acquire", - Long::class.java, - replaceToNull - ) - } + lpparam.hookSystemWakeLock() /** 增加通知栏文本显示守护状态 */ runWithoutError("Notification") { XposedHelpers.findAndHookMethod( @@ -254,7 +259,7 @@ class HookMain : IXposedHookLoadPackage { /** 这个地方我们只处理 QQ */ runWithoutError("BaseChatPie") { if (name == "com.tencent.mobileqq") - lpparam.hookBaseChatPie(version) + lpparam.hookQQBaseChatPie(version) } } }) @@ -396,6 +401,12 @@ class HookMain : IXposedHookLoadPackage { logD("hook Completed!") } } + /** 微信 */ + "com.tencent.mm" -> { + lpparam.hookSystemWakeLock() + // TODO 新建文件夹 + logD("それが機能するかどうかはわかりません") + } } } } \ No newline at end of file