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.

HookParam - class

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

args - field

val args: Array<Any?>

Change Records

\u5728 v1.0 \u6DFB\u52A0

Function Illustrate

\u83B7\u53D6\u5F53\u524D Hook \u5BF9\u8C61 member \u6216 constructor \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

firstArgs - field

Change Records

v1.0 first

v1.0.75 removed

\u8BF7\u4F7F\u7528 args(index = 0) \u6216 args().first()

lastArgs - field

Change Records

v1.0 first

v1.0.75 removed

\u8BF7\u4F7F\u7528 args().last()

instance - field

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

instanceClass - field

val instanceClass: Class<*>

Change Records

v1.0 first

Function Illustrate

\u83B7\u53D6\u5F53\u524D Hook \u5B9E\u4F8B\u7684\u7C7B\u5BF9\u8C61\u3002

member - field

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

method - field

val method: Method

Change Records

v1.0 first

Function Illustrate

\u83B7\u53D6\u5F53\u524D Hook \u5BF9\u8C61\u7684\u65B9\u6CD5\u3002

constructor - field

val constructor: Constructor

Change Records

v1.0 first

Function Illustrate

\u83B7\u53D6\u5F53\u524D Hook \u5BF9\u8C61\u7684\u6784\u9020\u65B9\u6CD5\u3002

result - field

var result: Any?

Change Records

v1.0 first

Function Illustrate

\u83B7\u53D6\u3001\u8BBE\u7F6E\u5F53\u524D Hook \u5BF9\u8C61\u7684 method \u6216 constructor \u7684\u8FD4\u56DE\u503C\u3002

dataExtra - field

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

hasThrowable - field

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

throwable - field

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

Throwable.throwToApp - i-ext-method

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

result - method

inline fun <reified T> result(): T?

Change Records

v1.0.75 added

Function Illustrate

\u83B7\u53D6\u5F53\u524D Hook \u5BF9\u8C61\u7684 method \u6216 constructor \u7684\u8FD4\u56DE\u503C T\u3002

firstArg - method

Change Records

v1.0.66 added

v1.0.75 removed

lastArgs - method

Change Records

v1.0.66 added

v1.0.75 removed

instance - method

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()

args - method

fun args(): ArgsIndexCondition

Change Records

v1.0.75 added

Function Illustrate

\u83B7\u53D6\u5F53\u524D Hook \u5BF9\u8C61\u7684 method \u6216 constructor \u7684\u53C2\u6570\u6570\u7EC4\u4E0B\u6807\u5B9E\u4F8B\u5316\u7C7B\u3002

args - method

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 \u6216 constructor \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()

callOriginal - method

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>()
    }
}

invokeOriginal - method

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")
    }
}

resultTrue - method

fun resultTrue()

Change Records

v1.0 first

Function Illustrate

\u8BBE\u7F6E\u5F53\u524D Hook \u5BF9\u8C61\u65B9\u6CD5\u7684 result \u8FD4\u56DE\u503C\u4E3A true\u3002

Pay Attention

\u8BF7\u786E\u4FDD result \u7C7B\u578B\u4E3A Boolean\u3002

resultFalse - method

fun resultFalse()

Change Records

v1.0 first

Function Illustrate

\u8BBE\u7F6E\u5F53\u524D Hook \u5BF9\u8C61\u65B9\u6CD5\u7684 result \u8FD4\u56DE\u503C\u4E3A false\u3002

Pay Attention

\u8BF7\u786E\u4FDD result \u7C7B\u578B\u4E3A Boolean\u3002

resultNull - method

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

ArgsIndexCondition - class

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

first - method

fun first(): ArgsModifyer

Change Records

v1.0.75 added

Function Illustrate

\u83B7\u53D6\u5F53\u524D Hook \u5BF9\u8C61\u7684 method \u6216 constructor \u7684\u53C2\u6570\u6570\u7EC4\u7B2C\u4E00\u4F4D\u3002

last - method

fun last(): ArgsModifyer

Change Records

v1.0.75 added

Function Illustrate

\u83B7\u53D6\u5F53\u524D Hook \u5BF9\u8C61\u7684 method \u6216 constructor \u7684\u53C2\u6570\u6570\u7EC4\u6700\u540E\u4E00\u4F4D\u3002

