Fix YukiHookModuleStatus not found error and added some type in android

This commit is contained in:
2022-05-04 09:56:07 +08:00
parent 4fc64e0a02
commit 73204588c0
3 changed files with 46 additions and 41 deletions

View File

@@ -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.
}
}
```

View File

@@ -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" +

View File

@@ -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]