@Override protected void onBindMethods() { super.onBindMethods(); addMethodProxy(new ResultStaticMethodProxy("addPermissionAsync", true)); addMethodProxy(new ResultStaticMethodProxy("addPermission", true)); addMethodProxy(new ResultStaticMethodProxy("performDexOpt", true)); addMethodProxy(new ResultStaticMethodProxy("performDexOptIfNeeded", false)); addMethodProxy(new ResultStaticMethodProxy("performDexOptSecondary", true)); addMethodProxy(new ResultStaticMethodProxy("addOnPermissionsChangeListener", 0)); addMethodProxy(new ResultStaticMethodProxy("removeOnPermissionsChangeListener", 0)); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { addMethodProxy(new ResultStaticMethodProxy("checkPackageStartable", 0)); } if (BuildCompat.isOreo()) { addMethodProxy(new ResultStaticMethodProxy("notifyDexLoad", 0)); addMethodProxy(new ResultStaticMethodProxy("notifyPackageUse", 0)); addMethodProxy(new ResultStaticMethodProxy("setInstantAppCookie", false)); addMethodProxy(new ResultStaticMethodProxy("isInstantApp", false)); } }
@Override public void inject() throws Throwable { final IInterface hookedPM = getInvocationStub().getProxyInterface(); ActivityThread.sPackageManager.set(hookedPM); BinderInvocationStub pmHookBinder = new BinderInvocationStub(getInvocationStub().getBaseInterface()); pmHookBinder.copyMethodProxies(getInvocationStub()); pmHookBinder.replaceService("package"); }
addInjector(new PackageManagerStub()); return; addInjector(new LibCoreStub()); addInjector(new ActivityManagerStub()); addInjector(new PackageManagerStub()); if (Build.VERSION.SDK_INT >= 28) { addInjector(new TransactionHandlerStub());
addInjector(new PackageManagerStub()); return; addInjector(new LibCoreStub()); addInjector(new ActivityManagerStub()); addInjector(new PackageManagerStub()); addInjector(HCallbackStub.getDefault()); addInjector(new ISmsStub());
@Override public boolean isEnvBad() { return getInvocationStub().getProxyInterface() != ActivityThread.sPackageManager.get(); } }
@Override protected void onBindMethods() { super.onBindMethods(); addMethodProxy(new ResultStaticMethodProxy("addPermissionAsync", true)); addMethodProxy(new ResultStaticMethodProxy("addPermission", true)); addMethodProxy(new ResultStaticMethodProxy("performDexOpt", true)); addMethodProxy(new ResultStaticMethodProxy("performDexOptIfNeeded", false)); addMethodProxy(new ResultStaticMethodProxy("performDexOptSecondary", true)); addMethodProxy(new ResultStaticMethodProxy("addOnPermissionsChangeListener", 0)); addMethodProxy(new ResultStaticMethodProxy("removeOnPermissionsChangeListener", 0)); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { addMethodProxy(new ResultStaticMethodProxy("checkPackageStartable", 0)); } if (BuildCompat.isOreo()) { addMethodProxy(new ResultStaticMethodProxy("notifyDexLoad", 0)); addMethodProxy(new ResultStaticMethodProxy("notifyPackageUse", 0)); addMethodProxy(new ResultStaticMethodProxy("setInstantAppCookie", false)); addMethodProxy(new ResultStaticMethodProxy("isInstantApp", false)); } }
addInjector(new PackageManagerStub()); return; addInjector(new LibCoreStub()); addInjector(new ActivityManagerStub()); addInjector(new PackageManagerStub()); addInjector(HCallbackStub.getDefault()); addInjector(new ISmsStub());
@Override public void inject() throws Throwable { final IInterface hookedPM = getInvocationStub().getProxyInterface(); ActivityThread.sPackageManager.set(hookedPM); BinderInvocationStub pmHookBinder = new BinderInvocationStub(getInvocationStub().getBaseInterface()); pmHookBinder.copyMethodProxies(getInvocationStub()); pmHookBinder.replaceService("package"); }
@Override protected void onBindMethods() { super.onBindMethods(); addMethodProxy(new ResultStaticMethodProxy("addPermissionAsync", true)); addMethodProxy(new ResultStaticMethodProxy("addPermission", true)); addMethodProxy(new ResultStaticMethodProxy("performDexOpt", true)); addMethodProxy(new ResultStaticMethodProxy("performDexOptIfNeeded", false)); addMethodProxy(new ResultStaticMethodProxy("performDexOptSecondary", true)); addMethodProxy(new ResultStaticMethodProxy("addOnPermissionsChangeListener", 0)); addMethodProxy(new ResultStaticMethodProxy("removeOnPermissionsChangeListener", 0)); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { addMethodProxy(new ResultStaticMethodProxy("checkPackageStartable", 0)); } if (BuildCompat.isOreo()) { addMethodProxy(new ResultStaticMethodProxy("notifyDexLoad", 0)); addMethodProxy(new ResultStaticMethodProxy("notifyPackageUse", 0)); addMethodProxy(new ResultStaticMethodProxy("setInstantAppCookie", false)); addMethodProxy(new ResultStaticMethodProxy("isInstantApp", false)); } }
@Override public boolean isEnvBad() { return getInvocationStub().getProxyInterface() != ActivityThread.sPackageManager.get(); } }
@Override public boolean isEnvBad() { return getInvocationStub().getProxyInterface() != ActivityThread.sPackageManager.get(); } }
@Override public void inject() throws Throwable { final IInterface hookedPM = getInvocationStub().getProxyInterface(); ActivityThread.sPackageManager.set(hookedPM); BinderInvocationStub pmHookBinder = new BinderInvocationStub(getInvocationStub().getBaseInterface()); pmHookBinder.copyMethodProxies(getInvocationStub()); pmHookBinder.replaceService("package"); }