mirror of
https://github.com/HighCapable/YukiHookAPI.git
synced 2025-09-04 09:45:19 +08:00
Fix YukiHookModuleStatus not found error and added some type in android
This commit is contained in:
@@ -219,13 +219,11 @@ loadZygote {
|
||||
}
|
||||
```
|
||||
|
||||
这样就实现了上述的 Hook 功能。
|
||||
|
||||
### Hook 系统框架
|
||||
|
||||
在 `YukiHookAPI` 中,Hook 系统框架的实现非常简单。
|
||||
|
||||
假设我们要全局 Hook 一个系统 `Activity` 的 `onCreate` 事件
|
||||
假设,你要得到 `ApplicationInfo` 与 `PackageInfo` 并对它们进行一些操作。
|
||||
|
||||
在 `encase` 方法体中添加代码。
|
||||
|
||||
@@ -233,17 +231,11 @@ loadZygote {
|
||||
|
||||
```kotlin
|
||||
loadSystem {
|
||||
ActivityClass.hook {
|
||||
injectMember {
|
||||
method {
|
||||
name = "onCreate"
|
||||
param(BundleClass)
|
||||
returnType = UnitType
|
||||
}
|
||||
afterHook {
|
||||
// Your code here.
|
||||
}
|
||||
}
|
||||
ApplicationInfoClass.hook {
|
||||
// Your code here.
|
||||
}
|
||||
PackageInfoClass.hook {
|
||||
// Your code here.
|
||||
}
|
||||
}
|
||||
```
|
||||
|
@@ -184,38 +184,39 @@ object CodeSourceFileTemplate {
|
||||
" YukiHookBridge.callXposedLoaded(isZygoteLoaded, lpparam, resparam)\n" +
|
||||
" }\n" +
|
||||
"\n" +
|
||||
" private fun hookModuleAppStatus(lpparam: XC_LoadPackage.LoadPackageParam? = this.lpparam, isHookResourcesStatus: Boolean = false) {\n" +
|
||||
" lpparam?.let { this.lpparam = it }\n" +
|
||||
" if (isHookResourcesStatus.not()) {\n" +
|
||||
" XposedHelpers.findAndHookMethod(\n" +
|
||||
" private fun hookModuleAppStatus(lpparam: XC_LoadPackage.LoadPackageParam? = this.lpparam, isHookResourcesStatus: Boolean = false) =\n" +
|
||||
" runCatching {\n" +
|
||||
" lpparam?.let { this.lpparam = it }\n" +
|
||||
" if (isHookResourcesStatus.not()) {\n" +
|
||||
" XposedHelpers.findAndHookMethod(\n" +
|
||||
" YukiHookModuleStatus::class.java.name,\n" +
|
||||
" this.lpparam?.classLoader,\n" +
|
||||
" \"$IS_ACTIVE_METHOD_NAME\",\n" +
|
||||
" object : XC_MethodReplacement() {\n" +
|
||||
" override fun replaceHookedMethod(param: MethodHookParam?) = true\n" +
|
||||
" })\n" +
|
||||
" XposedHelpers.findAndHookMethod(\n" +
|
||||
" YukiHookModuleStatus::class.java.name,\n" +
|
||||
" this.lpparam?.classLoader,\n" +
|
||||
" \"$GET_XPOSED_TAG_METHOD_NAME\",\n" +
|
||||
" object : XC_MethodReplacement() {\n" +
|
||||
" override fun replaceHookedMethod(param: MethodHookParam?) = YukiHookBridge.executorName\n" +
|
||||
" })\n" +
|
||||
" XposedHelpers.findAndHookMethod(\n" +
|
||||
" YukiHookModuleStatus::class.java.name,\n" +
|
||||
" this.lpparam?.classLoader,\n" +
|
||||
" \"$GET_XPOSED_VERSION_METHOD_NAME\",\n" +
|
||||
" object : XC_MethodReplacement() {\n" +
|
||||
" override fun replaceHookedMethod(param: MethodHookParam?) = YukiHookBridge.executorVersion\n" +
|
||||
" })\n" +
|
||||
" } else XposedHelpers.findAndHookMethod(\n" +
|
||||
" YukiHookModuleStatus::class.java.name,\n" +
|
||||
" this.lpparam?.classLoader,\n" +
|
||||
" \"$IS_ACTIVE_METHOD_NAME\",\n" +
|
||||
" \"$HAS_RESOURCES_HOOK_METHOD_NAME\",\n" +
|
||||
" object : XC_MethodReplacement() {\n" +
|
||||
" override fun replaceHookedMethod(param: MethodHookParam?) = true\n" +
|
||||
" })\n" +
|
||||
" XposedHelpers.findAndHookMethod(\n" +
|
||||
" YukiHookModuleStatus::class.java.name,\n" +
|
||||
" this.lpparam?.classLoader,\n" +
|
||||
" \"$GET_XPOSED_TAG_METHOD_NAME\",\n" +
|
||||
" object : XC_MethodReplacement() {\n" +
|
||||
" override fun replaceHookedMethod(param: MethodHookParam?) = YukiHookBridge.executorName\n" +
|
||||
" })\n" +
|
||||
" XposedHelpers.findAndHookMethod(\n" +
|
||||
" YukiHookModuleStatus::class.java.name,\n" +
|
||||
" this.lpparam?.classLoader,\n" +
|
||||
" \"$GET_XPOSED_VERSION_METHOD_NAME\",\n" +
|
||||
" object : XC_MethodReplacement() {\n" +
|
||||
" override fun replaceHookedMethod(param: MethodHookParam?) = YukiHookBridge.executorVersion\n" +
|
||||
" })\n" +
|
||||
" } else XposedHelpers.findAndHookMethod(\n" +
|
||||
" YukiHookModuleStatus::class.java.name,\n" +
|
||||
" this.lpparam?.classLoader,\n" +
|
||||
" \"$HAS_RESOURCES_HOOK_METHOD_NAME\",\n" +
|
||||
" object : XC_MethodReplacement() {\n" +
|
||||
" override fun replaceHookedMethod(param: MethodHookParam?) = true\n" +
|
||||
" })\n" +
|
||||
" }\n" +
|
||||
" }\n" +
|
||||
"\n" +
|
||||
" @YukiGenerateApi\n" +
|
||||
" fun callInitZygote(sparam: IXposedHookZygoteInit.StartupParam?) {\n" +
|
||||
|
@@ -91,6 +91,18 @@ val ContextWrapperClass get() = ContextWrapper::class.java
|
||||
*/
|
||||
val ApplicationClass get() = Application::class.java
|
||||
|
||||
/**
|
||||
* 获得 [ApplicationInfo] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val ApplicationInfoClass get() = ApplicationInfo::class.java
|
||||
|
||||
/**
|
||||
* 获得 [PackageInfo] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val PackageInfoClass get() = PackageInfo::class.java
|
||||
|
||||
/**
|
||||
* 获得 [ApplicationPackageManager] 类型
|
||||
* @return [Class]
|
||||
|
Reference in New Issue
Block a user