import{_ as s,o,c as e,a}from"./app.7900f22c.js";const n={},l=a(`
Notice
The English translation of this page has not been completed, you are welcome to contribute translations to us.
You can use the Chrome Translation Plugin to translate entire pages for reference.
class HookParam internal constructor(
private val creatorInstance: YukiMemberHookCreator,
private var paramId: String,
private var param: YukiHookCallback.Param?
)
Change Records
v1.0
first
v1.1.0
modified
\u79FB\u52A8 HookParamWrapper
\u5230 YukiHookCallback.Param
\u4FEE\u6B63\u62FC\u5199\u9519\u8BEF\u7684 creater \u547D\u540D\u5230 creator
v1.1.5
modified
\u65B0\u589E paramId
\u53C2\u6570
Function Illustrate
Hook \u65B9\u6CD5\u3001\u6784\u9020\u65B9\u6CD5\u7684\u76EE\u6807\u5BF9\u8C61\u5B9E\u73B0\u7C7B\u3002
val args: Array<Any?>
Change Records
\u5728 v1.0
\u6DFB\u52A0
Function Illustrate
\u83B7\u53D6\u5F53\u524D Hook \u5BF9\u8C61
member
\u6216constructor
\u7684\u53C2\u6570\u5BF9\u8C61\u6570\u7EC4\u3002
\u8FD9\u91CC\u7684\u6570\u7EC4\u6BCF\u9879\u7C7B\u578B\u9ED8\u8BA4\u4E3A Any
\uFF0C\u4F60\u53EF\u4EE5\u4F7F\u7528 args
\u65B9\u6CD5\u6765\u5B9E\u73B0 ArgsModifyer.cast
\u529F\u80FD\u3002
Change Records
v1.0
first
v1.0.75
removed
\u8BF7\u4F7F\u7528 args(index = 0)
\u6216 args().first()
Change Records
v1.0
first
v1.0.75
removed
\u8BF7\u4F7F\u7528 args().last()
val instance: Any
Change Records
v1.0
first
Function Illustrate
\u83B7\u53D6\u5F53\u524D Hook \u5B9E\u4F8B\u7684\u5BF9\u8C61\u3002
Pay Attention
\u5982\u679C\u4F60\u5F53\u524D Hook \u7684\u5BF9\u8C61\u662F\u4E00\u4E2A\u9759\u6001\uFF0C\u90A3\u4E48\u5B83\u5C06\u4E0D\u5B58\u5728\u5B9E\u4F8B\u7684\u5BF9\u8C61\u3002
val instanceClass: Class<*>
Change Records
v1.0
first
Function Illustrate
\u83B7\u53D6\u5F53\u524D Hook \u5B9E\u4F8B\u7684\u7C7B\u5BF9\u8C61\u3002
val member: Member
Change Records
v1.1.0
added
Function Illustrate
\u83B7\u53D6\u5F53\u524D Hook \u5BF9\u8C61\u7684
Member
\u3002
\u5728\u4E0D\u786E\u5B9A Member
\u7C7B\u578B\u4E3A Method
\u6216 Constructor
\u65F6\u53EF\u4EE5\u4F7F\u7528\u6B64\u65B9\u6CD5\u3002
val method: Method
Change Records
v1.0
first
Function Illustrate
\u83B7\u53D6\u5F53\u524D Hook \u5BF9\u8C61\u7684\u65B9\u6CD5\u3002
val constructor: Constructor
Change Records
v1.0
first
Function Illustrate
\u83B7\u53D6\u5F53\u524D Hook \u5BF9\u8C61\u7684\u6784\u9020\u65B9\u6CD5\u3002
var result: Any?
Change Records
v1.0
first
Function Illustrate
\u83B7\u53D6\u3001\u8BBE\u7F6E\u5F53\u524D Hook \u5BF9\u8C61\u7684
method
\u6216constructor
\u7684\u8FD4\u56DE\u503C\u3002
val dataExtra: Bundle
Change Records
v1.1.5
added
Function Illustrate
\u83B7\u53D6\u5F53\u524D\u56DE\u8C03\u65B9\u6CD5\u4F53\u8303\u56F4\u5185\u7684\u6570\u636E\u5B58\u50A8\u5B9E\u4F8B\u3002
val hasThrowable: Boolean
Change Records
v1.1.0
added
Function Illustrate
\u5224\u65AD\u662F\u5426\u5B58\u5728\u8BBE\u7F6E\u8FC7\u7684\u65B9\u6CD5\u8C03\u7528\u629B\u51FA\u5F02\u5E38\u3002
val throwable: Throwable?
Change Records
v1.1.0
added
Function Illustrate
\u83B7\u53D6\u8BBE\u7F6E\u7684\u65B9\u6CD5\u8C03\u7528\u629B\u51FA\u5F02\u5E38\u3002
fun Throwable.throwToApp()
Change Records
v1.1.0
added
Function Illustrate
\u5411 Hook APP \u629B\u51FA\u5F02\u5E38\u3002
\u4F7F\u7528 hasThrowable
\u5224\u65AD\u5F53\u524D\u662F\u5426\u5B58\u5728\u88AB\u629B\u51FA\u7684\u5F02\u5E38\u3002
\u4F7F\u7528 throwable
\u83B7\u53D6\u5F53\u524D\u8BBE\u7F6E\u7684\u65B9\u6CD5\u8C03\u7528\u629B\u51FA\u5F02\u5E38\u3002
\u4EC5\u4F1A\u5728\u56DE\u8C03\u65B9\u6CD5\u7684 MemberHookCreator.beforeHook
\u6216 MemberHookCreator.afterHook
\u4E2D\u751F\u6548\u3002
Pay Attention
\u8BBE\u7F6E\u540E\u4F1A\u540C\u65F6\u6267\u884C resultNull \u65B9\u6CD5\u5E76\u5C06\u5F02\u5E38\u629B\u51FA\u7ED9\u5F53\u524D Hook APP\u3002
Function Example
Hook \u8FC7\u7A0B\u4E2D\u7684\u5F02\u5E38\u4EC5\u4F1A\u4F5C\u7528\u4E8E (Xposed) \u5BBF\u4E3B\u73AF\u5883\uFF0C\u76EE\u6807 Hook APP \u4E0D\u4F1A\u53D7\u5230\u5F71\u54CD\u3002
\u82E5\u60F3\u5C06\u5F02\u5E38\u629B\u7ED9 Hook APP\uFF0C\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528\u5982\u4E0B\u65B9\u6CD5\u3002
The following example
injectMember {
method {
// ...
}
beforeHook {
RuntimeException("Test Exception").throwToApp()
}
}
Pay Attention
\u5411 Hook APP \u629B\u51FA\u5F02\u5E38\u4F1A\u5BF9\u5176\u66B4\u9732\u88AB Hook \u7684\u4E8B\u5B9E\uFF0C\u662F\u4E0D\u5B89\u5168\u7684\uFF0C\u5BB9\u6613\u88AB\u68C0\u6D4B\uFF0C\u8BF7\u6309\u5B9E\u9645\u573A\u666F\u5408\u7406\u4F7F\u7528\u3002
inline fun <reified T> result(): T?
Change Records
v1.0.75
added
Function Illustrate
\u83B7\u53D6\u5F53\u524D Hook \u5BF9\u8C61\u7684
method
\u6216constructor
\u7684\u8FD4\u56DE\u503CT
\u3002
Change Records
v1.0.66
added
v1.0.75
removed
Change Records
v1.0.66
added
v1.0.75
removed
inline fun <reified T> instance(): T
Change Records
v1.0
first
Function Illustrate
\u83B7\u53D6\u5F53\u524D Hook \u5B9E\u4F8B\u7684\u5BF9\u8C61
T
\u3002
Function Example
\u4F60\u53EF\u4EE5\u901A\u8FC7 instance
\u65B9\u6CD5\u8F7B\u677E\u4F7F\u7528\u6CDB\u578B cast
\u4E3A\u76EE\u6807\u5BF9\u8C61\u7684\u7C7B\u578B\u3002
The following example
instance<Activity>().finish()
fun args(): ArgsIndexCondition
Change Records
v1.0.75
added
Function Illustrate
\u83B7\u53D6\u5F53\u524D Hook \u5BF9\u8C61\u7684
method
\u6216constructor
\u7684\u53C2\u6570\u6570\u7EC4\u4E0B\u6807\u5B9E\u4F8B\u5316\u7C7B\u3002
fun args(index: Int): ArgsModifyer
Change Records
v1.0
first
v1.0.75
modified
\u9ED8\u8BA4\u503C index = 0
\u79FB\u52A8\u5230\u65B0\u7684\u4F7F\u7528\u65B9\u6CD5 args().first()
Function Illustrate
\u83B7\u53D6\u5F53\u524D Hook \u5BF9\u8C61\u7684
method
\u6216constructor
\u7684\u53C2\u6570\u5B9E\u4F8B\u5316\u5BF9\u8C61\u7C7B\u3002
Function Example
\u4F60\u53EF\u4EE5\u901A\u8FC7 args
\u65B9\u6CD5\u4FEE\u6539\u5F53\u524D Hook \u5B9E\u4F8B\u7684\u65B9\u6CD5\u3001\u6784\u9020\u65B9\u6CD5\u7684\u53C2\u6570\u5185\u5BB9\u3002
\u4F60\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528 set
\u65B9\u6CD5\u8BBE\u7F6E param
\u4E3A\u4F60\u7684\u76EE\u6807\u5B9E\u4F8B\uFF0C\u63A5\u53D7 Any
\u7C7B\u578B\u3002
Pay Attention
\u8BF7\u786E\u4FDD param \u7C7B\u578B\u4E3A\u4F60\u7684\u76EE\u6807\u5B9E\u4F8B\u7C7B\u578B\u3002
The following example
args(index = 0).set("modify the value")
\u4F60\u53EF\u4EE5\u8FD9\u6837\u76F4\u63A5\u8BBE\u7F6E\u7B2C\u4E00\u4F4D param
\u7684\u503C\u3002
The following example
args().first().set("modify the value")
\u4F60\u8FD8\u53EF\u4EE5\u76F4\u63A5\u8BBE\u7F6E\u6700\u540E\u4E00\u4F4D param
\u7684\u503C\u3002
The following example
args().last().set("modify the value")
\u4F60\u8FD8\u53EF\u4EE5\u4F7F\u7528 setNull
\u65B9\u6CD5\u8BBE\u7F6E param
\u4E3A\u7A7A\u3002
The following example
args(index = 1).setNull()
\u4F60\u8FD8\u53EF\u4EE5\u4F7F\u7528 setTrue
\u65B9\u6CD5\u8BBE\u7F6E param
\u4E3A true
\u3002
Pay Attention
\u8BF7\u786E\u4FDD param \u7C7B\u578B\u4E3A Boolean\u3002
The following example
args(index = 1).setTrue()
\u4F60\u8FD8\u53EF\u4EE5\u4F7F\u7528 setFalse
\u65B9\u6CD5\u8BBE\u7F6E param
\u4E3A false
\u3002
Pay Attention
\u8BF7\u786E\u4FDD param \u7C7B\u578B\u4E3A Boolean\u3002
The following example
args(index = 1).setFalse()
fun callOriginal(): Any?
fun <T> callOriginal(): T?
Change Records
v1.1.0
added
Function Illustrate
\u6267\u884C\u539F\u59CB
Member
\u3002
\u8C03\u7528\u81EA\u8EAB\u672A\u8FDB\u884C Hook \u7684\u539F\u59CB Member
\u5E76\u8C03\u7528\u539F\u59CB\u53C2\u6570\u6267\u884C\u3002
\u529F\u80FD\u5B9E\u4F8B
\u6B64\u65B9\u6CD5\u53EF\u4EE5 invoke
\u539F\u59CB\u672A\u7ECF Hook \u7684 Member
\u5BF9\u8C61\uFF0C\u53D6\u51B3\u4E8E\u539F\u59CB Member
\u7684\u53C2\u6570\u3002
\u8C03\u7528\u81EA\u8EAB\u539F\u59CB\u7684\u65B9\u6CD5\u4E0D\u4F1A\u518D\u7ECF\u8FC7\u5F53\u524D beforeHook
\u3001afterHook
\u4EE5\u53CA replaceUnit
\u3001replaceAny
\u3002
\u6BD4\u5982\u6211\u4EEC Hook \u7684\u8FD9\u4E2A\u65B9\u6CD5\u88AB\u8FD9\u6837\u8C03\u7528 test("test value")
\uFF0C\u4F7F\u7528\u6B64\u65B9\u6CD5\u4F1A\u8C03\u7528\u5176\u4E2D\u7684 "test value"
\u4F5C\u4E3A\u53C2\u6570\u3002
The following example
injectMember {
method {
name = "test"
param(StringClass)
returnType = StringClass
}
afterHook {
// <\u65B9\u68481> \u4E0D\u4F7F\u7528\u6CDB\u578B\uFF0C\u4E0D\u83B7\u53D6\u65B9\u6CD5\u6267\u884C\u7ED3\u679C\uFF0C\u8C03\u7528\u5C06\u4F7F\u7528\u539F\u65B9\u6CD5\u4F20\u5165\u7684 args \u81EA\u52A8\u4F20\u53C2
callOriginal()
// <\u65B9\u68482> \u4F7F\u7528\u6CDB\u578B\uFF0C\u5DF2\u77E5\u65B9\u6CD5\u6267\u884C\u7ED3\u679C\u53C2\u6570\u7C7B\u578B\u8FDB\u884C cast
// \u5047\u8BBE\u8FD4\u56DE\u503C\u4E3A String\uFF0C\u5931\u8D25\u4F1A\u8FD4\u56DE null\uFF0C\u8C03\u7528\u5C06\u4F7F\u7528\u539F\u65B9\u6CD5\u4F20\u5165\u7684 args \u81EA\u52A8\u4F20\u53C2
val value = callOriginal<String>()
}
}
fun invokeOriginal(vararg args: Any?): Any?
fun <T> invokeOriginal(vararg args: Any?): T?
Change Records
v1.0
first
v1.1.0
modified
\u4E0D\u518D\u9700\u8981\u4F7F\u7528 member.invokeOriginal
\u8FDB\u884C\u8C03\u7528
Function Illustrate
\u6267\u884C\u539F\u59CB
Member
\u3002
\u8C03\u7528\u81EA\u8EAB\u672A\u8FDB\u884C Hook \u7684\u539F\u59CB Member
\u5E76\u81EA\u5B9A\u4E49 args
\u6267\u884C\u3002
\u529F\u80FD\u5B9E\u4F8B
\u6B64\u65B9\u6CD5\u53EF\u4EE5 invoke
\u539F\u59CB\u672A\u7ECF Hook \u7684 Member
\u5BF9\u8C61\uFF0C\u53EF\u81EA\u5B9A\u4E49\u9700\u8981\u8C03\u7528\u7684\u53C2\u6570\u5185\u5BB9\u3002
\u8C03\u7528\u81EA\u8EAB\u539F\u59CB\u7684\u65B9\u6CD5\u4E0D\u4F1A\u518D\u7ECF\u8FC7\u5F53\u524D beforeHook
\u3001afterHook
\u4EE5\u53CA replaceUnit
\u3001replaceAny
\u3002
\u6BD4\u5982\u6211\u4EEC Hook \u7684\u8FD9\u4E2A\u65B9\u6CD5\u88AB\u8FD9\u6837\u8C03\u7528 test("test value")
\uFF0C\u4F7F\u7528\u6B64\u65B9\u6CD5\u53EF\u81EA\u5B9A\u4E49\u5176\u4E2D\u7684 args
\u4F5C\u4E3A\u53C2\u6570\u3002
The following example
injectMember {
method {
name = "test"
param(StringClass)
returnType = StringClass
}
afterHook {
// <\u65B9\u68481> \u4E0D\u4F7F\u7528\u6CDB\u578B\uFF0C\u4E0D\u83B7\u53D6\u65B9\u6CD5\u6267\u884C\u7ED3\u679C
invokeOriginal("test value")
// <\u65B9\u68482> \u4F7F\u7528\u6CDB\u578B\uFF0C\u5DF2\u77E5\u65B9\u6CD5\u6267\u884C\u7ED3\u679C\u53C2\u6570\u7C7B\u578B\u8FDB\u884C cast\uFF0C\u5047\u8BBE\u8FD4\u56DE\u503C\u4E3A String\uFF0C\u5931\u8D25\u4F1A\u8FD4\u56DE null
val value = invokeOriginal<String>("test value")
}
}
fun resultTrue()
Change Records
v1.0
first
Function Illustrate
\u8BBE\u7F6E\u5F53\u524D Hook \u5BF9\u8C61\u65B9\u6CD5\u7684
result
\u8FD4\u56DE\u503C\u4E3Atrue
\u3002
Pay Attention
\u8BF7\u786E\u4FDD result \u7C7B\u578B\u4E3A Boolean\u3002
fun resultFalse()
Change Records
v1.0
first
Function Illustrate
\u8BBE\u7F6E\u5F53\u524D Hook \u5BF9\u8C61\u65B9\u6CD5\u7684
result
\u8FD4\u56DE\u503C\u4E3Afalse
\u3002
Pay Attention
\u8BF7\u786E\u4FDD result \u7C7B\u578B\u4E3A Boolean\u3002
fun resultNull()
Change Records
v1.0
first
Function Illustrate
Notice
\u6B64\u65B9\u6CD5\u5C06\u5F3A\u5236\u8BBE\u7F6E Hook \u5BF9\u8C61\u65B9\u6CD5\u7684 result \u4E3A null\u3002
inner class ArgsIndexCondition internal constructor()
Change Records
v1.0.75
added
Function Illustrate
\u5BF9\u65B9\u6CD5\u53C2\u6570\u7684\u6570\u7EC4\u4E0B\u6807\u8FDB\u884C\u5B9E\u4F8B\u5316\u7C7B\u3002
fun first(): ArgsModifyer
Change Records
v1.0.75
added
Function Illustrate
\u83B7\u53D6\u5F53\u524D Hook \u5BF9\u8C61\u7684
method
\u6216constructor
\u7684\u53C2\u6570\u6570\u7EC4\u7B2C\u4E00\u4F4D\u3002
fun last(): ArgsModifyer
Change Records
v1.0.75
added
Function Illustrate
\u83B7\u53D6\u5F53\u524D Hook \u5BF9\u8C61\u7684
method
\u6216constructor
\u7684\u53C2\u6570\u6570\u7EC4\u6700\u540E\u4E00\u4F4D\u3002
inner class ArgsModifyer internal constructor(private val index: Int)
Change Records
v1.0
first
Function Illustrate
\u5BF9\u65B9\u6CD5\u53C2\u6570\u7684\u4FEE\u6539\u8FDB\u884C\u5B9E\u4F8B\u5316\u7C7B\u3002
fun <T> cast(): T?
Change Records
v1.0.66
added
v1.0.68
modified
\u4FEE\u6539 \u4E3A of
cast
Function Illustrate
\u5F97\u5230\u65B9\u6CD5\u53C2\u6570\u7684\u5B9E\u4F8B\u5BF9\u8C61
T
\u3002
fun byte(): Byte?
Change Records
v1.0.68
added
Function Illustrate
\u5F97\u5230\u65B9\u6CD5\u53C2\u6570\u7684\u5B9E\u4F8B\u5BF9\u8C61 Byte\u3002
fun int(): Int
Change Records
v1.0.66
added
v1.0.68
modified
\u4FEE\u6539 \u4E3A ofInt
int
Function Illustrate
\u5F97\u5230\u65B9\u6CD5\u53C2\u6570\u7684\u5B9E\u4F8B\u5BF9\u8C61 Int\u3002
fun long(): Long
Change Records
v1.0.66
added
v1.0.68
modified
\u4FEE\u6539 \u4E3A ofLong
long
Function Illustrate
\u5F97\u5230\u65B9\u6CD5\u53C2\u6570\u7684\u5B9E\u4F8B\u5BF9\u8C61 Long\u3002
fun short(): Short
Change Records
v1.0.66
added
v1.0.68
modified
\u4FEE\u6539 \u4E3A ofShort
short
Function Illustrate
\u5F97\u5230\u65B9\u6CD5\u53C2\u6570\u7684\u5B9E\u4F8B\u5BF9\u8C61 Short\u3002
fun double(): Double
Change Records
v1.0.66
added
v1.0.68
modified
\u4FEE\u6539 \u4E3A ofDouble
double
Function Illustrate
\u5F97\u5230\u65B9\u6CD5\u53C2\u6570\u7684\u5B9E\u4F8B\u5BF9\u8C61 Double\u3002
fun float(): Float
Change Records
v1.0.66
added
v1.0.68
modified
\u4FEE\u6539 \u4E3A ofFloat
float
Function Illustrate
\u5F97\u5230\u65B9\u6CD5\u53C2\u6570\u7684\u5B9E\u4F8B\u5BF9\u8C61 Float\u3002
fun string(): String
Change Records
v1.0.66
added
v1.0.68
modified
\u4FEE\u6539 \u4E3A ofString
string
Function Illustrate
\u5F97\u5230\u65B9\u6CD5\u53C2\u6570\u7684\u5B9E\u4F8B\u5BF9\u8C61 String\u3002
fun char(): Char
Change Records
v1.0.68
added
Function Illustrate
\u5F97\u5230\u65B9\u6CD5\u53C2\u6570\u7684\u5B9E\u4F8B\u5BF9\u8C61 Char\u3002
fun boolean(): Boolean
Change Records
v1.0.66
added
v1.0.68
modified
\u4FEE\u6539 \u4E3A ofBoolean
boolean
Function Illustrate
\u5F97\u5230\u65B9\u6CD5\u53C2\u6570\u7684\u5B9E\u4F8B\u5BF9\u8C61 Boolean\u3002
fun any(): Any?
Change Records
v1.0.77
added
Function Illustrate
\u5F97\u5230\u65B9\u6CD5\u53C2\u6570\u7684\u5B9E\u4F8B\u5BF9\u8C61 Any\u3002
inline fun <reified T> array(): Array<T>
Change Records
v1.0.68
added
Function Illustrate
\u5F97\u5230\u65B9\u6CD5\u53C2\u6570\u7684\u5B9E\u4F8B\u5BF9\u8C61 Array\u3002
inline fun <reified T> list(): List<T>
Change Records
v1.0.68
added
Function Illustrate
\u5F97\u5230\u65B9\u6CD5\u53C2\u6570\u7684\u5B9E\u4F8B\u5BF9\u8C61 List\u3002
fun <T> set(any: T?)
Change Records
v1.0
first
Function Illustrate
\u8BBE\u7F6E\u65B9\u6CD5\u53C2\u6570\u7684\u5B9E\u4F8B\u5BF9\u8C61\u3002
fun setNull()
Change Records
v1.0
first
Function Illustrate
\u8BBE\u7F6E\u65B9\u6CD5\u53C2\u6570\u7684\u5B9E\u4F8B\u5BF9\u8C61\u4E3A
null
\u3002
fun setTrue()
Change Records
v1.0
first
Function Illustrate
\u8BBE\u7F6E\u65B9\u6CD5\u53C2\u6570\u7684\u5B9E\u4F8B\u5BF9\u8C61\u4E3A
true
\u3002
Pay Attention
\u8BF7\u786E\u4FDD\u76EE\u6807\u5BF9\u8C61\u7684\u7C7B\u578B\u662F Boolean\u3002
fun setFalse()
Change Records
v1.0
first
Function Illustrate
\u8BBE\u7F6E\u65B9\u6CD5\u53C2\u6570\u7684\u5B9E\u4F8B\u5BF9\u8C61\u4E3A
false
\u3002
Pay Attention
\u8BF7\u786E\u4FDD\u76EE\u6807\u5BF9\u8C61\u7684\u7C7B\u578B\u662F Boolean\u3002