import{_ as s,o as n,c as o,a}from"./app.0312b331.js";const e={},l=a(`
object YukiHookAPI
\u53D8\u66F4\u8BB0\u5F55
v1.0 \u6DFB\u52A0
\u529F\u80FD\u63CF\u8FF0
\u8FD9\u662F
YukiHookAPI\u7684 API \u8C03\u7528\u603B\u7C7B\uFF0CHook \u76F8\u5173\u529F\u80FD\u7684\u5F00\u59CB\u3001Hook \u76F8\u5173\u529F\u80FD\u7684\u914D\u7F6E\u90FD\u5728\u8FD9\u91CC\u3002
const val API_VERSION_NAME: String
\u53D8\u66F4\u8BB0\u5F55
v1.0.4 \u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u83B7\u53D6\u5F53\u524D
YukiHookAPI\u7684\u7248\u672C\u3002
const val API_VERSION_CODE: Int
\u53D8\u66F4\u8BB0\u5F55
v1.0.4 \u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u83B7\u53D6\u5F53\u524D
YukiHookAPI\u7684\u7248\u672C\u53F7\u3002
\u53D8\u66F4\u8BB0\u5F55
v1.0.5 \u65B0\u589E
v1.0.91 \u79FB\u9664
\u8BF7\u8F6C\u79FB\u5230 Status.Executor.name
\u53D8\u66F4\u8BB0\u5F55
v1.0.5 \u65B0\u589E
v1.0.91 \u79FB\u9664
\u8BF7\u8F6C\u79FB\u5230 Status.Executor.apiLevel\u3001Status.Executor.versionName\u3001Status.Executor.versionCode
object Status
\u53D8\u66F4\u8BB0\u5F55
v1.0.91 \u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u5F53\u524D
YukiHookAPI\u7684\u72B6\u6001\u3002
val compiledTimestamp: Long
\u53D8\u66F4\u8BB0\u5F55
v1.1.0 \u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u83B7\u53D6\u9879\u76EE\u7F16\u8BD1\u5B8C\u6210\u7684\u65F6\u95F4\u6233 (\u5F53\u524D\u672C\u5730\u65F6\u95F4)\u3002
val isXposedEnvironment: Boolean
\u53D8\u66F4\u8BB0\u5F55
v1.1.0 \u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u83B7\u53D6\u5F53\u524D\u662F\u5426\u4E3A (Xposed) \u5BBF\u4E3B\u73AF\u5883\u3002
\u53D8\u66F4\u8BB0\u5F55
v1.0.91 \u65B0\u589E
v1.1.5 \u4F5C\u5E9F
\u8BF7\u8F6C\u79FB\u5230 Executor.name
\u53D8\u66F4\u8BB0\u5F55
v1.0.91 \u65B0\u589E
v1.1.5 \u4F5C\u5E9F
\u8BF7\u8F6C\u79FB\u5230 Executor.apiLevel\u3001Executor.versionName\u3001Executor.versionCode
val isModuleActive: Boolean
\u53D8\u66F4\u8BB0\u5F55
v1.0.91 \u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u5224\u65AD\u6A21\u5757\u662F\u5426\u5728 Xposed \u6216\u592A\u6781\u3001\u65E0\u6781\u4E2D\u6FC0\u6D3B\u3002
\u6CE8\u610F
\u5728\u6A21\u5757\u73AF\u5883\u4E2D\u4F60\u9700\u8981\u5C06 Application \u7EE7\u627F\u4E8E ModuleApplication\u3002
\u5728\u6A21\u5757\u73AF\u5883\u4E2D\u9700\u8981\u542F\u7528 Configs.isEnableHookModuleStatus\u3002
\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u4E2D\u4EC5\u8FD4\u56DE\u975E isTaiChiModuleActive \u7684\u6FC0\u6D3B\u72B6\u6001\u3002
val isXposedModuleActive: Boolean
\u53D8\u66F4\u8BB0\u5F55
v1.0.91 \u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u4EC5\u5224\u65AD\u6A21\u5757\u662F\u5426\u5728 Xposed \u4E2D\u6FC0\u6D3B\u3002
\u6CE8\u610F
\u5728\u6A21\u5757\u73AF\u5883\u4E2D\u9700\u8981\u542F\u7528 Configs.isEnableHookModuleStatus\u3002
\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u4E2D\u59CB\u7EC8\u8FD4\u56DE true\u3002
val isTaiChiModuleActive: Boolean
\u53D8\u66F4\u8BB0\u5F55
v1.0.91 \u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u4EC5\u5224\u65AD\u6A21\u5757\u662F\u5426\u5728\u592A\u6781\u3001\u65E0\u6781\u4E2D\u6FC0\u6D3B\u3002
\u6CE8\u610F
\u5728\u6A21\u5757\u73AF\u5883\u4E2D\u4F60\u9700\u8981\u5C06 Application \u7EE7\u627F\u4E8E ModuleApplication\u3002
\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u4E2D\u59CB\u7EC8\u8FD4\u56DE false\u3002
val isSupportResourcesHook: Boolean
\u53D8\u66F4\u8BB0\u5F55
v1.0.91 \u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u5224\u65AD\u5F53\u524D Hook Framework \u662F\u5426\u652F\u6301\u8D44\u6E90\u94A9\u5B50(Resources Hook)\u3002
\u6CE8\u610F
\u5728\u6A21\u5757\u73AF\u5883\u4E2D\u9700\u8981\u542F\u7528 Configs.isEnableHookModuleStatus\u3002
\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u4E2D\u53EF\u80FD\u4F1A\u5EF6\u8FDF\u7B49\u5F85\u4E8B\u4EF6\u56DE\u8C03\u540E\u624D\u4F1A\u8FD4\u56DE true\u3002
\u8BF7\u6CE8\u610F\u4F60\u9700\u8981\u786E\u4FDD InjectYukiHookWithXposed.isUsingResourcesHook \u5DF2\u542F\u7528\uFF0C\u5426\u5219\u59CB\u7EC8\u8FD4\u56DE false\u3002
object Executor
\u53D8\u66F4\u8BB0\u5F55
v1.1.5 \u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u5F53\u524D
YukiHookAPI\u4F7F\u7528\u7684 Hook Framework \u76F8\u5173\u4FE1\u606F\u3002
val name: String
\u53D8\u66F4\u8BB0\u5F55
v1.1.5 \u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u83B7\u53D6\u5F53\u524D Hook Framework \u540D\u79F0\u3002
\u6CE8\u610F
\u5728\u6A21\u5757\u73AF\u5883\u4E2D\u9700\u8981\u542F\u7528 Configs.isEnableHookModuleStatus\u3002
val apiLevel: Int
\u53D8\u66F4\u8BB0\u5F55
v1.1.5 \u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u83B7\u53D6\u5F53\u524D Hook Framework \u7684 API \u7248\u672C\u3002
\u6CE8\u610F
\u5728\u6A21\u5757\u73AF\u5883\u4E2D\u9700\u8981\u542F\u7528 Configs.isEnableHookModuleStatus\u3002
val versionName: String
\u53D8\u66F4\u8BB0\u5F55
v1.1.5 \u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u83B7\u53D6\u5F53\u524D Hook Framework \u7248\u672C\u540D\u79F0\u3002
\u6CE8\u610F
\u5728\u6A21\u5757\u73AF\u5883\u4E2D\u9700\u8981\u542F\u7528 Configs.isEnableHookModuleStatus\u3002
val versionCode: Int
\u53D8\u66F4\u8BB0\u5F55
v1.1.5 \u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u83B7\u53D6\u5F53\u524D Hook Framework \u7248\u672C\u53F7\u3002
\u6CE8\u610F
\u5728\u6A21\u5757\u73AF\u5883\u4E2D\u9700\u8981\u542F\u7528 Configs.isEnableHookModuleStatus\u3002
object Configs
\u53D8\u66F4\u8BB0\u5F55
v1.0 \u6DFB\u52A0
\u529F\u80FD\u63CF\u8FF0
\u5BF9 API \u76F8\u5173\u529F\u80FD\u7684\u914D\u7F6E\u7C7B\u3002
inline fun debugLog(initiate: YukiHookLogger.Configs.() -> Unit)
\u53D8\u66F4\u8BB0\u5F55
v1.1.0 \u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u914D\u7F6E
YukiHookLogger.Configs\u76F8\u5173\u53C2\u6570\u3002
\u53D8\u66F4\u8BB0\u5F55
v1.0 \u6DFB\u52A0
v1.1.0 \u4F5C\u5E9F
\u8BF7\u8F6C\u79FB\u5230 YukiHookLogger.Configs.tag
var isDebug: Boolean
\u53D8\u66F4\u8BB0\u5F55
v1.0 \u6DFB\u52A0
\u529F\u80FD\u63CF\u8FF0
\u662F\u5426\u542F\u7528 Debug \u6A21\u5F0F\u3002
\u9ED8\u8BA4\u4E3A\u5F00\u542F\u72B6\u6001\uFF0C\u5F00\u542F\u540E\u6A21\u5757\u5C06\u4F1A\u5411 Logcat \u548C (Xposed) \u5BBF\u4E3B\u73AF\u5883\u4E2D\u7684\u65E5\u5FD7\u529F\u80FD\u6253\u5370\u8BE6\u7EC6\u7684 Hook \u65E5\u5FD7\uFF0C\u5173\u95ED\u540E\u4EC5\u4F1A\u6253\u5370 E \u7EA7\u522B\u7684\u65E5\u5FD7\u3002
\u53D8\u66F4\u8BB0\u5F55
v1.0.4 \u65B0\u589E
v1.1.0 \u4F5C\u5E9F
\u8BF7\u8F6C\u79FB\u5230 YukiHookLogger.Configs.isEnable
var isEnableModulePrefsCache: Boolean
\u53D8\u66F4\u8BB0\u5F55
v1.0.5 \u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u662F\u5426\u542F\u7528
YukiHookModulePrefs\u7684\u952E\u503C\u7F13\u5B58\u529F\u80FD\u3002
\u4E3A\u9632\u6B62\u5185\u5B58\u590D\u7528\u8FC7\u9AD8\u95EE\u9898\uFF0C\u6B64\u529F\u80FD\u9ED8\u8BA4\u542F\u7528\u3002
\u4F60\u53EF\u4EE5\u624B\u52A8\u5728 YukiHookModulePrefs \u4E2D\u81EA\u7531\u5F00\u542F\u548C\u5173\u95ED\u7F13\u5B58\u529F\u80FD\u4EE5\u53CA\u6E05\u9664\u7F13\u5B58\u3002
var isEnableModuleAppResourcesCache: Boolean
\u53D8\u66F4\u8BB0\u5F55
v1.0.87 \u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u662F\u5426\u542F\u7528\u5F53\u524D Xposed \u6A21\u5757\u81EA\u8EAB
Resources\u7F13\u5B58\u529F\u80FD\u3002
\u4E3A\u9632\u6B62\u5185\u5B58\u590D\u7528\u8FC7\u9AD8\u95EE\u9898\uFF0C\u6B64\u529F\u80FD\u9ED8\u8BA4\u542F\u7528\u3002
\u4F60\u53EF\u4EE5\u624B\u52A8\u8C03\u7528 PackageParam.refreshModuleAppResources \u6765\u5237\u65B0\u7F13\u5B58\u3002
\u6CE8\u610F
\u5173\u95ED\u540E\u6BCF\u6B21\u4F7F\u7528 PackageParam.moduleAppResources \u90FD\u4F1A\u91CD\u65B0\u521B\u5EFA\uFF0C\u53EF\u80FD\u4F1A\u9020\u6210\u8FD0\u884C\u7F13\u6162\u3002
var isEnableHookModuleStatus: Boolean
\u53D8\u66F4\u8BB0\u5F55
v1.0.88 \u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u662F\u5426\u542F\u7528 Hook Xposed \u6A21\u5757\u6FC0\u6D3B\u7B49\u72B6\u6001\u529F\u80FD.
\u4E3A\u539F\u751F\u652F\u6301 Xposed \u6A21\u5757\u6FC0\u6D3B\u72B6\u6001\u68C0\u6D4B\uFF0C\u6B64\u529F\u80FD\u9ED8\u8BA4\u542F\u7528\u3002
\u6CE8\u610F
\u5173\u95ED\u540E\u4F60\u5C06\u4E0D\u80FD\u518D\u5728\u6A21\u5757\u73AF\u5883\u4E2D\u4F7F\u7528 YukiHookAPI.Status \u4E2D\u7684\u6FC0\u6D3B\u72B6\u6001\u5224\u65AD\u529F\u80FD\u3002
var isEnableHookSharedPreferences: Boolean
\u53D8\u66F4\u8BB0\u5F55
v1.1.0 \u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u662F\u5426\u542F\u7528 Hook
SharedPreferences\u3002
\u542F\u7528\u540E\u5C06\u5728\u6A21\u5757\u542F\u52A8\u65F6\u5F3A\u5236\u5C06 SharedPreferences \u6587\u4EF6\u6743\u9650\u8C03\u6574\u4E3A Context.MODE_WORLD_READABLE (0664)\u3002
\u6CE8\u610F
\u8FD9\u662F\u4E00\u4E2A\u53EF\u9009\u7684\u5B9E\u9A8C\u6027\u529F\u80FD\uFF0C\u6B64\u529F\u80FD\u9ED8\u8BA4\u4E0D\u542F\u7528\u3002
\u4EC5\u7528\u4E8E\u4FEE\u590D\u67D0\u4E9B\u7CFB\u7EDF\u53EF\u80FD\u4F1A\u51FA\u73B0\u5728\u542F\u7528\u4E86 New XSharedPreferences \u540E\u4F9D\u7136\u51FA\u73B0\u6587\u4EF6\u6743\u9650\u9519\u8BEF\u95EE\u9898\uFF0C\u82E5\u4F60\u80FD\u6B63\u5E38\u4F7F\u7528 YukiHookModulePrefs \u5C31\u4E0D\u5EFA\u8BAE\u542F\u7528\u6B64\u529F\u80FD\u3002
var isEnableDataChannel: Boolean
\u53D8\u66F4\u8BB0\u5F55
v1.0.88 \u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u662F\u5426\u542F\u7528\u5F53\u524D Xposed \u6A21\u5757\u4E0E\u5BBF\u4E3B\u4EA4\u4E92\u7684
YukiHookDataChannel\u529F\u80FD\u3002
\u8BF7\u786E\u4FDD Xposed \u6A21\u5757\u7684 Application \u7EE7\u627F\u4E8E ModuleApplication \u624D\u80FD\u6709\u6548\u3002
\u6B64\u529F\u80FD\u9ED8\u8BA4\u542F\u7528\uFF0C\u5173\u95ED\u540E\u5C06\u4E0D\u4F1A\u5728\u529F\u80FD\u521D\u59CB\u5316\u7684\u65F6\u5019\u88C5\u8F7D YukiHookDataChannel\u3002
var isEnableMemberCache: Boolean
\u53D8\u66F4\u8BB0\u5F55
v1.0.68 \u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u662F\u5426\u542F\u7528
Member\u7F13\u5B58\u529F\u80FD\u3002
\u4E3A\u9632\u6B62 Member \u590D\u7528\u8FC7\u9AD8\u9020\u6210\u7684\u7CFB\u7EDF GC \u95EE\u9898\uFF0C\u6B64\u529F\u80FD\u9ED8\u8BA4\u542F\u7528\u3002
\u542F\u7528\u540E\u4F1A\u7F13\u5B58\u5DF2\u7ECF\u627E\u5230\u7684 Method\u3001Constructor\u3001Field\u3002
\u7F13\u5B58\u7684 Member \u90FD\u5C06\u5904\u4E8E ReflectsCacheStore \u7684\u5168\u5C40\u9759\u6001\u5B9E\u4F8B\u4E2D\u3002
\u63A8\u8350\u4F7F\u7528 MethodFinder\u3001ConstructorFinder\u3001FieldFinder \u6765\u83B7\u53D6 Member\u3002
\u9664\u975E\u7F13\u5B58\u7684 Member \u53D1\u751F\u4E86\u6DF7\u6DC6\u7684\u95EE\u9898\uFF0C\u4F8B\u5982\u4F7F\u7528 R8 \u6DF7\u6DC6\u540E\u7684 APP \u7684\u76EE\u6807 Member\uFF0C\u5426\u5219\u5EFA\u8BAE\u542F\u7528\u3002
inline fun configs(initiate: Configs.() -> Unit)
\u53D8\u66F4\u8BB0\u5F55
v1.0 \u6DFB\u52A0
v1.0.80 \u4FEE\u6539
\u5C06\u65B9\u6CD5\u4F53\u8FDB\u884C inline
\u529F\u80FD\u63CF\u8FF0
\u5BF9
Configs\u7C7B\u5B9E\u73B0\u4E86\u4E00\u4E2Alambda\u65B9\u6CD5\u4F53\u3002
\u4F60\u53EF\u4EE5\u8F7B\u677E\u5730\u8C03\u7528\u5B83\u8FDB\u884C\u914D\u7F6E\u3002
\u529F\u80FD\u793A\u4F8B
\u4F60\u53EF\u4EE5\u5728 Hook \u5165\u53E3\u7C7B\u7684 onInit \u65B9\u6CD5\u4E2D\u8C03\u7528 configs \u65B9\u6CD5\u548C debugLog \u65B9\u6CD5\u5B8C\u6210\u5BF9 API \u7684\u529F\u80FD\u914D\u7F6E\uFF0C\u5B9E\u65F6\u751F\u6548\u3002
\u793A\u4F8B\u5982\u4E0B
object HookEntry : IYukiHookXposedInit {
override fun onInit() {
YukiHookAPI.configs {
debugLog {
tag = "YukiHookAPI"
isEnable = true
isRecord = false
elements(TAG, PRIORITY, PACKAGE_NAME, USER_ID)
}
isDebug = BuildConfig.DEBUG
isEnableModulePrefsCache = true
isEnableModuleAppResourcesCache = true
isEnableHookModuleStatus = true
isEnableHookSharedPreferences = false
isEnableDataChannel = true
isEnableMemberCache = true
}
}
override fun onHook() {
// Your code here.
}
}
\u82E5\u89C9\u5F97\u4E0A\u9762\u7684\u5199\u6CD5\u4E0D\u7F8E\u89C2\uFF0C\u4F60\u8FD8\u53EF\u4EE5\u5199\u5F97\u66F4\u52A0\u7B80\u6D01\u3002
\u793A\u4F8B\u5982\u4E0B
object HookEntry : IYukiHookXposedInit {
override fun onInit() = configs {
debugLog {
tag = "YukiHookAPI"
isEnable = true
isRecord = false
elements(TAG, PRIORITY, PACKAGE_NAME, USER_ID)
}
isDebug = BuildConfig.DEBUG
isEnableModulePrefsCache = true
isEnableModuleAppResourcesCache = true
isEnableHookModuleStatus = true
isEnableHookSharedPreferences = false
isEnableDataChannel = true
isEnableMemberCache = true
}
override fun onHook() {
// Your code here.
}
}
\u4F60\u4E5F\u53EF\u4EE5\u4E0D\u901A\u8FC7 configs \u548C debugLog \u65B9\u6CD5\uFF0C\u76F4\u63A5\u8FDB\u884C\u914D\u7F6E\u3002
\u793A\u4F8B\u5982\u4E0B
object HookEntry : IYukiHookXposedInit {
override fun onInit() {
YukiHookLogger.Configs.tag = "YukiHookAPI"
YukiHookLogger.Configs.isEnable = true
YukiHookLogger.Configs.isRecord = false
YukiHookLogger.Configs.elements(
YukiHookLogger.Configs.TAG,
YukiHookLogger.Configs.PRIORITY,
YukiHookLogger.Configs.PACKAGE_NAME,
YukiHookLogger.Configs.USER_ID
)
YukiHookAPI.Configs.isDebug = BuildConfig.DEBUG
YukiHookAPI.Configs.isEnableModulePrefsCache = true
YukiHookAPI.Configs.isEnableModuleAppResourcesCache = true
YukiHookAPI.Configs.isEnableHookModuleStatus = true
YukiHookAPI.Configs.isEnableHookSharedPreferences = false
YukiHookAPI.Configs.isEnableDataChannel = true
YukiHookAPI.Configs.isEnableMemberCache = true
}
override fun onHook() {
// Your code here.
}
}
fun encase(initiate: PackageParam.() -> Unit)
fun encase(vararg hooker: YukiBaseHooker)
fun encase(baseContext: Context?, initiate: PackageParam.() -> Unit)
fun encase(baseContext: Context?, vararg hooker: YukiBaseHooker)
\u53D8\u66F4\u8BB0\u5F55
v1.0 \u6DFB\u52A0
\u529F\u80FD\u63CF\u8FF0
\u88C5\u8F7D Hook \u5165\u53E3\u7684\u6838\u5FC3\u65B9\u6CD5\u3002
\u529F\u80FD\u793A\u4F8B
\u8BE6\u60C5\u8BF7\u53C2\u8003
`,230),p=[l];function c(r,t){return n(),o("div",null,p)}const d=s(e,[["render",c],["__file","YukiHookAPI.html.vue"]]);export{d as default};