mirror of
https://github.com/HighCapable/YukiHookAPI.git
synced 2025-09-06 10:45:47 +08:00
Fix ignored Error still output bug
This commit is contained in:
@@ -318,8 +318,7 @@ class YukiHookCreater(private val packageParam: PackageParam, private val hookCl
|
|||||||
(hookClass.throwable ?: Throwable("Failed Hooked Class [${hookClass.name}]")).also {
|
(hookClass.throwable ?: Throwable("Failed Hooked Class [${hookClass.name}]")).also {
|
||||||
onHookingFailureCallback?.invoke(it)
|
onHookingFailureCallback?.invoke(it)
|
||||||
onAllFailureCallback?.invoke(it)
|
onAllFailureCallback?.invoke(it)
|
||||||
if (onHookingFailureCallback == null && onAllFailureCallback == null)
|
if (isNotIgnoredHookingFailure) onHookFailureMsg(it)
|
||||||
onHookFailureMsg(it)
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -335,8 +334,7 @@ class YukiHookCreater(private val packageParam: PackageParam, private val hookCl
|
|||||||
} catch (e: Throwable) {
|
} catch (e: Throwable) {
|
||||||
onConductFailureCallback?.invoke(param, e)
|
onConductFailureCallback?.invoke(param, e)
|
||||||
onAllFailureCallback?.invoke(e)
|
onAllFailureCallback?.invoke(e)
|
||||||
if (onConductFailureCallback == null && onAllFailureCallback == null)
|
if (onConductFailureCallback == null && onAllFailureCallback == null) onHookFailureMsg(e)
|
||||||
onHookFailureMsg(e)
|
|
||||||
null
|
null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -355,8 +353,7 @@ class YukiHookCreater(private val packageParam: PackageParam, private val hookCl
|
|||||||
}.onFailure {
|
}.onFailure {
|
||||||
onConductFailureCallback?.invoke(param, it)
|
onConductFailureCallback?.invoke(param, it)
|
||||||
onAllFailureCallback?.invoke(it)
|
onAllFailureCallback?.invoke(it)
|
||||||
if (onConductFailureCallback == null && onAllFailureCallback == null)
|
if (onConductFailureCallback == null && onAllFailureCallback == null) onHookFailureMsg(it)
|
||||||
onHookFailureMsg(it)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -371,8 +368,7 @@ class YukiHookCreater(private val packageParam: PackageParam, private val hookCl
|
|||||||
}.onFailure {
|
}.onFailure {
|
||||||
onConductFailureCallback?.invoke(param, it)
|
onConductFailureCallback?.invoke(param, it)
|
||||||
onAllFailureCallback?.invoke(it)
|
onAllFailureCallback?.invoke(it)
|
||||||
if (onConductFailureCallback == null && onAllFailureCallback == null)
|
if (onConductFailureCallback == null && onAllFailureCallback == null) onHookFailureMsg(it)
|
||||||
onHookFailureMsg(it)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -387,13 +383,13 @@ class YukiHookCreater(private val packageParam: PackageParam, private val hookCl
|
|||||||
}.onFailure {
|
}.onFailure {
|
||||||
onHookingFailureCallback?.invoke(it)
|
onHookingFailureCallback?.invoke(it)
|
||||||
onAllFailureCallback?.invoke(it)
|
onAllFailureCallback?.invoke(it)
|
||||||
if (onHookingFailureCallback == null && onAllFailureCallback == null) onHookFailureMsg(it)
|
if (isNotIgnoredHookingFailure) onHookFailureMsg(it)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
onHookingFailureCallback?.invoke(Throwable())
|
onHookingFailureCallback?.invoke(Throwable())
|
||||||
onAllFailureCallback?.invoke(Throwable())
|
onAllFailureCallback?.invoke(Throwable())
|
||||||
if (onHookingFailureCallback == null && onAllFailureCallback == null)
|
if (isNotIgnoredHookingFailure)
|
||||||
loggerE(
|
loggerE(
|
||||||
msg = if (isHookMemberSetup)
|
msg = if (isHookMemberSetup)
|
||||||
"Hooked Member with a finding error in Class [$hookClass] [$tag]"
|
"Hooked Member with a finding error in Class [$hookClass] [$tag]"
|
||||||
@@ -414,8 +410,7 @@ class YukiHookCreater(private val packageParam: PackageParam, private val hookCl
|
|||||||
}
|
}
|
||||||
}.onFailure {
|
}.onFailure {
|
||||||
onAllFailureCallback?.invoke(it)
|
onAllFailureCallback?.invoke(it)
|
||||||
if (onHookingFailureCallback == null && onAllFailureCallback == null)
|
if (isNotIgnoredHookingFailure) loggerE(msg = "Hooked All Members with an error in Class [$hookClass] [$tag]")
|
||||||
loggerE(msg = "Hooked All Members with an error in Class [$hookClass] [$tag]")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -434,6 +429,12 @@ class YukiHookCreater(private val packageParam: PackageParam, private val hookCl
|
|||||||
private fun onHookFailureMsg(throwable: Throwable) =
|
private fun onHookFailureMsg(throwable: Throwable) =
|
||||||
loggerE(msg = "Try to hook ${hookClass.instance ?: hookClass.name}[$member] got an Exception [$tag]", e = throwable)
|
loggerE(msg = "Try to hook ${hookClass.instance ?: hookClass.name}[$member] got an Exception [$tag]", e = throwable)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 判断是否没有设置 Hook 过程中的任何异常拦截
|
||||||
|
* @return [Boolean] 没有设置任何异常拦截
|
||||||
|
*/
|
||||||
|
internal val isNotIgnoredHookingFailure get() = onHookingFailureCallback == null && onAllFailureCallback == null
|
||||||
|
|
||||||
override fun toString() = "${hookClass.name}$member$tag#YukiHookAPI"
|
override fun toString() = "${hookClass.name}$member$tag#YukiHookAPI"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -29,6 +29,7 @@
|
|||||||
|
|
||||||
package com.highcapable.yukihookapi.hook.core.finder
|
package com.highcapable.yukihookapi.hook.core.finder
|
||||||
|
|
||||||
|
import android.os.SystemClock
|
||||||
import com.highcapable.yukihookapi.annotation.DoNotUseMethod
|
import com.highcapable.yukihookapi.annotation.DoNotUseMethod
|
||||||
import com.highcapable.yukihookapi.hook.core.YukiHookCreater
|
import com.highcapable.yukihookapi.hook.core.YukiHookCreater
|
||||||
import com.highcapable.yukihookapi.hook.log.loggerE
|
import com.highcapable.yukihookapi.hook.log.loggerE
|
||||||
@@ -49,6 +50,9 @@ class ConstructorFinder(private val hookInstance: YukiHookCreater.MemberHookCrea
|
|||||||
/** [Constructor] 参数数组 */
|
/** [Constructor] 参数数组 */
|
||||||
private var params: Array<out Class<*>>? = null
|
private var params: Array<out Class<*>>? = null
|
||||||
|
|
||||||
|
/** 是否使用了 [RemedyPlan] */
|
||||||
|
private var isUsingRemedyPlan = false
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* [Constructor] 参数
|
* [Constructor] 参数
|
||||||
*
|
*
|
||||||
@@ -105,9 +109,15 @@ class ConstructorFinder(private val hookInstance: YukiHookCreater.MemberHookCrea
|
|||||||
* 发生错误时输出日志
|
* 发生错误时输出日志
|
||||||
* @param msg 消息日志
|
* @param msg 消息日志
|
||||||
* @param throwable 错误
|
* @param throwable 错误
|
||||||
|
* @param isAlwaysPrint 忽略条件每次都打印错误
|
||||||
*/
|
*/
|
||||||
private fun onFailureMsg(msg: String = "", throwable: Throwable? = null) =
|
private fun onFailureMsg(msg: String = "", throwable: Throwable? = null, isAlwaysPrint: Boolean = false) {
|
||||||
loggerE(msg = "NoSuchConstructor happend in [$hookClass] $msg [${hookInstance.tag}]", e = throwable)
|
Thread {
|
||||||
|
SystemClock.sleep(10)
|
||||||
|
if ((hookInstance.isNotIgnoredHookingFailure && !isUsingRemedyPlan) || isAlwaysPrint)
|
||||||
|
loggerE(msg = "NoSuchConstructor happend in [$hookClass] $msg [${hookInstance.tag}]", e = throwable)
|
||||||
|
}.start()
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* [Constructor] 重查找实现类
|
* [Constructor] 重查找实现类
|
||||||
@@ -152,13 +162,14 @@ class ConstructorFinder(private val hookInstance: YukiHookCreater.MemberHookCrea
|
|||||||
return@run
|
return@run
|
||||||
}.onFailure {
|
}.onFailure {
|
||||||
lastError = it
|
lastError = it
|
||||||
onFailureMsg(msg = "trying ${p + 1} times by RemedyPlan --> $it")
|
onFailureMsg(msg = "trying ${p + 1} times by RemedyPlan --> $it", isAlwaysPrint = true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!isFindSuccess) {
|
if (!isFindSuccess) {
|
||||||
onFailureMsg(
|
onFailureMsg(
|
||||||
msg = "trying ${remedyPlans.size} times and all failure by RemedyPlan",
|
msg = "trying ${remedyPlans.size} times and all failure by RemedyPlan",
|
||||||
throwable = lastError
|
throwable = lastError,
|
||||||
|
isAlwaysPrint = true
|
||||||
)
|
)
|
||||||
remedyPlans.clear()
|
remedyPlans.clear()
|
||||||
}
|
}
|
||||||
@@ -190,6 +201,7 @@ class ConstructorFinder(private val hookInstance: YukiHookCreater.MemberHookCrea
|
|||||||
* @return [Result] 可继续向下监听
|
* @return [Result] 可继续向下监听
|
||||||
*/
|
*/
|
||||||
fun remedys(initiate: RemedyPlan.() -> Unit): Result {
|
fun remedys(initiate: RemedyPlan.() -> Unit): Result {
|
||||||
|
isUsingRemedyPlan = true
|
||||||
if (isNoSuch) RemedyPlan().apply(initiate).build()
|
if (isNoSuch) RemedyPlan().apply(initiate).build()
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
@@ -29,6 +29,7 @@
|
|||||||
|
|
||||||
package com.highcapable.yukihookapi.hook.core.finder
|
package com.highcapable.yukihookapi.hook.core.finder
|
||||||
|
|
||||||
|
import android.os.SystemClock
|
||||||
import com.highcapable.yukihookapi.annotation.DoNotUseMethod
|
import com.highcapable.yukihookapi.annotation.DoNotUseMethod
|
||||||
import com.highcapable.yukihookapi.hook.core.YukiHookCreater
|
import com.highcapable.yukihookapi.hook.core.YukiHookCreater
|
||||||
import com.highcapable.yukihookapi.hook.log.loggerE
|
import com.highcapable.yukihookapi.hook.log.loggerE
|
||||||
@@ -93,7 +94,11 @@ class FieldFinder(private val hookInstance: YukiHookCreater.MemberHookCreater, p
|
|||||||
}
|
}
|
||||||
Result()
|
Result()
|
||||||
} catch (e: Throwable) {
|
} catch (e: Throwable) {
|
||||||
loggerE(msg = "NoSuchField happend in [$classSet] [${hookInstance.tag}]", e = e)
|
Thread {
|
||||||
|
SystemClock.sleep(10)
|
||||||
|
if (hookInstance.isNotIgnoredHookingFailure)
|
||||||
|
loggerE(msg = "NoSuchField happend in [$classSet] [${hookInstance.tag}]", e = e)
|
||||||
|
}.start()
|
||||||
Result(isNoSuch = true, e)
|
Result(isNoSuch = true, e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -29,6 +29,7 @@
|
|||||||
|
|
||||||
package com.highcapable.yukihookapi.hook.core.finder
|
package com.highcapable.yukihookapi.hook.core.finder
|
||||||
|
|
||||||
|
import android.os.SystemClock
|
||||||
import com.highcapable.yukihookapi.annotation.DoNotUseMethod
|
import com.highcapable.yukihookapi.annotation.DoNotUseMethod
|
||||||
import com.highcapable.yukihookapi.hook.core.YukiHookCreater
|
import com.highcapable.yukihookapi.hook.core.YukiHookCreater
|
||||||
import com.highcapable.yukihookapi.hook.log.loggerE
|
import com.highcapable.yukihookapi.hook.log.loggerE
|
||||||
@@ -49,6 +50,9 @@ class MethodFinder(private val hookInstance: YukiHookCreater.MemberHookCreater,
|
|||||||
/** [Method] 参数数组 */
|
/** [Method] 参数数组 */
|
||||||
private var params: Array<out Class<*>>? = null
|
private var params: Array<out Class<*>>? = null
|
||||||
|
|
||||||
|
/** 是否使用了 [RemedyPlan] */
|
||||||
|
private var isUsingRemedyPlan = false
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* [Method] 名称
|
* [Method] 名称
|
||||||
*
|
*
|
||||||
@@ -123,9 +127,15 @@ class MethodFinder(private val hookInstance: YukiHookCreater.MemberHookCreater,
|
|||||||
* 发生错误时输出日志
|
* 发生错误时输出日志
|
||||||
* @param msg 消息日志
|
* @param msg 消息日志
|
||||||
* @param throwable 错误
|
* @param throwable 错误
|
||||||
|
* @param isAlwaysPrint 忽略条件每次都打印错误
|
||||||
*/
|
*/
|
||||||
private fun onFailureMsg(msg: String = "", throwable: Throwable? = null) =
|
private fun onFailureMsg(msg: String = "", throwable: Throwable? = null, isAlwaysPrint: Boolean = false) {
|
||||||
loggerE(msg = "NoSuchMethod happend in [$hookClass] $msg [${hookInstance.tag}]", e = throwable)
|
Thread {
|
||||||
|
SystemClock.sleep(10)
|
||||||
|
if ((hookInstance.isNotIgnoredHookingFailure && !isUsingRemedyPlan) || isAlwaysPrint)
|
||||||
|
loggerE(msg = "NoSuchMethod happend in [$hookClass] $msg [${hookInstance.tag}]", e = throwable)
|
||||||
|
}.start()
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* [Method] 重查找实现类
|
* [Method] 重查找实现类
|
||||||
@@ -170,13 +180,14 @@ class MethodFinder(private val hookInstance: YukiHookCreater.MemberHookCreater,
|
|||||||
return@run
|
return@run
|
||||||
}.onFailure {
|
}.onFailure {
|
||||||
lastError = it
|
lastError = it
|
||||||
onFailureMsg(msg = "trying ${p + 1} times by RemedyPlan --> $it")
|
onFailureMsg(msg = "trying ${p + 1} times by RemedyPlan --> $it", isAlwaysPrint = true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!isFindSuccess) {
|
if (!isFindSuccess) {
|
||||||
onFailureMsg(
|
onFailureMsg(
|
||||||
msg = "trying ${remedyPlans.size} times and all failure by RemedyPlan",
|
msg = "trying ${remedyPlans.size} times and all failure by RemedyPlan",
|
||||||
throwable = lastError
|
throwable = lastError,
|
||||||
|
isAlwaysPrint = true
|
||||||
)
|
)
|
||||||
remedyPlans.clear()
|
remedyPlans.clear()
|
||||||
}
|
}
|
||||||
@@ -210,6 +221,7 @@ class MethodFinder(private val hookInstance: YukiHookCreater.MemberHookCreater,
|
|||||||
* @return [Result] 可继续向下监听
|
* @return [Result] 可继续向下监听
|
||||||
*/
|
*/
|
||||||
fun remedys(initiate: RemedyPlan.() -> Unit): Result {
|
fun remedys(initiate: RemedyPlan.() -> Unit): Result {
|
||||||
|
isUsingRemedyPlan = true
|
||||||
if (isNoSuch) RemedyPlan().apply(initiate).build()
|
if (isNoSuch) RemedyPlan().apply(initiate).build()
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user