ArgsModifyer - class

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

cast - method

fun <T> cast(): T?

Change Records

v1.0.66 added

v1.0.68 modified

\u4FEE\u6539 of \u4E3A cast

Function Illustrate

\u5F97\u5230\u65B9\u6CD5\u53C2\u6570\u7684\u5B9E\u4F8B\u5BF9\u8C61 T\u3002

byte - method

fun byte(): Byte?

Change Records

v1.0.68 added

Function Illustrate

\u5F97\u5230\u65B9\u6CD5\u53C2\u6570\u7684\u5B9E\u4F8B\u5BF9\u8C61 Byte\u3002

int - method

fun int(): Int

Change Records

v1.0.66 added

v1.0.68 modified

\u4FEE\u6539 ofInt \u4E3A int

Function Illustrate

\u5F97\u5230\u65B9\u6CD5\u53C2\u6570\u7684\u5B9E\u4F8B\u5BF9\u8C61 Int\u3002

long - method

fun long(): Long

Change Records

v1.0.66 added

v1.0.68 modified

\u4FEE\u6539 ofLong \u4E3A long

Function Illustrate

\u5F97\u5230\u65B9\u6CD5\u53C2\u6570\u7684\u5B9E\u4F8B\u5BF9\u8C61 Long\u3002

short - method

fun short(): Short

Change Records

v1.0.66 added

v1.0.68 modified

\u4FEE\u6539 ofShort \u4E3A short

Function Illustrate

\u5F97\u5230\u65B9\u6CD5\u53C2\u6570\u7684\u5B9E\u4F8B\u5BF9\u8C61 Short\u3002

double - method

fun double(): Double

Change Records

v1.0.66 added

v1.0.68 modified

\u4FEE\u6539 ofDouble \u4E3A double

Function Illustrate

\u5F97\u5230\u65B9\u6CD5\u53C2\u6570\u7684\u5B9E\u4F8B\u5BF9\u8C61 Double\u3002

float - method

fun float(): Float

Change Records

v1.0.66 added

v1.0.68 modified

\u4FEE\u6539 ofFloat \u4E3A float

Function Illustrate

\u5F97\u5230\u65B9\u6CD5\u53C2\u6570\u7684\u5B9E\u4F8B\u5BF9\u8C61 Float\u3002

string - method

fun string(): String

Change Records

v1.0.66 added

v1.0.68 modified

\u4FEE\u6539 ofString \u4E3A string

Function Illustrate

\u5F97\u5230\u65B9\u6CD5\u53C2\u6570\u7684\u5B9E\u4F8B\u5BF9\u8C61 String\u3002

char - method

fun char(): Char

Change Records

v1.0.68 added

Function Illustrate

\u5F97\u5230\u65B9\u6CD5\u53C2\u6570\u7684\u5B9E\u4F8B\u5BF9\u8C61 Char\u3002

boolean - method

fun boolean(): Boolean

Change Records

v1.0.66 added

v1.0.68 modified

\u4FEE\u6539 ofBoolean \u4E3A boolean

Function Illustrate

\u5F97\u5230\u65B9\u6CD5\u53C2\u6570\u7684\u5B9E\u4F8B\u5BF9\u8C61 Boolean\u3002

any - method

fun any(): Any?

Change Records

v1.0.77 added

Function Illustrate

\u5F97\u5230\u65B9\u6CD5\u53C2\u6570\u7684\u5B9E\u4F8B\u5BF9\u8C61 Any\u3002

array - method

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

list - method

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

set - method

fun <T> set(any: T?)

Change Records

v1.0 first

Function Illustrate

\u8BBE\u7F6E\u65B9\u6CD5\u53C2\u6570\u7684\u5B9E\u4F8B\u5BF9\u8C61\u3002

setNull - method

fun setNull()

Change Records

v1.0 first

Function Illustrate

\u8BBE\u7F6E\u65B9\u6CD5\u53C2\u6570\u7684\u5B9E\u4F8B\u5BF9\u8C61\u4E3A null\u3002

setTrue - method

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

setFalse - method

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

`,356),p=[l];function c(t,r){return o(),e("div",null,p)}const i=s(n,[["render",c],["__file","HookParam.html.vue"]]);export{i as default};