import{_ as s,o,c as a,a as e}from"./app.99fcdd51.js";const n={},l=e(`

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.

PackageParam - class

open class PackageParam internal constructor(internal var wrapper: PackageParamWrapper?)

Change Records

v1.0 first

Function Illustrate

\u88C5\u8F7D Hook \u7684\u76EE\u6807 APP \u5165\u53E3\u5BF9\u8C61\u5B9E\u73B0\u7C7B\u3002

appClassLoader - field

val appClassLoader\uFF1AClassLoader

Change Records

v1.0 first

Function Illustrate

\u83B7\u53D6\u5F53\u524D Hook APP \u7684 ClassLoader\u3002

appInfo - field

val appInfo: ApplicationInfo

Change Records

v1.0 first

Function Illustrate

\u83B7\u53D6\u5F53\u524D Hook APP \u7684 ApplicationInfo\u3002

appUserId - field

val appUserId: Int

Change Records

v1.1.0 added

Function Illustrate

\u83B7\u53D6\u5F53\u524D Hook APP \u7684\u7528\u6237 ID\u3002

\u673A\u4E3B\u4E3A 0\uFF0C\u5E94\u7528\u53CC\u5F00 (\u5206\u8EAB) \u6216\u5DE5\u4F5C\u8D44\u6599\u56E0\u7CFB\u7EDF\u73AF\u5883\u4E0D\u540C ID \u4E5F\u5404\u4E0D\u76F8\u540C\u3002

appContext - field

val appContext: Application?

Change Records

v1.0.72 added

v1.1.0 modified

\u52A0\u5165\u53EF\u7A7A\u7C7B\u578B (\u7A7A\u5B89\u5168)

Function Illustrate

\u83B7\u53D6\u5F53\u524D Hook APP \u7684 Application\u3002

Pay Attention

\u9996\u6B21\u88C5\u8F7D\u53EF\u80FD\u662F\u7A7A\u7684\uFF0C\u8BF7\u5EF6\u8FDF\u4E00\u6BB5\u65F6\u95F4\u518D\u83B7\u53D6\u6216\u4F7F\u7528 onAppLifecycle \u76D1\u542C\u6765\u5B8C\u6210\u3002

appResources - field

val appResources\uFF1AResources?

Change Records

v1.0.80 added

v1.1.0 modified

\u52A0\u5165\u53EF\u7A7A\u7C7B\u578B (\u7A7A\u5B89\u5168)

Function Illustrate

\u83B7\u53D6\u5F53\u524D Hook APP \u7684 Resources\u3002

Pay Attention

\u4F60\u53EA\u80FD\u5728 HookResources.hook \u65B9\u6CD5\u4F53\u5185\u6216 appContext \u88C5\u8F7D\u5B8C\u6BD5\u65F6\u8FDB\u884C\u8C03\u7528\u3002

systemContext - field

val systemContext: Context

Change Records

v1.1.0 added

Function Illustrate

\u83B7\u53D6\u5F53\u524D\u7CFB\u7EDF\u6846\u67B6\u7684 Context\u3002

processName - field

val processName: String

Change Records

v1.0 first

Function Illustrate

\u83B7\u53D6\u5F53\u524D Hook APP \u7684\u8FDB\u7A0B\u540D\u79F0\u3002

packageName - field

val packageName: String

Change Records

v1.0 first

Function Illustrate

\u83B7\u53D6\u5F53\u524D Hook APP \u7684\u5305\u540D\u3002

isFirstApplication - field

val isFirstApplication: Boolean

Change Records

v1.0 first

Function Illustrate

\u83B7\u53D6\u5F53\u524D Hook APP \u662F\u5426\u4E3A\u7B2C\u4E00\u4E2A Application\u3002

mainProcessName - field

val mainProcessName: String

Change Records

v1.0.70 added

Function Illustrate

\u83B7\u53D6\u5F53\u524D Hook APP \u7684\u4E3B\u8FDB\u7A0B\u540D\u79F0\u3002

\u5176\u5BF9\u5E94\u7684\u5C31\u662F packageName\u3002

moduleAppFilePath - field

val moduleAppFilePath: String

Change Records

v1.0.80 added

Function Illustrate

\u83B7\u53D6\u5F53\u524D Xposed \u6A21\u5757\u81EA\u8EAB APK \u6587\u4EF6\u8DEF\u5F84\u3002

Pay Attention

\u4F5C\u4E3A Hook API \u88C5\u8F7D\u65F6\u65E0\u6CD5\u4F7F\u7528\uFF0C\u4F1A\u83B7\u53D6\u5230\u7A7A\u5B57\u7B26\u4E32\u3002

moduleAppResources - field

val moduleAppResources: YukiModuleResources

Change Records

v1.0.80 added

Function Illustrate

\u83B7\u53D6\u5F53\u524D Xposed \u6A21\u5757\u81EA\u8EAB Resources\u3002

Pay Attention

\u4F5C\u4E3A Hook API \u6216\u4E0D\u652F\u6301\u7684 Hook Framework \u88C5\u8F7D\u65F6\u65E0\u6CD5\u4F7F\u7528\uFF0C\u4F1A\u629B\u51FA\u5F02\u5E38\u3002

prefs - field

val prefs: YukiHookModulePrefs

Change Records

v1.0 first

Function Illustrate

\u83B7\u5F97\u5F53\u524D\u4F7F\u7528\u7684\u5B58\u53D6\u6570\u636E\u5BF9\u8C61\u7F13\u5B58\u5B9E\u4F8B\u3002

Pay Attention

\u4F5C\u4E3A Hook API \u88C5\u8F7D\u65F6\u65E0\u6CD5\u4F7F\u7528\uFF0C\u4F1A\u629B\u51FA\u5F02\u5E38\u3002

prefs - method

fun prefs(name: String): YukiHookModulePrefs

Change Records

v1.0 first

v1.0.80 modified

\u5C06\u65B9\u6CD5\u4F53\u8FDB\u884C inline

Function Illustrate

\u83B7\u5F97\u5F53\u524D\u4F7F\u7528\u7684\u5B58\u53D6\u6570\u636E\u5BF9\u8C61\u7F13\u5B58\u5B9E\u4F8B\u3002

\u4F60\u53EF\u4EE5\u901A\u8FC7 name \u6765\u81EA\u5B9A\u4E49 Sp \u5B58\u50A8\u7684\u540D\u79F0\u3002

Pay Attention

\u4F5C\u4E3A Hook API \u88C5\u8F7D\u65F6\u65E0\u6CD5\u4F7F\u7528\uFF0C\u4F1A\u629B\u51FA\u5F02\u5E38\u3002

dataChannel - field

val dataChannel: YukiHookDataChannel.NameSpace

Change Records

v1.0.88 added

Function Illustrate

\u83B7\u5F97\u5F53\u524D\u4F7F\u7528\u7684\u6570\u636E\u901A\u8BAF\u6865\u547D\u540D\u7A7A\u95F4\u5BF9\u8C61\u3002

Pay Attention

\u4F5C\u4E3A Hook API \u88C5\u8F7D\u65F6\u65E0\u6CD5\u4F7F\u7528\uFF0C\u4F1A\u629B\u51FA\u5F02\u5E38\u3002

resources - method

fun resources(): HookResources

Change Records

v1.0.80 added

Function Illustrate

\u83B7\u5F97\u5F53\u524D Hook APP \u7684 YukiResources \u5BF9\u8C61\u3002

\u8BF7\u8C03\u7528 HookResources.hook \u65B9\u6CD5\u5F00\u59CB Hook\u3002

refreshModuleAppResources - method

fun refreshModuleAppResources()

Change Records

v1.0.87 added

Function Illustrate

\u5237\u65B0\u5F53\u524D Xposed \u6A21\u5757\u81EA\u8EAB Resources\u3002

onAppLifecycle - method

inline fun onAppLifecycle(initiate: AppLifecycle.() -> Unit)

Change Records

v1.0.88 added

Function Illustrate

\u76D1\u542C\u5F53\u524D Hook APP \u751F\u547D\u5468\u671F\u88C5\u8F7D\u4E8B\u4EF6\u3002

Notice

\u5728 loadZygote \u4E2D\u4E0D\u4F1A\u88AB\u88C5\u8F7D\uFF0C\u4EC5\u4F1A\u5728 loadSystem\u3001loadApp \u4E2D\u88C5\u8F7D\u3002

\u4F5C\u4E3A Hook API \u88C5\u8F7D\u65F6\u8BF7\u4F7F\u7528\u539F\u751F\u7684 Application \u5B9E\u73B0\u751F\u547D\u5468\u671F\u76D1\u542C\u3002

loadApp - method

inline fun loadApp(name: String, initiate: PackageParam.() -> Unit)
fun loadApp(name: String, hooker: YukiBaseHooker)
inline fun loadApp(vararg name: String, initiate: PackageParam.() -> Unit)
fun loadApp(name: String, vararg hooker: YukiBaseHooker)

Change Records

v1.0 first

v1.0.80 modified

\u5C06\u65B9\u6CD5\u4F53\u8FDB\u884C inline

v1.1.4 modified

\u65B0\u589E\u4E24\u4E2A\u65B9\u6CD5\uFF0C\u53EF\u4EE5\u540C\u65F6\u88C5\u8F7D\u591A\u4E2A APP \u4E0E\u5B50 Hooker

Function Illustrate

\u88C5\u8F7D\u5E76 Hook \u6307\u5B9A\u5305\u540D\u7684 APP\u3002

name \u4E3A APP \u7684\u5305\u540D\uFF0C\u540E\u65B9\u7684\u4E24\u4E2A\u53C2\u6570\u4E00\u4E2A\u53EF\u4F5C\u4E3A lambda \u65B9\u6CD5\u4F53\u4F7F\u7528\uFF0C\u4E00\u4E2A\u53EF\u4EE5\u76F4\u63A5\u88C5\u8F7D\u5B50 Hooker\u3002

\u88C5\u8F7D\u5E76 Hook \u6307\u5B9A\u3001\u5168\u90E8\u5305\u540D\u7684 APP\u3002

\u82E5\u8981\u88C5\u8F7D APP Zygote \u4E8B\u4EF6\uFF0C\u8BF7\u4F7F\u7528 loadZygote\u3002

\u82E5\u8981 Hook \u7CFB\u7EDF\u6846\u67B6\uFF0C\u8BF7\u4F7F\u7528 loadSystem\u3002

Function Example

\u4F60\u53EF\u4EE5\u4F7F\u7528 loadApp \u7684 lambda \u65B9\u6CD5\u4F53\u5F62\u5F0F\u6216\u76F4\u63A5\u88C5\u8F7D\u4E00\u4E2A Hooker\u3002

The following example

// \u4F7F\u7528 lambda
loadApp(name = "com.example.test") {
    // Your code here.
}
// \u4F7F\u7528 Hooker
loadApp(name = "com.example.test", CustomHooker)

\u82E5\u4E0D\u6307\u5B9A name \u53C2\u6570\uFF0C\u5219\u6B64\u65B9\u6CD5\u4F53\u9ED8\u8BA4\u4F1A\u8FC7\u6EE4\u5F53\u524D\u7CFB\u7EDF\u4E2D\u5168\u90E8\u53EF\u88AB Hook \u7684 APP\u3002

The following example

// \u4F7F\u7528 lambda
loadApp {
    // Your code here.
}
// \u4F7F\u7528 Hooker
loadApp(hooker = CustomHooker)

\u82E5\u60F3\u8981\u540C\u65F6\u88C5\u8F7D\u591A\u4E2A\u9700\u8981 Hook \u7684 APP\uFF0C\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528\u5982\u4E0B\u65B9\u5F0F\u3002

The following example

// \u540C\u65F6\u88C5\u8F7D\u591A\u4E2A\u9700\u8981 Hook \u7684 APP
loadApp("com.example.test", "com.example.next") {
    // Your code here.
}

\u82E5\u60F3\u8981\u540C\u65F6\u88C5\u8F7D\u591A\u4E2A\u5B50 Hooker\uFF0C\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528\u5982\u4E0B\u65B9\u5F0F\uFF0C\u4F46\u6B64\u65F6\u53EA\u80FD\u6307\u5B9A\u4E00\u4E2A\u9700\u8981 Hook \u7684 APP\u3002

The following example

// \u540C\u65F6\u88C5\u8F7D\u591A\u4E2A\u5B50 Hooker
loadApp("com.example.test", CustomHooker1, CustomHooker2)

loadZygote - method

inline fun loadZygote(initiate: PackageParam.() -> Unit)
fun loadZygote(hooker: YukiBaseHooker)
fun loadZygote(vararg hooker: YukiBaseHooker)

Change Records

v1.0.80 added

v1.1.4 modified

\u65B0\u589E\u4E00\u4E2A\u65B9\u6CD5\uFF0C\u53EF\u4EE5\u540C\u65F6\u88C5\u8F7D\u591A\u4E2A\u5B50 Hooker

Function Illustrate

\u88C5\u8F7D APP Zygote \u4E8B\u4EF6\u3002

\u65B9\u6CD5\u4E2D\u7684\u4E24\u4E2A\u53C2\u6570\u4E00\u4E2A\u53EF\u4F5C\u4E3A lambda \u65B9\u6CD5\u4F53\u4F7F\u7528\uFF0C\u4E00\u4E2A\u53EF\u4EE5\u76F4\u63A5\u88C5\u8F7D\u5B50 Hooker\u3002

loadSystem - method

inline fun loadSystem(initiate: PackageParam.() -> Unit)
fun loadSystem(hooker: YukiBaseHooker)
fun loadSystem(vararg hooker: YukiBaseHooker)

Change Records

v1.0.82 added

v1.1.4 modified

\u65B0\u589E\u4E00\u4E2A\u65B9\u6CD5\uFF0C\u53EF\u4EE5\u540C\u65F6\u88C5\u8F7D\u591A\u4E2A\u5B50 Hooker

Function Illustrate

\u88C5\u8F7D\u5E76 Hook \u7CFB\u7EDF\u6846\u67B6\u3002

\u65B9\u6CD5\u4E2D\u7684\u4E24\u4E2A\u53C2\u6570\u4E00\u4E2A\u53EF\u4F5C\u4E3A lambda \u65B9\u6CD5\u4F53\u4F7F\u7528\uFF0C\u4E00\u4E2A\u53EF\u4EE5\u76F4\u63A5\u88C5\u8F7D\u5B50 Hooker\u3002

withProcess - method

inline fun withProcess(name: String, initiate: PackageParam.() -> Unit)
fun withProcess(name: String, hooker: YukiBaseHooker)
fun withProcess(vararg name: String, hooker: YukiBaseHooker)
fun withProcess(name: String, vararg hooker: YukiBaseHooker)

Change Records

v1.0.70 added

v1.1.4 modified

\u65B0\u589E\u4E24\u4E2A\u65B9\u6CD5\uFF0C\u53EF\u4EE5\u540C\u65F6\u88C5\u8F7D\u591A\u4E2A\u8FDB\u7A0B\u4E0E\u5B50 Hooker

Function Illustrate

\u88C5\u8F7D\u5E76 Hook APP \u7684\u6307\u5B9A\u8FDB\u7A0B\u3002

name \u4E3A APP \u7684\u8FDB\u7A0B\u540D\u79F0\uFF0C\u540E\u65B9\u7684\u4E24\u4E2A\u53C2\u6570\u4E00\u4E2A\u53EF\u4F5C\u4E3A lambda \u65B9\u6CD5\u4F53\u4F7F\u7528\uFF0C\u4E00\u4E2A\u53EF\u4EE5\u76F4\u63A5\u88C5\u8F7D\u5B50 Hooker\u3002

loadHooker - method

fun loadHooker(hooker: YukiBaseHooker)

Change Records

v1.0 first

Function Illustrate

\u88C5\u8F7D Hook \u5B50\u7C7B\u3002

\u4F60\u53EF\u4EE5\u586B\u5165 hooker \u5728 Hooker \u4E2D\u7EE7\u7EED\u88C5\u8F7D Hooker\u3002

searchClass - method

inline fun searchClass(name: String, async: Boolean, initiate: ClassConditions): DexClassFinder.Result

Change Records

v1.1.0 added

Function Illustrate

\u901A\u8FC7 appClassLoader \u6309\u6307\u5B9A\u6761\u4EF6\u67E5\u627E\u5E76\u5F97\u5230\u5F53\u524D Hook APP Dex \u4E2D\u7684 Class\u3002

Pay Attention

\u6B64\u65B9\u6CD5\u5728 Class \u6570\u91CF\u8FC7\u591A\u53CA\u67E5\u627E\u6761\u4EF6\u590D\u6742\u65F6\u4F1A\u975E\u5E38\u8017\u65F6\u3002

\u5EFA\u8BAE\u542F\u7528 async \u6216\u8BBE\u7F6E name \u53C2\u6570\uFF0Cname \u53C2\u6570\u5C06\u5728 Hook APP (\u5BBF\u4E3B) \u4E0D\u540C\u7248\u672C\u4E2D\u81EA\u52A8\u8FDB\u884C\u672C\u5730\u7F13\u5B58\u4EE5\u63D0\u5347\u6548\u7387\u3002

\u6B64\u529F\u80FD\u5C1A\u5728\u8BD5\u9A8C\u9636\u6BB5\uFF0C\u6027\u80FD\u4E0E\u7A33\u5B9A\u6027\u53EF\u80FD\u4ECD\u7136\u5B58\u5728\u95EE\u9898\uFF0C\u4F7F\u7528\u8FC7\u7A0B\u9047\u5230\u95EE\u9898\u8BF7\u5411\u6211\u4EEC\u62A5\u544A\u5E76\u5E2E\u52A9\u6211\u4EEC\u6539\u8FDB\u3002

String+VariousClass.clazz - i-ext-field

Change Records

v1.0 first

v1.1.0 deprecated

\u8BF7\u8F6C\u79FB\u5230 toClass(...) \u65B9\u6CD5

String.hasClass - i-ext-field

Change Records

v1.0 first

v1.1.0 deprecated

\u8BF7\u8F6C\u79FB\u5230 hasClass(...) \u65B9\u6CD5

String+VariousClass.toClass - i-ext-method

fun String.toClass(loader: ClassLoader?): Class<*>
fun VariousClass.toClass(loader: ClassLoader?): Class<*>

Change Records

v1.1.0 added

Function Illustrate

\u901A\u8FC7\u5B57\u7B26\u4E32\u7C7B\u540D\u3001VariousClass \u8F6C\u6362\u4E3A loader \u4E2D\u7684\u5B9E\u4F53\u7C7B\u3002

\u9ED8\u8BA4\u4F7F\u7528\u5F53\u524D appClassLoader \u88C5\u8F7D\u76EE\u6807 Class\u3002

Function Example

\u4F60\u53EF\u4EE5\u8F7B\u677E\u5730\u5C06 String \u7C7B\u578B\u7684 Class \u5305\u540D\u8F6C\u4E3A Class \u5B9E\u4F8B\u3002

The following example

"com.example.demo.DemoClass".toClass()

\u4F60\u8FD8\u53EF\u4EE5\u5411 loader \u53C2\u6570\u4F20\u5165\u4F60\u81EA\u5B9A\u4E49\u7684 ClassLoader\u3002

The following example

val customClassLoader: ClassLoader? = ... // \u5047\u8BBE\u8FD9\u4E2A\u5C31\u662F\u4F60\u7684 ClassLoader
"com.example.demo.DemoClass".toClass(customClassLoader)

\u4F60\u8FD8\u53EF\u4EE5\u521B\u5EFA\u4E00\u4E2A VariousClass\uFF0C\u5E76\u8F6C\u6362\u4E3A\u5B9E\u4F53\u7C7B\u3002

VariousClass \u4F1A\u679A\u4E3E\u6240\u6709\u8BBE\u7F6E\u7684 Class \u5E76\u6700\u7EC8\u83B7\u5F97\u7B2C\u4E00\u4E2A\u5B58\u5728\u7684 Class\u3002

The following example

VariousClass("com.example.demo.DemoClass1", "com.example.demo.DemoClass2").toClass()

\u540C\u6837\u5730\uFF0C\u4F60\u8FD8\u53EF\u4EE5\u5411 loader \u53C2\u6570\u4F20\u5165\u4F60\u81EA\u5B9A\u4E49\u7684 ClassLoader\u3002

The following example

val customClassLoader: ClassLoader? = ... // \u5047\u8BBE\u8FD9\u4E2A\u5C31\u662F\u4F60\u7684 ClassLoader
VariousClass("com.example.demo.DemoClass1", "com.example.demo.DemoClass2").toClass(customClassLoader)

String+VariousClass.toClassOrNull - i-ext-method

fun String.toClassOrNull(loader: ClassLoader?): Class<*>?
fun VariousClass.toClassOrNull(loader: ClassLoader?): Class<*>?

Change Records

v1.1.0 added

Function Illustrate

\u901A\u8FC7\u5B57\u7B26\u4E32\u7C7B\u540D\u3001VariousClass \u8F6C\u6362\u4E3A loader \u4E2D\u7684\u5B9E\u4F53\u7C7B\u3002

\u9ED8\u8BA4\u4F7F\u7528\u5F53\u524D appClassLoader \u88C5\u8F7D\u76EE\u6807 Class\u3002

\u627E\u4E0D\u5230 Class \u4F1A\u8FD4\u56DE null\uFF0C\u4E0D\u4F1A\u629B\u51FA\u5F02\u5E38\u3002

Function Example

\u7528\u6CD5\u8BF7\u53C2\u8003 String+VariousClass.toClass \u65B9\u6CD5\u3002

String.hasClass - i-ext-method

fun String.hasClass(loader: ClassLoader?): Boolean

Change Records

v1.1.0 added

Function Illustrate

\u901A\u8FC7\u5B57\u7B26\u4E32\u7C7B\u540D\u67E5\u627E\u662F\u5426\u5B58\u5728\u3002

\u9ED8\u8BA4\u4F7F\u7528\u5F53\u524D appClassLoader \u88C5\u8F7D\u76EE\u6807 Class\u3002

Function Example

\u4F60\u53EF\u4EE5\u8F7B\u677E\u7684\u4F7F\u7528\u6B64\u65B9\u6CD5\u5224\u65AD\u5B57\u7B26\u4E32\u4E2D\u7684\u7C7B\u662F\u5426\u5B58\u5728\u3002

The following example

if("com.example.demo.DemoClass".hasClass()) {
    // Your code here.
}

\u4F60\u8FD8\u53EF\u4EE5\u81EA\u5B9A\u4E49\u5176\u4E2D\u7684 loader \u53C2\u6570\uFF0C\u9ED8\u8BA4\u4E3A appClassLoader\u3002

The following example

val customClassLoader: ClassLoader? = ... // \u5047\u8BBE\u8FD9\u4E2A\u5C31\u662F\u4F60\u7684 ClassLoader
if("com.example.demo.DemoClass".hasClass(customClassLoader)) {
    // Your code here.
}

findClass - method

fun findClass(name: String, loader: ClassLoader?): HookClass
fun findClass(vararg name: String, loader: ClassLoader?): VariousClass

Change Records

v1.0 first

v1.0.1 modified

\u79FB\u9664\u4E86 findClass(various: VariousClass) \u65B9\u6CD5

v1.1.0 modified

\u65B0\u589E loader \u53C2\u6570

Function Illustrate

\u901A\u8FC7\u5B8C\u6574\u5305\u540D+\u540D\u79F0\u67E5\u627E\u9700\u8981\u88AB Hook \u7684 Class\u3002

Notice

\u4F7F\u7528\u6B64\u65B9\u6CD5\u4F1A\u5F97\u5230\u4E00\u4E2A HookClass \u4EC5\u7528\u4E8E Hook\uFF0C\u82E5\u60F3\u67E5\u627E Class \u8BF7\u4F7F\u7528 toClass \u529F\u80FD\u3002

Function Example

\u4F60\u53EF\u4EE5\u4F7F\u7528\u4E09\u79CD\u65B9\u5F0F\u67E5\u627E\u4F60\u9700\u8981 Hook \u7684\u76EE\u6807 Class\u3002

\u4F60\u53EF\u4EE5\u76F4\u63A5\u5C06\u88AB\u67E5\u627E\u7684 Class \u5B8C\u6574\u5305\u540D+\u540D\u79F0\u586B\u5165 name \u4E2D\u3002

The following example

findClass(name = "com.example.demo.DemoClass")

\u82E5\u4F60\u4E0D\u786E\u5B9A\u591A\u4E2A\u7248\u672C\u7684 Class \u4EE5\u53CA\u4E0D\u540C\u540D\u79F0\uFF0C\u4F60\u53EF\u4EE5\u5C06\u591A\u4E2A\u5B8C\u6574\u5305\u540D+\u540D\u79F0\u586B\u5165 name \u4E2D\u3002

The following example

findClass("com.example.demo.DemoClass1", "com.example.demo.DemoClass2", "com.example.demo.DemoClass3")

\u4F60\u8FD8\u53EF\u4EE5\u521B\u5EFA\u4E00\u4E2A VariousClass\uFF0C\u5C06 Class \u7684\u5B8C\u6574\u5305\u540D+\u540D\u79F0\u586B\u5165 VariousClass \u7684 name \u4E2D\u5E76\u586B\u5165 various \u53C2\u6570\u4E2D\u3002

The following example

val variousClass = VariousClass("com.example.demo.DemoClass1", "com.example.demo.DemoClass2", "com.example.demo.DemoClass3")

\u82E5\u4F60\u5F53\u524D\u9700\u8981\u67E5\u627E\u7684 Class \u4E0D\u5C5E\u4E8E appClassLoader\uFF0C\u4F60\u53EF\u4EE5\u4F7F\u7528 loader \u53C2\u6570\u6307\u5B9A\u4F60\u8981\u88C5\u8F7D\u7684 ClassLoader\u3002

The following example

val outsideLoader: ClassLoader? = ... // \u5047\u8BBE\u8FD9\u5C31\u662F\u4F60\u7684 ClassLoader
findClass(name = "com.example.demo.OutsideClass", loader = outsideLoader)

\u540C\u6837\u5730\uFF0C\u5728\u4E0D\u786E\u5B9A\u591A\u4E2A\u7248\u672C\u7684 Class \u4EE5\u53CA\u4E0D\u540C\u540D\u79F0\u65F6\uFF0C\u4E5F\u53EF\u4EE5\u4F7F\u7528 loader \u53C2\u6570\u6307\u5B9A\u4F60\u8981\u88C5\u8F7D\u7684 ClassLoader\u3002

The following example

val outsideLoader: ClassLoader? = ... // \u5047\u8BBE\u8FD9\u5C31\u662F\u4F60\u7684 ClassLoader
findClass("com.example.demo.OutsideClass1", "com.example.demo.OutsideClass2", "com.example.demo.OutsideClass3", loader = outsideLoader)

String+Class+VariousClass+HookClass.hook - i-ext-method

inline fun String.hook(initiate: YukiMemberHookCreator.() -> Unit): YukiMemberHookCreator.Result
inline fun Class<*>.hook(isForceUseAbsolute: Boolean, initiate: YukiMemberHookCreator.() -> Unit): YukiMemberHookCreator.Result
inline fun VariousClass.hook(initiate: YukiMemberHookCreator.() -> Unit): YukiMemberHookCreator.Result
inline fun HookClass.hook(initiate: YukiMemberHookCreator.() -> Unit): YukiMemberHookCreator.Result

Change Records

v1.0 first

v1.0.1 modified

\u65B0\u589E VariousClass \u7684\u76F4\u63A5\u8C03\u7528 hook \u65B9\u6CD5

v1.0.2 modified

\u65B0\u589E String \u7684\u76F4\u63A5\u8C03\u7528 hook \u65B9\u6CD5

v1.0.3 modified

\u65B0\u589E YukiMemberHookCreator.Result \u8FD4\u56DE\u503C

v1.0.70 modified

\u65B0\u589E isUseAppClassLoader \u53C2\u6570

v1.0.80 modified

\u5C06\u65B9\u6CD5\u4F53\u8FDB\u884C inline

v1.1.0 modified

\u79FB\u9664\u4E86 isUseAppClassLoader \u53C2\u6570

\u6DFB\u52A0\u4E86 isForceUseAbsolute \u53C2\u6570\u5230 Class.hook \u65B9\u6CD5

Function Illustrate

\u8FD9\u662F\u4E00\u5207 Hook \u7684\u5165\u53E3\u521B\u5EFA\u65B9\u6CD5\uFF0CHook \u65B9\u6CD5\u3001\u6784\u9020\u65B9\u6CD5\u3002

Function Example

\u5982\u4F60\u6240\u89C1\uFF0CHook \u65B9\u6CD5\u4F53\u7684\u521B\u5EFA\u53EF\u4F7F\u7528 4 \u79CD\u65B9\u5F0F\u3002

\u901A\u8FC7\u5B57\u7B26\u4E32\u7C7B\u540D\u5F97\u5230 HookClass \u5B9E\u4F8B\u8FDB\u884C\u521B\u5EFA\u3002

The following example

"com.example.demo.DemoClass".hook {
    // Your code here.
}

\u901A\u8FC7 findClass \u5F97\u5230 HookClass \u5B9E\u4F8B\u8FDB\u884C\u521B\u5EFA\u3002

The following example

findClass(name = "com.example.demo.DemoClass").hook {
    // Your code here.
}

\u4F7F\u7528 stub \u6216\u76F4\u63A5\u62FF\u5230 Class \u5B9E\u4F8B\u8FDB\u884C\u521B\u5EFA\u3002

\u9ED8\u8BA4\u60C5\u51B5\u4E0B API \u4F1A\u5C06 Class \u5B9E\u4F8B\u8F6C\u6362\u4E3A\u7C7B\u540D\u5E76\u7ED1\u5B9A\u5230 appClassLoader\uFF0C\u82E5\u5931\u8D25\uFF0C\u5219\u4F1A\u4F7F\u7528\u539F\u59CB Class \u5B9E\u4F8B\u76F4\u63A5\u8FDB\u884C Hook\u3002

The following example

Stub::class.java.hook {
    // Your code here.
}

\u82E5\u5F53\u524D Class \u4E0D\u5728 appClassLoader \u4E14\u81EA\u52A8\u5339\u914D\u65E0\u6CD5\u627E\u5230\u8BE5 Class\uFF0C\u8BF7\u542F\u7528 isForceUseAbsolute\u3002

The following example

YourClass::class.java.hook(isForceUseAbsolute = true) {
    // Your code here.
}

\u4F7F\u7528 VariousClass \u5B9E\u4F8B\u8FDB\u884C\u521B\u5EFA\u3002

The following example

VariousClass("com.example.demo.DemoClass1", "com.example.demo.DemoClass2").hook {
    // Your code here.
}

\u6216\u8005\u76F4\u63A5\u4F7F\u7528\u53EF\u53D8\u5B57\u7B26\u4E32\u6570\u7EC4\u8FDB\u884C\u521B\u5EFA\u3002

The following example

findClass("com.example.demo.DemoClass1", "com.example.demo.DemoClass2").hook {
    // Your code here.
}

HookResources.hook - i-ext-method

inline fun HookResources.hook(initiate: YukiResourcesHookCreator.() -> Unit)

Change Records

v1.0.80 added

Function Illustrate

Hook APP \u7684 Resources\u3002

Pay Attention

\u8BF7\u6CE8\u610F\u4F60\u9700\u8981\u786E\u4FDD\u5F53\u524D Hook Framework \u652F\u6301\u4E14 InjectYukiHookWithXposed.isUsingResourcesHook \u5DF2\u542F\u7528\u3002

Function Example

Resources Hook \u4E3A\u56FA\u5B9A\u7528\u6CD5\uFF0C\u83B7\u53D6 resources \u5BF9\u8C61\uFF0C\u7136\u540E\u8C03\u7528 hook \u65B9\u6CD5\u5F00\u59CB Hook\u3002

The following example

resources().hook {
    // Your code here.
}

Pay Attention

\u8FD9\u662F\u56FA\u5B9A\u7528\u6CD5\uFF0C\u4E3A\u4E86\u9632\u6B62\u53D1\u751F\u95EE\u9898\uFF0C\u4F60\u4E0D\u53EF\u624B\u52A8\u5B9E\u73B0\u4EFB\u4F55 HookResources \u5B9E\u4F8B\u6267\u884C hook \u8C03\u7528\u3002

\u5C06 Resources \u7684 Hook \u8BBE\u7F6E\u4E3A\u8FD9\u6837\u662F\u4E3A\u4E86\u4E0E findClass(...).hook \u505A\u5230\u7EDF\u4E00\uFF0C\u4F7F\u5F97\u8C03\u7528\u8D77\u6765\u903B\u8F91\u4E0D\u4F1A\u6DF7\u4E71\u3002

AppLifecycle - class

inner class AppLifecycle internal constructor()

Change Records

v1.0.88 added

Function Illustrate

\u5F53\u524D Hook APP \u7684\u751F\u547D\u5468\u671F\u5B9E\u4F8B\u5904\u7406\u7C7B\u3002

attachBaseContext - method

fun attachBaseContext(result: (baseContext: Context, hasCalledSuper: Boolean) -> Unit)

Change Records

v1.0.88 added

Function Illustrate

\u76D1\u542C\u5F53\u524D Hook APP \u88C5\u8F7D Application.attachBaseContext\u3002

onCreate - method

fun onCreate(initiate: Application.() -> Unit)

Change Records

v1.0.88 added

Function Illustrate

\u76D1\u542C\u5F53\u524D Hook APP \u88C5\u8F7D Application.onCreate\u3002

onTerminate - method

fun onTerminate(initiate: Application.() -> Unit)

Change Records

v1.0.88 added

Function Illustrate

\u76D1\u542C\u5F53\u524D Hook APP \u88C5\u8F7D Application.onTerminate\u3002

onLowMemory - method

fun onLowMemory(initiate: Application.() -> Unit)

Change Records

v1.0.88 added

Function Illustrate

\u76D1\u542C\u5F53\u524D Hook APP \u88C5\u8F7D Application.onLowMemory\u3002

onTrimMemory - method

fun onTrimMemory(result: (self: Application, level: Int) -> Unit)

Change Records

v1.0.88 added

Function Illustrate

\u76D1\u542C\u5F53\u524D Hook APP \u88C5\u8F7D Application.onTrimMemory\u3002

onConfigurationChanged - method

fun onConfigurationChanged(result: (self: Application, config: Configuration) -> Unit)

Change Records

v1.0.88 added

Function Illustrate

\u76D1\u542C\u5F53\u524D Hook APP \u88C5\u8F7D Application.onConfigurationChanged\u3002

registerReceiver - method

fun registerReceiver(vararg action: String, result: (context: Context, intent: Intent) -> Unit)

Change Records

v1.0.88 added

Function Illustrate

\u6CE8\u518C\u7CFB\u7EDF\u5E7F\u64AD\u76D1\u542C\u3002

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