This commit is contained in:
2022-02-03 03:45:11 +08:00
parent c9cc80c351
commit fa5ef89e20
2 changed files with 16 additions and 2 deletions

View File

@@ -35,6 +35,7 @@ import com.highcapable.yukihookapi.annotation.xposed.InjectYukiHookWithXposed
import com.highcapable.yukihookapi.demo.InjectTest import com.highcapable.yukihookapi.demo.InjectTest
import com.highcapable.yukihookapi.demo.MainActivity import com.highcapable.yukihookapi.demo.MainActivity
import com.highcapable.yukihookapi.hook.factory.encase import com.highcapable.yukihookapi.hook.factory.encase
import com.highcapable.yukihookapi.hook.factory.findMethod
import com.highcapable.yukihookapi.hook.proxy.YukiHookInitializeProxy import com.highcapable.yukihookapi.hook.proxy.YukiHookInitializeProxy
import com.highcapable.yukihookapi.hook.type.ActivityClass import com.highcapable.yukihookapi.hook.type.ActivityClass
import com.highcapable.yukihookapi.hook.type.BundleClass import com.highcapable.yukihookapi.hook.type.BundleClass
@@ -88,6 +89,12 @@ class HookMain : YukiHookInitializeProxy {
}.show() }.show()
} }
} }
injectMethod {
specify = hookClass.findMethod(name = "onStart")
afterHook {
Toast.makeText(instance(), "手动 Hook", Toast.LENGTH_SHORT).show()
}
}
} }
} }
} }

View File

@@ -112,6 +112,13 @@ class YukiHookCreater(private val packageParam: PackageParam, val hookClass: Cla
/** 方法返回值 */ /** 方法返回值 */
var returnType: Class<*>? = null var returnType: Class<*>? = null
/**
* 手动指定方法
*
* 你可以调用 [hookClass] 来手动查询要 Hook 的方法
*/
var specify: Member? = null
/** /**
* 方法参数 * 方法参数
* @param param 参数数组 * @param param 参数数组
@@ -217,7 +224,7 @@ class YukiHookCreater(private val packageParam: PackageParam, val hookClass: Cla
* @throws NoSuchMethodError 如果找不到方法 * @throws NoSuchMethodError 如果找不到方法
*/ */
private val hookMember: Member by lazy { private val hookMember: Member by lazy {
when { specify ?: when {
name.isBlank() && !isConstructor -> error("Method name cannot be empty") name.isBlank() && !isConstructor -> error("Method name cannot be empty")
isConstructor -> isConstructor ->
if (params != null) if (params != null)
@@ -295,7 +302,7 @@ class YukiHookCreater(private val packageParam: PackageParam, val hookClass: Cla
Log.e(YukiHookAPI.TAG, "Try to hook $hookClass[$hookMember] got an Exception", throwable) Log.e(YukiHookAPI.TAG, "Try to hook $hookClass[$hookMember] got an Exception", throwable)
} }
override fun toString() = "$name$returnType$params$isConstructor$hookMember$hookClass#YukiHook" override fun toString() = "$name$returnType$params$isConstructor$hookMember$hookClass$specify#YukiHook"
/** /**
* 监听 Hook 结果实现类 * 监听 Hook 结果实现类