YukiResourcesHookCreator - class

class YukiResourcesHookCreator internal constructor(internal val packageParam: PackageParam, internal val hookResources: HookResources)

变更记录

v1.0.80 新增

v1.1.0 修改

修正拼写错误的 Creater 命名到 Creator

v1.1.5 修改

私有化构造方法

功能描述

YukiHookAPIResources 核心 Hook 实现类。

injectResource - method

inline fun injectResource(tag: String, initiate: ResourceHookCreator.() -> Unit): ResourceHookCreator.Result

变更记录

v1.0.80 新增

功能描述

注入要 Hook 的 Resources。

功能示例

你可以注入任意 Resources,使用 injectResource 即可创建一个 Hook 对象。

示例如下

injectResource {
    // Your code here.
}

你还可以自定义 tag,方便你在调试的时候能够区分你的 Hook 对象。

示例如下

injectResource(tag = "KuriharaYuki") {
    // Your code here.
}

ResourcesHookCreator - class

inner class ResourcesHookCreator internal constructor(private val tag: String)

变更记录

v1.0.80 新增

v1.1.0 修改

移除 packageName

修正拼写错误的 Creater 命名到 Creator

功能描述

Hook 核心功能实现类。

查找和处理需要 Hook 的 Resources。

resourceId - field

var resourceId: Int

变更记录

v1.0.80 新增

功能描述

直接设置需要替换的 Resources Id。

注意

不建议使用此方法设置目标需要 Hook 的 Resources Id,你可以使用 conditions 方法。

功能示例

你可以直接设置并指定目标 Hook APP 的 Resources Id。

示例如下

injectResource {
    resourceId = 0x7f060001.toInt()
    replaceTo(...)
}

conditions - method

inline fun conditions(initiate: ConditionFinder.() -> Unit)

变更记录

v1.0.80 新增

功能描述

设置 Resources 查找条件。

若你设置了 resourceId 则此方法将不会被使用。

功能示例

你可参考 ConditionFinder 查看详细用法。

示例如下

injectResource {
    conditions {
        name = "test_string"
        string()
    }
    replaceTo(...)
}

replaceTo - method

fun replaceTo(any: Any)

变更记录

v1.0.80 新增

功能描述

替换指定 Resources 为指定的值。

功能示例

你可以替换找到的 Resources 为你想要的值,可以是 StringDrawable 等。

比如我们要替换一个找到的字符串 Resources。

示例如下

injectResource {
    conditions {
        name = "test_string"
        string()
    }
    replaceTo("replace string")
}

或是替换为一个 Drawable,你无需对目标 Resources 实现 fwd 方法或 DrawableLoader

示例如下

injectResource {
    conditions {
        name = "test_drawable"
        drawable()
    }
    replaceTo(ColorDrawable(Color.RED))
}

replaceToTrue - method

fun replaceToTrue()

变更记录

v1.0.80 新增

功能描述

替换指定 Resources 为 true

特别注意

确保目标替换 Resources 的类型为 Boolean

replaceToFalse - method

fun replaceToFalse()

变更记录

v1.0.80 新增

功能描述

替换指定 Resources 为 false

特别注意

确保目标替换 Resources 的类型为 Boolean

replaceToModuleResource - method

fun replaceToModuleResource(resId: Int)

变更记录

v1.0.80 新增

功能描述

替换为当前 Xposed 模块的 Resources。

你可以直接使用模块的 R.string.xxxR.mipmap.xxxR.drawable.xxx 替换 Hook APP 的 Resources。

功能示例

使用此方法可非常方便地使用当前模块的 Resources 去替换目标 Hook APP 的 Resources。

这个过程你无需对目标 Resources 实现 fwd 方法。

比如我们要替换一个字符串。

示例如下

injectResource {
    conditions {
        name = "test_string"
        string()
    }
    replaceToModuleResource(R.string.module_string)
}

还可以替换一些复杂的 Resources,比如 xml 创建的 drawable

示例如下

injectResource {
    conditions {
        name = "test_drawable"
        drawable()
    }
    replaceToModuleResource(R.drawable.module_drawable)
}

replaceTo - method

fun replaceTo(result: (original: Any) -> Any?)

变更记录

v1.2.0 新增

