mirror of
https://github.com/HighCapable/YukiHookAPI.git
synced 2025-09-04 09:45:19 +08:00
...
This commit is contained in:
@@ -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()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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 结果实现类
|
||||||
|
Reference in New Issue
Block a user