10 KiB
YukiHookCreater [class]
class YukiHookCreater(private val packageParam: PackageParam, private val hookClass: HookClass)
变更记录
v1.0
添加
功能描述
YukiHookAPI
核心 Hook 实现类。
instanceClass [field]
val instanceClass: Class<*>
变更记录
v1.0
添加
v1.0.2
修改
更名为 thisClass
instanceClass
功能描述
得到当前被 Hook 的
Class
。
!> 不推荐直接使用,万一得不到 Class
对象则会无法处理异常导致崩溃。
injectMember [method]
fun injectMember(tag: String, initiate: MemberHookCreater.() -> Unit): MemberHookCreater.Result
变更记录
v1.0
添加
功能描述
注入要 Hook 的方法、构造类。
功能示例
你可以注入任意方法与构造类,使用 injectMember
即可创建一个 Hook
对象。
示例如下
injectMember {
// Your code here.
}
你还可以自定义 tag
,方便你在调试的时候能够区分你的 Hook
对象。
示例如下
injectMember(tag = "KuriharaYuki") {
// Your code here.
}
MemberHookCreater [class]
inner class MemberHookCreater(var tag: String)
变更记录
v1.0
添加
功能描述
Hook 核心功能实现类,查找和处理需要 Hook 的方法、构造类。
member [field]
var member: Member?
变更记录
v1.0
添加
功能描述
手动指定要 Hook 的方法、构造类。
!> 不建议使用此方法设置目标需要 Hook 的 Member
对象,你可以使用 method
或 constructor
方法。
功能示例
你可以调用 instanceClass
来手动查询要 Hook 的方法。
示例如下
injectMember {
member = instanceClass.getMethod("test", StringType)
beforeHook {}
afterHook {}
}
allMethods [method]
fun allMethods(name: String)
变更记录
v1.0
添加
功能描述
查找并 Hook 当前
Class
中指定name
的全部方法。
功能示例
使用此方法可将当前类的全部同名方法进行批量 Hook。
!> 无法准确处理每个方法的 param
,建议使用 method
对每个方法单独 Hook。
示例如下
injectMember {
allMethods(name = "test")
beforeHook {}
afterHook {}
}
allConstructors [method]
fun allConstructors()
变更记录
v1.0
添加
功能描述
查找并 Hook 当前
Class
中的全部构造方法。
功能示例
使用此方法可将当前类的全部构造方法进行批量 Hook。
!> 无法准确处理每个构造方法的 param
,建议使用 constructor
对每个构造方法单独 Hook。
示例如下
injectMember {
allConstructors()
beforeHook {}
afterHook {}
}
method [method]
fun method(initiate: MethodFinder.() -> Unit): MethodFinder.Result
变更记录
v1.0
添加
功能描述
查找当前
Class
需要 Hook 的方法。
功能示例
你可参考 MethodFinder 查看详细用法。
示例如下
injectMember {
method {
name = "test"
param(StringType)
returnType = UnitType
}
beforeHook {}
afterHook {}
}
constructor [method]
fun constructor(initiate: ConstructorFinder.() -> Unit): ConstructorFinder.Result
变更记录
v1.0
添加
功能描述
查找当前
Class
需要 Hook 的构造方法。
功能示例
你可参考 ConstructorFinder 查看详细用法。
示例如下
injectMember {
constructor { param(StringType) }
beforeHook {}
afterHook {}
}
field [method]
fun HookParam.field(initiate: FieldFinder.() -> Unit): FieldFinder.Result
变更记录
v1.0
添加
功能描述
使用当前
hookClass
查找并得到Field
。
功能示例
你可参考 FieldFinder 查看详细用法。
示例如下
injectMember {
method {
name = "test"
param(StringType)
returnType = UnitType
}
afterHook {
field {
name = "isSweet"
type = BooleanType
}.get(instance).setTrue()
}
}
method [method]
fun HookParam.method(initiate: MethodFinder.() -> Unit): MethodFinder.Result
变更记录
v1.0.2
添加
功能描述
使用当前
hookClass
查找并得到方法。
constructor [method]
fun HookParam.constructor(initiate: ConstructorFinder.() -> Unit): ConstructorFinder.Result
变更记录
v1.0.2
添加
功能描述
使用当前
hookClass
查找并得到构造方法。
beforeHook [method]
fun beforeHook(initiate: HookParam.() -> Unit)
变更记录
v1.0
添加
功能描述
在方法执行完成前 Hook。
afterHook [method]
fun afterHook(initiate: HookParam.() -> Unit)
变更记录
v1.0
添加
功能描述
在方法执行完成后 Hook。
replaceAny [method]
fun replaceAny(initiate: HookParam.() -> Any?)
变更记录
v1.0
添加
功能描述
拦截并替换此方法内容,给出返回值。
replaceUnit [method]
fun replaceUnit(initiate: HookParam.() -> Unit)
变更记录
v1.0
添加
功能描述
拦截并替换此方法内容,没有返回值,可以称为
Void
。
replaceTo [method]
fun replaceTo(any: Any?)
变更记录
v1.0
添加
功能描述
拦截并替换方法返回值。
replaceToTrue [method]
fun replaceToTrue()
变更记录
v1.0
添加
功能描述
拦截并替换方法返回值为
true
。
!> 确保替换方法的返回对象为 Boolean
。
replaceToFalse [method]
fun replaceToFalse()
变更记录
v1.0
添加
功能描述
拦截并替换方法返回值为
false
。
!> 确保替换方法的返回对象为 Boolean
。
intercept [method]
fun intercept()
变更记录
v1.0
添加
功能描述
拦截此方法。
!> 这将会禁止此方法执行并返回 null
。
Result [class]
inner class Result
变更记录
v1.0
添加
功能描述
监听 Hook 结果实现类。
result [method]
fun result(initiate: Result.() -> Unit): Result
变更记录
v1.0
添加
v1.0.5
修改
修改为 failures
result
功能描述
创建监听失败事件方法体。
功能示例
你可以使用此方法为 Result
类创建 lambda
方法体。
示例如下
injectMember {
// Your code here.
}.result {
onHooked {}
ignoredConductFailure()
onHookingFailure {}
// ...
}
by [method]
fun by(initiate: () -> Boolean): Result
变更记录
v1.0.5
新增
功能描述
添加执行 Hook 需要满足的条件,不满足条件将直接停止 Hook。
onHooked [method]
fun onHooked(initiate: (Member) -> Unit): Result
变更记录
v1.0.70
新增
功能描述
监听
member
Hook 成功的回调方法。
在首次 Hook 成功后回调。
onNoSuchMemberFailure [method]
fun onNoSuchMemberFailure(initiate: (Throwable) -> Unit): Result
变更记录
v1.0.5
新增
功能描述
监听
member
不存在发生错误的回调方法。
onConductFailure [method]
fun onConductFailure(initiate: (HookParam, Throwable) -> Unit): Result
变更记录
v1.0
添加
功能描述
监听 Hook 进行过程中发生错误的回调方法。
onHookingFailure [method]
fun onHookingFailure(initiate: (Throwable) -> Unit): Result
变更记录
v1.0
添加
功能描述
监听 Hook 开始时发生的错误的回调方法。
onAllFailure [method]
fun onAllFailure(initiate: (Throwable) -> Unit): Result
变更记录
v1.0
添加
功能描述
监听全部 Hook 过程发生错误的回调方法。
ignoredNoSuchMemberFailure [method]
fun ignoredNoSuchMemberFailure(): Result
变更记录
v1.0.5
新增
功能描述
忽略
member
不存在发生的错误。
ignoredConductFailure [method]
fun ignoredConductFailure(): Result
变更记录
v1.0
添加
功能描述
忽略 Hook 进行过程中发生的错误。
ignoredHookingFailure [method]
fun ignoredHookingFailure(): Result
变更记录
v1.0
添加
功能描述
忽略 Hook 开始时发生的错误。
ignoredAllFailure [method]
fun ignoredAllFailure(): Result
变更记录
v1.0
添加
功能描述
忽略全部 Hook 过程发生的错误。
Result [class]
inner class Result
变更记录
v1.0.3
新增
功能描述
监听全部 Hook 结果实现类。
result [method]
fun result(initiate: Result.() -> Unit): Result
变更记录
v1.0.3
新增
v1.0.5
修改
修改为 failures
result
功能描述
创建监听事件方法体。
by [method]
fun by(initiate: () -> Boolean): Result
变更记录
v1.0.5
新增
功能描述
添加执行 Hook 需要满足的条件,不满足条件将直接停止 Hook。
onPrepareHook [method]
fun onPrepareHook(initiate: () -> Unit): Result
变更记录
v1.0.70
新增
功能描述
监听
hookClass
存在时准备开始 Hook 的操作。
onHookClassNotFoundFailure [method]
fun onHookClassNotFoundFailure(initiate: (Throwable) -> Unit): Result
变更记录
v1.0.3
新增
功能描述
监听
hookClass
找不到时发生错误的回调方法。
ignoredHookClassNotFoundFailure [method]
fun ignoredHookClassNotFoundFailure(): Result
变更记录
v1.0.3
新增
功能描述
忽略
hookClass
找不到时出现的错误。