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 系统框架 ### Hook 系统框架
`YukiHookAPI`Hook 系统框架的实现非常简单。 `YukiHookAPI`Hook 系统框架的实现非常简单。
假设我们要全局 Hook 一个系统 `Activity` `onCreate` 事件 假设,你要得到 `ApplicationInfo` `PackageInfo` 并对它们进行一些操作。
`encase` 方法体中添加代码。 `encase` 方法体中添加代码。
@@ -233,17 +231,11 @@ loadZygote {
```kotlin ```kotlin
loadSystem { loadSystem {
ActivityClass.hook { ApplicationInfoClass.hook {
injectMember { // Your code here.
method { }
name = "onCreate" PackageInfoClass.hook {
param(BundleClass) // Your code here.
returnType = UnitType
}
afterHook {
// Your code here.
}
}
} }
} }
``` ```

View File

@@ -184,38 +184,39 @@ object CodeSourceFileTemplate {
" YukiHookBridge.callXposedLoaded(isZygoteLoaded, lpparam, resparam)\n" + " YukiHookBridge.callXposedLoaded(isZygoteLoaded, lpparam, resparam)\n" +
" }\n" + " }\n" +
"\n" + "\n" +
" private fun hookModuleAppStatus(lpparam: XC_LoadPackage.LoadPackageParam? = this.lpparam, isHookResourcesStatus: Boolean = false) {\n" + " private fun hookModuleAppStatus(lpparam: XC_LoadPackage.LoadPackageParam? = this.lpparam, isHookResourcesStatus: Boolean = false) =\n" +
" lpparam?.let { this.lpparam = it }\n" + " runCatching {\n" +
" if (isHookResourcesStatus.not()) {\n" + " lpparam?.let { this.lpparam = it }\n" +
" XposedHelpers.findAndHookMethod(\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" + " YukiHookModuleStatus::class.java.name,\n" +
" this.lpparam?.classLoader,\n" + " this.lpparam?.classLoader,\n" +
" \"$IS_ACTIVE_METHOD_NAME\",\n" + " \"$HAS_RESOURCES_HOOK_METHOD_NAME\",\n" +
" object : XC_MethodReplacement() {\n" + " object : XC_MethodReplacement() {\n" +
" override fun replaceHookedMethod(param: MethodHookParam?) = true\n" + " override fun replaceHookedMethod(param: MethodHookParam?) = true\n" +
" })\n" + " })\n" +
" XposedHelpers.findAndHookMethod(\n" + " }\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" + " @YukiGenerateApi\n" +
" fun callInitZygote(sparam: IXposedHookZygoteInit.StartupParam?) {\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 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] 类型 * 获得 [ApplicationPackageManager] 类型
* @return [Class] * @return [Class]