功能描述

替换指定 Resources 为指定的值。

注意

此方法只支持部分类型,例如 StringBoolean

此方法不支持在 HookEntryType.ZYGOTE 时使用。

replaceToModuleResource - method

fun replaceToModuleResource(result: (original: Any) -> Int)

变更记录

v1.2.0 新增

功能描述

替换为当前 Xposed 模块的 Resources。

你可以直接使用模块的 R.string.xxxR.mipmap.xxxR.drawable.xxx 替换 Hook APP 的 Resources。

注意

此方法只支持部分类型,例如 StringBoolean

此方法不支持在 HookEntryType.ZYGOTE 时使用。

injectAsLayout - method

fun injectAsLayout(initiate: YukiResources.LayoutInflatedParam.() -> Unit)

变更记录

v1.0.80 新增

功能描述

作为装载的布局注入。

功能示例

你可以直接注入一个布局监听并修改它的内部 View

示例如下

injectResource {
    conditions {
        name = "activity_main"
        layout()
    }
    injectAsLayout {
        findViewByIdentifier<View>(name = "test_view")?.isVisible = false
        findViewByIdentifier<TextView>(name = "test_text_view")?.text = "Hook this"
    }
}

你还可以通过 currentView 拿到 Context

示例如下

injectResource {
    conditions {
        name = "activity_main"
        layout()
    }
    injectAsLayout {
        Toast.makeText(currentView.context, "Hook this", Toast.LENGTH_SHORT).show()
    }
}

ConditionFinder - class

inner class ConditionFinder internal constructor()

变更记录

v1.0.80 新增

功能描述

Resources 查找条件实现类。

name - field

var name: String

变更记录

v1.0.80 新增

功能描述

设置 Resources 名称。

anim - method

fun anim()

变更记录

v1.0.80 新增

功能描述

设置 Resources 类型为动画。

animator - method

fun animator()

变更记录

v1.0.80 新增

功能描述

设置 Resources 类型为属性动画。

bool - method

fun bool()

变更记录

v1.0.80 新增

功能描述

设置 Resources 类型为布朗(Boolean)。

color - method

fun color()

变更记录

v1.0.80 新增

功能描述

设置 Resources 类型为颜色(Color)。

dimen - method

fun dimen()

变更记录

v1.0.80 新增

功能描述

设置 Resources 类型为尺寸(Dimention)。

drawable - method

fun drawable()

变更记录

v1.0.80 新增

功能描述

设置 Resources 类型为 Drawable。

integer - method

fun integer()

变更记录

v1.0.80 新增

功能描述

设置 Resources 类型为整型(Integer)。

layout - method

fun layout()

变更记录

v1.0.80 新增

功能描述

设置 Resources 类型为布局(Layout)。

plurals - method

fun plurals()

变更记录

v1.0.80 新增

功能描述

设置 Resources 类型为 Plurals。

string - method

fun string()

变更记录

v1.0.80 新增

功能描述

设置 Resources 类型为字符串(String)。

xml - method

fun xml()

变更记录

v1.0.80 新增

功能描述

设置 Resources 类型为 Xml。

mipmap - method

fun mipmap()

变更记录

v1.0.80 新增

功能描述

设置 Resources 类型为位图(Mipmap)。

array - method

fun array()

变更记录

v1.1.0 新增

功能描述

设置 Resources 类型为数组(Array)。

Result - class

inner class Result internal constructor()

变更记录

v1.0.80 新增

功能描述

监听全部 Hook 结果实现类,可在这里处理失败事件监听。

result - method

inline fun result(initiate: Result.() -> Unit): Result

变更记录

v1.0.80 新增

功能描述

创建监听事件方法体。

by - method

inline fun by(condition: () -> Boolean): Result

变更记录

v1.0.80 新增

功能描述

添加执行 Hook 需要满足的条件,不满足条件将直接停止 Hook。

onHookingFailure - method

fun onHookingFailure(result: (Throwable) -> Unit): Result

变更记录

v1.0.80 新增

功能描述

监听 Hook 过程发生错误的回调方法。

ignoredHookingFailure - method

fun ignoredHookingFailure(): Result

变更记录

v1.0.80 新增

功能描述

忽略 Hook 过程出现的错误。