import{_ as s,o as n,c as a,a as o}from"./app.fb8271cf.js";const e={},l=o(`
class YukiResourcesHookCreator(internal val packageParam: PackageParam, internal val hookResources: HookResources)
\u53D8\u66F4\u8BB0\u5F55
v1.0.80
\u65B0\u589E
v1.1.0
\u4FEE\u6539
\u4FEE\u6B63\u62FC\u5199\u9519\u8BEF\u7684 Creater \u547D\u540D\u5230 Creator
\u529F\u80FD\u63CF\u8FF0
YukiHookAPI
\u7684Resources
\u6838\u5FC3 Hook \u5B9E\u73B0\u7C7B\u3002
inline fun injectResource(tag: String, initiate: ResourceHookCreator.() -> Unit): ResourceHookCreator.Result
\u53D8\u66F4\u8BB0\u5F55
v1.0.80
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u6CE8\u5165\u8981 Hook \u7684 Resources\u3002
\u529F\u80FD\u793A\u4F8B
\u4F60\u53EF\u4EE5\u6CE8\u5165\u4EFB\u610F Resources\uFF0C\u4F7F\u7528 injectResource
\u5373\u53EF\u521B\u5EFA\u4E00\u4E2A Hook
\u5BF9\u8C61\u3002
\u793A\u4F8B\u5982\u4E0B
injectResource {
// Your code here.
}
\u4F60\u8FD8\u53EF\u4EE5\u81EA\u5B9A\u4E49 tag
\uFF0C\u65B9\u4FBF\u4F60\u5728\u8C03\u8BD5\u7684\u65F6\u5019\u80FD\u591F\u533A\u5206\u4F60\u7684 Hook
\u5BF9\u8C61\u3002
\u793A\u4F8B\u5982\u4E0B
injectResource(tag = "KuriharaYuki") {
// Your code here.
}
inner class ResourcesHookCreator internal constructor(private val tag: String)
\u53D8\u66F4\u8BB0\u5F55
v1.0.80
\u65B0\u589E
v1.1.0
\u4FEE\u6539
\u79FB\u9664 packageName
\u4FEE\u6B63\u62FC\u5199\u9519\u8BEF\u7684 Creater \u547D\u540D\u5230 Creator
\u529F\u80FD\u63CF\u8FF0
Hook \u6838\u5FC3\u529F\u80FD\u5B9E\u73B0\u7C7B\u3002
\u67E5\u627E\u548C\u5904\u7406\u9700\u8981 Hook \u7684 Resources\u3002
var resourceId: Int
\u53D8\u66F4\u8BB0\u5F55
v1.0.80
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u76F4\u63A5\u8BBE\u7F6E\u9700\u8981\u66FF\u6362\u7684 Resources Id\u3002
\u6CE8\u610F
\u4E0D\u5EFA\u8BAE\u4F7F\u7528\u6B64\u65B9\u6CD5\u8BBE\u7F6E\u76EE\u6807\u9700\u8981 Hook \u7684 Resources Id\uFF0C\u4F60\u53EF\u4EE5\u4F7F\u7528 conditions \u65B9\u6CD5\u3002
\u529F\u80FD\u793A\u4F8B
\u4F60\u53EF\u4EE5\u76F4\u63A5\u8BBE\u7F6E\u5E76\u6307\u5B9A\u76EE\u6807 Hook APP \u7684 Resources Id\u3002
\u793A\u4F8B\u5982\u4E0B
injectResource {
resourceId = 0x7f060001.toInt()
replaceTo(...)
}
inline fun conditions(initiate: ConditionFinder.() -> Unit)
\u53D8\u66F4\u8BB0\u5F55
v1.0.80
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u8BBE\u7F6E Resources \u67E5\u627E\u6761\u4EF6\u3002
\u82E5\u4F60\u8BBE\u7F6E\u4E86 resourceId
\u5219\u6B64\u65B9\u6CD5\u5C06\u4E0D\u4F1A\u88AB\u4F7F\u7528\u3002
\u529F\u80FD\u793A\u4F8B
\u4F60\u53EF\u53C2\u8003 ConditionFinder \u67E5\u770B\u8BE6\u7EC6\u7528\u6CD5\u3002
\u793A\u4F8B\u5982\u4E0B
injectResource {
conditions {
name = "test_string"
string()
}
replaceTo(...)
}
fun replaceTo(any: Any)
\u53D8\u66F4\u8BB0\u5F55
v1.0.80
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u66FF\u6362\u6307\u5B9A Resources \u4E3A\u6307\u5B9A\u7684\u503C\u3002
\u529F\u80FD\u793A\u4F8B
\u4F60\u53EF\u4EE5\u66FF\u6362\u627E\u5230\u7684 Resources \u4E3A\u4F60\u60F3\u8981\u7684\u503C\uFF0C\u53EF\u4EE5\u662F String
\u3001Drawable
\u7B49\u3002
\u6BD4\u5982\u6211\u4EEC\u8981\u66FF\u6362\u4E00\u4E2A\u627E\u5230\u7684\u5B57\u7B26\u4E32 Resources\u3002
\u793A\u4F8B\u5982\u4E0B
injectResource {
conditions {
name = "test_string"
string()
}
replaceTo("replace string")
}
\u6216\u662F\u66FF\u6362\u4E3A\u4E00\u4E2A Drawable
\uFF0C\u4F60\u65E0\u9700\u5BF9\u76EE\u6807 Resources \u5B9E\u73B0 fwd
\u65B9\u6CD5\u6216 DrawableLoader
\u3002
\u793A\u4F8B\u5982\u4E0B
injectResource {
conditions {
name = "test_drawable"
drawable()
}
replaceTo(ColorDrawable(Color.RED))
}
fun replaceToTrue()
\u53D8\u66F4\u8BB0\u5F55
v1.0.80
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u66FF\u6362\u6307\u5B9A Resources \u4E3A
true
\u3002
\u7279\u522B\u6CE8\u610F
\u786E\u4FDD\u76EE\u6807\u66FF\u6362 Resources \u7684\u7C7B\u578B\u4E3A Boolean\u3002
fun replaceToFalse()
\u53D8\u66F4\u8BB0\u5F55
v1.0.80
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u66FF\u6362\u6307\u5B9A Resources \u4E3A
false
\u3002
\u7279\u522B\u6CE8\u610F
\u786E\u4FDD\u76EE\u6807\u66FF\u6362 Resources \u7684\u7C7B\u578B\u4E3A Boolean\u3002
fun replaceToModuleResource(resId: Int)
\u53D8\u66F4\u8BB0\u5F55
v1.0.80
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u66FF\u6362\u4E3A\u5F53\u524D Xposed \u6A21\u5757\u7684 Resources\u3002
\u4F60\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528\u6A21\u5757\u7684 R.string.xxx
\u3001R.mipmap.xxx
\u3001R.drawable.xxx
\u66FF\u6362 Hook APP \u7684 Resources\u3002
\u529F\u80FD\u793A\u4F8B
\u4F7F\u7528\u6B64\u65B9\u6CD5\u53EF\u975E\u5E38\u65B9\u4FBF\u5730\u4F7F\u7528\u5F53\u524D\u6A21\u5757\u7684 Resources \u53BB\u66FF\u6362\u76EE\u6807 Hook APP \u7684 Resources\u3002
\u8FD9\u4E2A\u8FC7\u7A0B\u4F60\u65E0\u9700\u5BF9\u76EE\u6807 Resources \u5B9E\u73B0 fwd
\u65B9\u6CD5\u3002
\u6BD4\u5982\u6211\u4EEC\u8981\u66FF\u6362\u4E00\u4E2A\u5B57\u7B26\u4E32\u3002
\u793A\u4F8B\u5982\u4E0B
injectResource {
conditions {
name = "test_string"
string()
}
replaceToModuleResource(R.string.module_string)
}
\u8FD8\u53EF\u4EE5\u66FF\u6362\u4E00\u4E9B\u590D\u6742\u7684 Resources\uFF0C\u6BD4\u5982 xml
\u521B\u5EFA\u7684 drawable
\u3002
\u793A\u4F8B\u5982\u4E0B
injectResource {
conditions {
name = "test_drawable"
drawable()
}
replaceToModuleResource(R.drawable.module_drawable)
}
fun injectAsLayout(initiate: YukiResources.LayoutInflatedParam.() -> Unit)
\u53D8\u66F4\u8BB0\u5F55
v1.0.80
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u4F5C\u4E3A\u88C5\u8F7D\u7684\u5E03\u5C40\u6CE8\u5165\u3002
\u529F\u80FD\u793A\u4F8B
\u4F60\u53EF\u4EE5\u76F4\u63A5\u6CE8\u5165\u4E00\u4E2A\u5E03\u5C40\u76D1\u542C\u5E76\u4FEE\u6539\u5B83\u7684\u5185\u90E8 View
\u3002
\u793A\u4F8B\u5982\u4E0B
injectResource {
conditions {
name = "activity_main"
layout()
}
injectAsLayout {
findViewByIdentifier<View>(name = "test_view")?.isVisible = false
findViewByIdentifier<TextView>(name = "test_text_view")?.text = "Hook this"
}
}
\u4F60\u8FD8\u53EF\u4EE5\u901A\u8FC7 currentView
\u62FF\u5230 Context
\u3002
\u793A\u4F8B\u5982\u4E0B
injectResource {
conditions {
name = "activity_main"
layout()
}
injectAsLayout {
Toast.makeText(currentView.context, "Hook this", Toast.LENGTH_SHORT).show()
}
}
inner class ConditionFinder internal constructor()
\u53D8\u66F4\u8BB0\u5F55
v1.0.80
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
Resources \u67E5\u627E\u6761\u4EF6\u5B9E\u73B0\u7C7B\u3002
var name: String
\u53D8\u66F4\u8BB0\u5F55
v1.0.80
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u8BBE\u7F6E Resources \u540D\u79F0\u3002
fun anim()
\u53D8\u66F4\u8BB0\u5F55
v1.0.80
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u8BBE\u7F6E Resources \u7C7B\u578B\u4E3A\u52A8\u753B\u3002
fun animator()
\u53D8\u66F4\u8BB0\u5F55
v1.0.80
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u8BBE\u7F6E Resources \u7C7B\u578B\u4E3A\u5C5E\u6027\u52A8\u753B\u3002
fun bool()
\u53D8\u66F4\u8BB0\u5F55
v1.0.80
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u8BBE\u7F6E Resources \u7C7B\u578B\u4E3A\u5E03\u6717(Boolean)\u3002
fun color()
\u53D8\u66F4\u8BB0\u5F55
v1.0.80
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u8BBE\u7F6E Resources \u7C7B\u578B\u4E3A\u989C\u8272(Color)\u3002
fun dimen()
\u53D8\u66F4\u8BB0\u5F55
v1.0.80
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u8BBE\u7F6E Resources \u7C7B\u578B\u4E3A\u5C3A\u5BF8(Dimention)\u3002
fun drawable()
\u53D8\u66F4\u8BB0\u5F55
v1.0.80
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u8BBE\u7F6E Resources \u7C7B\u578B\u4E3A Drawable\u3002
fun integer()
\u53D8\u66F4\u8BB0\u5F55
v1.0.80
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u8BBE\u7F6E Resources \u7C7B\u578B\u4E3A\u6574\u578B(Integer)\u3002
fun layout()
\u53D8\u66F4\u8BB0\u5F55
v1.0.80
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u8BBE\u7F6E Resources \u7C7B\u578B\u4E3A\u5E03\u5C40(Layout)\u3002
fun plurals()
\u53D8\u66F4\u8BB0\u5F55
v1.0.80
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u8BBE\u7F6E Resources \u7C7B\u578B\u4E3A Plurals\u3002
fun string()
\u53D8\u66F4\u8BB0\u5F55
v1.0.80
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u8BBE\u7F6E Resources \u7C7B\u578B\u4E3A\u5B57\u7B26\u4E32(String)\u3002
fun xml()
\u53D8\u66F4\u8BB0\u5F55
v1.0.80
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u8BBE\u7F6E Resources \u7C7B\u578B\u4E3A Xml\u3002
fun mipmap()
\u53D8\u66F4\u8BB0\u5F55
v1.0.80
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u8BBE\u7F6E Resources \u7C7B\u578B\u4E3A\u4F4D\u56FE(Mipmap)\u3002
fun array()
\u53D8\u66F4\u8BB0\u5F55
v1.1.0
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u8BBE\u7F6E Resources \u7C7B\u578B\u4E3A\u6570\u7EC4(Array)\u3002
inner class Result internal constructor()
\u53D8\u66F4\u8BB0\u5F55
v1.0.80
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u76D1\u542C\u5168\u90E8 Hook \u7ED3\u679C\u5B9E\u73B0\u7C7B\uFF0C\u53EF\u5728\u8FD9\u91CC\u5904\u7406\u5931\u8D25\u4E8B\u4EF6\u76D1\u542C\u3002
inline fun result(initiate: Result.() -> Unit): Result
\u53D8\u66F4\u8BB0\u5F55
v1.0.80
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u521B\u5EFA\u76D1\u542C\u4E8B\u4EF6\u65B9\u6CD5\u4F53\u3002
inline fun by(condition: () -> Boolean): Result
\u53D8\u66F4\u8BB0\u5F55
v1.0.80
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u6DFB\u52A0\u6267\u884C Hook \u9700\u8981\u6EE1\u8DB3\u7684\u6761\u4EF6\uFF0C\u4E0D\u6EE1\u8DB3\u6761\u4EF6\u5C06\u76F4\u63A5\u505C\u6B62 Hook\u3002
fun onHookingFailure(result: (Throwable) -> Unit): Result
\u53D8\u66F4\u8BB0\u5F55
v1.0.80
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u76D1\u542C Hook \u8FC7\u7A0B\u53D1\u751F\u9519\u8BEF\u7684\u56DE\u8C03\u65B9\u6CD5\u3002
fun ignoredHookingFailure(): Result
\u53D8\u66F4\u8BB0\u5F55
v1.0.80
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
`,230),p=[l];function c(r,t){return n(),a("div",null,p)}const d=s(e,[["render",c],["__file","YukiResourcesHookCreator.html.vue"]]);export{d as default};\u5FFD\u7565 Hook \u8FC7\u7A0B\u51FA\u73B0\u7684\u9519\u8BEF\u3002