From 6f82b6042789d4fa8b3f591c47c89d6dc2f9fd47 Mon Sep 17 00:00:00 2001 From: Fankesyooni Date: Thu, 3 Feb 2022 23:13:28 +0800 Subject: [PATCH] ... --- .../yukihookapi/hook/core/YukiHookCreater.kt | 8 +- .../yukihookapi/hook/log/LoggerFactory.kt | 92 +++++++++++++++++++ .../hook/xposed/YukiHookLoadPackage.kt | 6 +- .../hook/xposed/YukiHookModuleStatus.kt | 5 +- 4 files changed, 100 insertions(+), 11 deletions(-) create mode 100644 yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/log/LoggerFactory.kt diff --git a/yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/core/YukiHookCreater.kt b/yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/core/YukiHookCreater.kt index 7f98f7be..251c3d52 100644 --- a/yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/core/YukiHookCreater.kt +++ b/yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/core/YukiHookCreater.kt @@ -29,9 +29,8 @@ package com.highcapable.yukihookapi.hook.core -import android.util.Log -import com.highcapable.yukihookapi.YukiHookAPI import com.highcapable.yukihookapi.annotation.DoNotUseMethod +import com.highcapable.yukihookapi.hook.log.loggerE import com.highcapable.yukihookapi.hook.utils.ReflectionUtils import com.highcapable.yukihookapi.param.HookParam import com.highcapable.yukihookapi.param.PackageParam @@ -290,9 +289,8 @@ class YukiHookCreater(private val packageParam: PackageParam, val hookClass: Cla * Hook 失败但未设置 [onFailureCallback] 将默认输出失败信息 * @param throwable 异常信息 */ - private fun onHookFailure(throwable: Throwable) { - Log.e(YukiHookAPI.TAG, "Try to hook $hookClass[$member] got an Exception", throwable) - } + private fun onHookFailure(throwable: Throwable) = + loggerE(msg = "Try to hook $hookClass[$member] got an Exception", e = throwable) override fun toString() = "$member#YukiHook" diff --git a/yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/log/LoggerFactory.kt b/yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/log/LoggerFactory.kt new file mode 100644 index 00000000..6477610d --- /dev/null +++ b/yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/log/LoggerFactory.kt @@ -0,0 +1,92 @@ +/** + * MIT License + * + * Copyright (C) 2022 HighCapable + * + * This file is part of YukiHookAPI. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * This file is Created by fankes on 2022/2/3. + */ +@file:Suppress("unused") + +package com.highcapable.yukihookapi.hook.log + +import android.util.Log +import com.highcapable.yukihookapi.YukiHookAPI +import de.robv.android.xposed.XposedBridge + +/** + * 向控制台和 [XposedBridge] 打印日志 - D + * + * 你可以对此方法进行二次封装 + * + * [XposedBridge] 中的日志打印风格为 [[tag]]「类型」--> [msg] + * @param tag 日志打印的标签 - 建议和自己的模块名称设置成一样的 - 默认为 [YukiHookAPI.TAG] + * @param msg 日志打印的内容 + */ +fun loggerD(tag: String = YukiHookAPI.TAG, msg: String) { + Log.d(tag, msg) + XposedBridge.log("[$tag][D]--> $msg") +} + +/** + * 向控制台和 [XposedBridge] 打印日志 - I + * + * 你可以对此方法进行二次封装 + * + * [XposedBridge] 中的日志打印风格为 [[tag]]「类型」--> [msg] + * @param tag 日志打印的标签 - 建议和自己的模块名称设置成一样的 - 默认为 [YukiHookAPI.TAG] + * @param msg 日志打印的内容 + */ +fun loggerI(tag: String = YukiHookAPI.TAG, msg: String) { + Log.i(tag, msg) + XposedBridge.log("[$tag][I]--> $msg") +} + +/** + * 向控制台和 [XposedBridge] 打印日志 - W + * + * 你可以对此方法进行二次封装 + * + * [XposedBridge] 中的日志打印风格为 [[tag]]「类型」--> [msg] + * @param tag 日志打印的标签 - 建议和自己的模块名称设置成一样的 - 默认为 [YukiHookAPI.TAG] + * @param msg 日志打印的内容 + */ +fun loggerW(tag: String = YukiHookAPI.TAG, msg: String) { + Log.w(tag, msg) + XposedBridge.log("[$tag][W]--> $msg") +} + +/** + * 向控制台和 [XposedBridge] 打印日志 - E + * + * 你可以对此方法进行二次封装 + * + * [XposedBridge] 中的日志打印风格为 [[tag]]「类型」--> [msg] + * @param tag 日志打印的标签 - 建议和自己的模块名称设置成一样的 - 默认为 [YukiHookAPI.TAG] + * @param msg 日志打印的内容 + * @param e 可填入异常堆栈信息 - 将自动完整打印到控制台 + */ +fun loggerE(tag: String = YukiHookAPI.TAG, msg: String, e: Throwable? = null) { + Log.e(tag, msg, e) + XposedBridge.log("[$tag][E]--> $msg") + e?.also { XposedBridge.log(it) } +} \ No newline at end of file diff --git a/yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/xposed/YukiHookLoadPackage.kt b/yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/xposed/YukiHookLoadPackage.kt index cdc54b0f..bf134f2b 100644 --- a/yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/xposed/YukiHookLoadPackage.kt +++ b/yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/xposed/YukiHookLoadPackage.kt @@ -29,10 +29,10 @@ package com.highcapable.yukihookapi.hook.xposed -import android.util.Log import androidx.annotation.Keep import com.highcapable.yukihookapi.YukiHookAPI import com.highcapable.yukihookapi.annotation.xposed.InjectYukiHookWithXposed +import com.highcapable.yukihookapi.hook.log.loggerE import com.highcapable.yukihookapi.hook.proxy.YukiHookXposedInitProxy import com.highcapable.yukihookapi.hook.type.BooleanType import com.highcapable.yukihookapi.param.PackageParam @@ -58,7 +58,7 @@ class YukiHookLoadPackage : IXposedHookLoadPackage { .invoke(getDeclaredConstructor().apply { isAccessible = true }.newInstance()) } }.onFailure { - Log.e(YukiHookAPI.TAG, "Try to load ${hookEntryClassName()} Failed", it) + loggerE(msg = "Try to load ${hookEntryClassName()} Failed", e = it) } /** 装载 APP Hook 实体类 */ PackageParam(lpparam).apply { @@ -71,7 +71,7 @@ class YukiHookLoadPackage : IXposedHookLoadPackage { returnType = BooleanType } replaceToTrue() - }.onFailure { _, t -> Log.e(YukiHookAPI.TAG, "Try to Hook ModuleStatus Failed", t) } + }.onFailure { _, t -> loggerE(msg = "Try to Hook ModuleStatus Failed", e = t) } } } /** 设置装载回调 */ diff --git a/yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/xposed/YukiHookModuleStatus.kt b/yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/xposed/YukiHookModuleStatus.kt index 0210933e..510fe28b 100644 --- a/yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/xposed/YukiHookModuleStatus.kt +++ b/yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/xposed/YukiHookModuleStatus.kt @@ -27,9 +27,8 @@ */ package com.highcapable.yukihookapi.hook.xposed -import android.util.Log import androidx.annotation.Keep -import com.highcapable.yukihookapi.YukiHookAPI +import com.highcapable.yukihookapi.hook.log.loggerI import com.highcapable.yukihookapi.hook.xposed.YukiHookModuleStatus.isActive /** @@ -46,7 +45,7 @@ object YukiHookModuleStatus { */ @Keep fun isActive(): Boolean { - Log.d(YukiHookAPI.TAG, "hook this method got active status") + loggerI(msg = "This Module is not actived") return false } } \ No newline at end of file