11package io.github.a13e300.myinjector
22
3- import android.content.res.XModuleResources
4- import de.robv.android.xposed.IXposedHookLoadPackage
5- import de.robv.android.xposed.IXposedHookZygoteInit
6- import de.robv.android.xposed.callbacks.XC_LoadPackage
3+ import android.content.res.Resources
4+ import io.github.a13e300.myinjector.arch.newModuleResource
75import io.github.a13e300.myinjector.bridge.LoadPackageParam
86import io.github.a13e300.myinjector.system_server.SystemServerHookLoader
97import io.github.a13e300.myinjector.telegram.TelegramHandler
8+ import io.github.libxposed.api.XposedModule
9+ import io.github.libxposed.api.XposedModuleInterface
1010
11- class Entry : IXposedHookLoadPackage , IXposedHookZygoteInit {
11+ class Entry : XposedModule () {
1212 companion object {
1313 lateinit var modulePath: String
14- val moduleRes: XModuleResources by lazy {
15- XModuleResources .createInstance(
16- modulePath,
17- null
18- )
14+ val moduleRes: Resources by lazy {
15+ newModuleResource(modulePath)
1916 }
17+ lateinit var instance: Entry
2018 }
2119
22- override fun initZygote (startupParam : IXposedHookZygoteInit .StartupParam ) {
23- modulePath = startupParam.modulePath
20+ private lateinit var processName: String
21+
22+ override fun onModuleLoaded (param : XposedModuleInterface .ModuleLoadedParam ) {
23+ instance = this
24+ modulePath = moduleApplicationInfo.sourceDir
25+ processName = param.processName
2426 }
2527
26- override fun handleLoadPackage ( lpparam : XC_LoadPackage . LoadPackageParam ) {
27- logI(" MyInjector: ${lpparam .packageName} ${lpparam. processName} " )
28- val handler = when (lpparam .packageName) {
28+ override fun onPackageReady ( param : XposedModuleInterface . PackageReadyParam ) {
29+ logI(" MyInjector: ${param .packageName} ${processName} " )
30+ val handler = when (param .packageName) {
2931 " com.fooview.android.fooview" -> FvXposedHandler ()
3032 " com.lbe.security.miui" -> LbeHandler ()
3133 " com.miui.securitycenter" -> MIUISecurityCenterHandler ()
@@ -49,10 +51,6 @@ class Entry : IXposedHookLoadPackage, IXposedHookZygoteInit {
4951 " com.android.chrome" , " com.kiwibrowser.browser" -> ChromeHandler
5052 " com.baidu.input" -> BaiduIMEHandler ()
5153 " com.miui.home" -> MiuiHomeHandler ()
52- " android" -> {
53- if (lpparam.processName == " android" ) SystemServerHookLoader
54- else return
55- }
5654 " com.android.settings" -> SettingsHandler ()
5755 " app.landrop.landrop_flutter" -> LanDropHandler ()
5856 " com.android.intentresolver" -> IntentResolverHandler ()
@@ -66,6 +64,27 @@ class Entry : IXposedHookLoadPackage, IXposedHookZygoteInit {
6664 else -> return
6765 }
6866 logPrefix = " [${handler.javaClass.simpleName} ] "
69- handler.hook(LoadPackageParam (lpparam))
67+ handler.hook(
68+ LoadPackageParam (
69+ param.packageName,
70+ processName,
71+ param.classLoader,
72+ param.applicationInfo,
73+ param.isFirstPackage
74+ )
75+ )
76+ }
77+
78+ override fun onSystemServerStarting (param : XposedModuleInterface .SystemServerStartingParam ) {
79+ logPrefix = " [${SystemServerHookLoader .javaClass.simpleName} ] "
80+ SystemServerHookLoader .hook(
81+ LoadPackageParam (
82+ " android" ,
83+ " android" ,
84+ param.classLoader,
85+ null ,
86+ true
87+ )
88+ )
7089 }
7190}
0 commit comments