import{_ as s,o,c as a,a as e}from"./app.fb8271cf.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.
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
val appClassLoader\uFF1AClassLoader
Change Records
v1.0
first
Function Illustrate
\u83B7\u53D6\u5F53\u524D Hook APP \u7684
ClassLoader
\u3002
val appInfo: ApplicationInfo
Change Records
v1.0
first
Function Illustrate
\u83B7\u53D6\u5F53\u524D Hook APP \u7684
ApplicationInfo
\u3002
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
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
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
val systemContext: Context
Change Records
v1.1.0
added
Function Illustrate
\u83B7\u53D6\u5F53\u524D\u7CFB\u7EDF\u6846\u67B6\u7684
Context
\u3002
val processName: String
Change Records
v1.0
first
Function Illustrate
\u83B7\u53D6\u5F53\u524D Hook APP \u7684\u8FDB\u7A0B\u540D\u79F0\u3002
val packageName: String
Change Records
v1.0
first
Function Illustrate
\u83B7\u53D6\u5F53\u524D Hook APP \u7684\u5305\u540D\u3002
val isFirstApplication: Boolean
Change Records
v1.0
first
Function Illustrate
\u83B7\u53D6\u5F53\u524D Hook APP \u662F\u5426\u4E3A\u7B2C\u4E00\u4E2A
Application
\u3002
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
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
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
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
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
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
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
fun refreshModuleAppResources()
Change Records
v1.0.87
added
Function Illustrate
\u5237\u65B0\u5F53\u524D Xposed \u6A21\u5757\u81EA\u8EAB
Resources
\u3002
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
inline fun loadApp(name: String, initiate: PackageParam.() -> Unit)
fun loadApp(name: String, hooker: YukiBaseHooker)
Change Records
v1.0
first
v1.0.80
modified
\u5C06\u65B9\u6CD5\u4F53\u8FDB\u884C inline
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)
inline fun loadZygote(initiate: PackageParam.() -> Unit)
fun loadZygote(hooker: YukiBaseHooker)
Change Records
v1.0.80
added
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
inline fun loadSystem(initiate: PackageParam.() -> Unit)
fun loadSystem(hooker: YukiBaseHooker)
Change Records
v1.0.82
added
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
inline fun withProcess(name: String, initiate: PackageParam.() -> Unit)
fun withProcess(name: String, hooker: YukiBaseHooker)
Change Records
v1.0.70
added
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
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
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\u7684Class
\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
Change Records
v1.0
first
v1.1.0
deprecated
\u8BF7\u8F6C\u79FB\u5230 toClass(...)
\u65B9\u6CD5
Change Records
v1.0
first
v1.1.0
deprecated
\u8BF7\u8F6C\u79FB\u5230 hasClass(...)
\u65B9\u6CD5
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\u3001
VariousClass
\u8F6C\u6362\u4E3Aloader
\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)
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\u3001
VariousClass
\u8F6C\u6362\u4E3Aloader
\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
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.
}
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 \u65B9\u6CD5findClass(various: VariousClass)
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)
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 \u53C2\u6570isUseAppClassLoader
\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.
}
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
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
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
fun onCreate(initiate: Application.() -> Unit)
Change Records
v1.0.88
added
Function Illustrate
\u76D1\u542C\u5F53\u524D Hook APP \u88C5\u8F7D
Application.onCreate
\u3002
fun onTerminate(initiate: Application.() -> Unit)
Change Records
v1.0.88
added
Function Illustrate
\u76D1\u542C\u5F53\u524D Hook APP \u88C5\u8F7D
Application.onTerminate
\u3002
fun onLowMemory(initiate: Application.() -> Unit)
Change Records
v1.0.88
added
Function Illustrate
\u76D1\u542C\u5F53\u524D Hook APP \u88C5\u8F7D
Application.onLowMemory
\u3002
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
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
fun registerReceiver(vararg action: String, result: (context: Context, intent: Intent) -> Unit)
Change Records
v1.0.88
added
Function Illustrate
`,381),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};\u6CE8\u518C\u7CFB\u7EDF\u5E7F\u64AD\u76D1\u542C\u3002