mirror of
https://github.com/topjohnwu/Magisk.git
synced 2024-12-23 08:27:40 +00:00
37 lines
1.0 KiB
Java
37 lines
1.0 KiB
Java
|
package com.topjohnwu.magisk;
|
||
|
|
||
|
import android.content.Context;
|
||
|
import android.content.ContextWrapper;
|
||
|
import android.util.Log;
|
||
|
|
||
|
import java.lang.reflect.Constructor;
|
||
|
import java.lang.reflect.Method;
|
||
|
|
||
|
import io.michaelrocks.paranoid.Obfuscate;
|
||
|
|
||
|
@Obfuscate
|
||
|
public class DelegateRootService extends ContextWrapper {
|
||
|
|
||
|
public DelegateRootService() {
|
||
|
super(null);
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
protected void attachBaseContext(Context base) {
|
||
|
if (DynLoad.inject(base) == null)
|
||
|
return;
|
||
|
|
||
|
// Create the actual RootService and call its attachBaseContext
|
||
|
try {
|
||
|
Constructor<?> ctor = DynLoad.apkData.getRootService().getConstructor(Object.class);
|
||
|
ctor.setAccessible(true);
|
||
|
Object service = ctor.newInstance(this);
|
||
|
Method m = ContextWrapper.class.getDeclaredMethod("attachBaseContext", Context.class);
|
||
|
m.setAccessible(true);
|
||
|
m.invoke(service, base);
|
||
|
} catch (Exception e) {
|
||
|
Log.e(DelegateRootService.class.getSimpleName(), "", e);
|
||
|
}
|
||
|
}
|
||
|
}
|