IPackageManagerHookHandle.java 源代码
package com.x8zs.morgoo.droidplugin.hook.handle;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PermissionGroupInfo;
import android.content.pm.PermissionInfo;
import android.content.pm.ProviderInfo;
import android.content.pm.ResolveInfo;
import android.content.pm.ServiceInfo;
import android.content.pm.Signature;
import android.text.TextUtils;
import com.x8zs.morgoo.droidplugin.hook.BaseHookHandle;
import com.x8zs.morgoo.droidplugin.hook.HookedMethodHandler;
import com.x8zs.morgoo.droidplugin.pm.PluginManager;
import com.x8zs.morgoo.helper.Log;
import com.x8zs.morgoo.helper.compat.IPackageDataObserverCompat;
import com.x8zs.morgoo.helper.compat.ParceledListSliceCompat;
import java.io.InputStream;
import java.lang.reflect.Method;
import java.util.List;
public class IPackageManagerHookHandle extends BaseHookHandle {
private class addPackageToPreferred extends HookedMethodHandler {
public addPackageToPreferred(Context context) {
super(context);
}
@Override
public boolean beforeInvoke(Object obj, Method method, Object[] objArr) {
if (objArr != null && objArr.length > 0) {
Object obj2 = objArr[0];
if (obj2 instanceof String) {
if (PluginManager.getInstance().isPluginPackage((String) obj2)) {
objArr[0] = this.mHostContext.getPackageName();
}
}
}
return super.beforeInvoke(obj, method, objArr);
}
}
private class addPermission extends HookedMethodHandler {
public addPermission(Context context) {
super(context);
}
}
private class addPreferredActivity extends HookedMethodHandler {
public addPreferredActivity(Context context) {
super(context);
}
}
private class canonicalToCurrentPackageNames extends HookedMethodHandler {
public canonicalToCurrentPackageNames(Context context) {
super(context);
}
}
private class checkPermission extends HookedMethodHandler {
public checkPermission(Context context) {
super(context);
}
@Override
public boolean beforeInvoke(Object obj, Method method, Object[] objArr) {
if (objArr != null && objArr.length > 1) {
Object obj2 = objArr[1];
if (obj2 instanceof String) {
if (PluginManager.getInstance().isPluginPackage((String) obj2)) {
objArr[1] = this.mHostContext.getPackageName();
}
}
}
return super.beforeInvoke(obj, method, objArr);
}
}
private class checkSignatures extends HookedMethodHandler {
public checkSignatures(Context context) {
super(context);
}
@Override
public boolean beforeInvoke(Object obj, Method method, Object[] objArr) {
String str;
Object obj2;
Object obj3;
String str2 = null;
if (objArr != null && (obj3 = objArr[0]) != null && (obj3 instanceof String)) {
str = (String) obj3;
} else {
str = null;
}
if (objArr != null && (obj2 = objArr[1]) != null && (obj2 instanceof String)) {
str2 = (String) obj2;
}
if (!TextUtils.isEmpty(str) && !TextUtils.isEmpty(str2)) {
PluginManager pluginManager = PluginManager.getInstance();
if (pluginManager.isPluginPackage(str) && pluginManager.isPluginPackage(str2)) {
setFakedResult(Integer.valueOf(pluginManager.checkSignatures(str, str2)));
return true;
}
}
return super.beforeInvoke(obj, method, objArr);
}
}
private class checkUidPermission extends HookedMethodHandler {
public checkUidPermission(Context context) {
super(context);
}
}
private class clearApplicationUserData extends HookedMethodHandler {
public clearApplicationUserData(Context context) {
super(context);
}
@Override
public boolean beforeInvoke(Object obj, Method method, Object[] objArr) {
if (objArr != null && objArr.length >= 2 && (objArr[0] instanceof String) && IPackageDataObserverCompat.isIPackageDataObserver(objArr[1])) {
String str = (String) objArr[0];
if (PluginManager.getInstance().isPluginPackage(str)) {
PluginManager.getInstance().clearApplicationUserData(str, objArr[1]);
return true;
}
}
return super.beforeInvoke(obj, method, objArr);
}
}
private class clearPackagePreferredActivities extends HookedMethodHandler {
public clearPackagePreferredActivities(Context context) {
super(context);
}
@Override
public boolean beforeInvoke(Object obj, Method method, Object[] objArr) {
if (objArr != null && objArr.length > 0) {
Object obj2 = objArr[0];
if (obj2 instanceof String) {
if (PluginManager.getInstance().isPluginPackage((String) obj2)) {
objArr[0] = this.mHostContext.getPackageName();
}
}
}
return super.beforeInvoke(obj, method, objArr);
}
}
private class currentToCanonicalPackageNames extends HookedMethodHandler {
public currentToCanonicalPackageNames(Context context) {
super(context);
}
}
private class deleteApplicationCacheFiles extends HookedMethodHandler {
public deleteApplicationCacheFiles(Context context) {
super(context);
}
@Override
public boolean beforeInvoke(Object obj, Method method, Object[] objArr) {
if (objArr != null && objArr.length >= 2 && (objArr[0] instanceof String) && IPackageDataObserverCompat.isIPackageDataObserver(objArr[1])) {
String str = (String) objArr[0];
if (PluginManager.getInstance().isPluginPackage(str)) {
PluginManager.getInstance().deleteApplicationCacheFiles(str, objArr[1]);
return true;
}
}
return super.beforeInvoke(obj, method, objArr);
}
}
private class getActivityInfo extends HookedMethodHandler {
public getActivityInfo(Context context) {
super(context);
}
@Override
public boolean beforeInvoke(Object obj, Method method, Object[] objArr) {
if (objArr != null && objArr.length >= 2) {
Object obj2 = objArr[0];
if (obj2 instanceof ComponentName) {
Object obj3 = objArr[1];
if (obj3 instanceof Integer) {
int intValue = ((Integer) obj3).intValue();
ActivityInfo activityInfo = PluginManager.getInstance().getActivityInfo((ComponentName) obj2, intValue);
if (activityInfo != null) {
setFakedResult(activityInfo);
return true;
}
}
}
}
return super.beforeInvoke(obj, method, objArr);
}
}
private class getAllPermissionGroups extends HookedMethodHandler {
public getAllPermissionGroups(Context context) {
super(context);
}
@Override
public void afterInvoke(Object obj, Method method, Object[] objArr, Object obj2) {
if (objArr != null && (obj2 instanceof List) && objArr.length > 0) {
Object obj3 = objArr[0];
if (obj3 instanceof Integer) {
List<PermissionGroupInfo> allPermissionGroups = PluginManager.getInstance().getAllPermissionGroups(((Integer) obj3).intValue());
if (allPermissionGroups != null && allPermissionGroups.size() > 0) {
((List) obj2).addAll(allPermissionGroups);
}
}
}
super.afterInvoke(obj, method, objArr, obj2);
}
}
private class getApplicationEnabledSetting extends HookedMethodHandler {
public getApplicationEnabledSetting(Context context) {
super(context);
}
@Override
public boolean beforeInvoke(Object obj, Method method, Object[] objArr) {
if (objArr != null && objArr.length > 0) {
Object obj2 = objArr[0];
if (obj2 instanceof String) {
if (PluginManager.getInstance().isPluginPackage((String) obj2)) {
setFakedResult(0);
return true;
}
}
}
return super.beforeInvoke(obj, method, objArr);
}
}
private class getApplicationInfo extends HookedMethodHandler {
public getApplicationInfo(Context context) {
super(context);
}
@Override
public void afterInvoke(Object obj, Method method, Object[] objArr, Object obj2) {
super.afterInvoke(obj, method, objArr, obj2);
}
}
private class getComponentEnabledSetting extends HookedMethodHandler {
public getComponentEnabledSetting(Context context) {
super(context);
}
@Override
public boolean beforeInvoke(Object obj, Method method, Object[] objArr) {
if (objArr != null && objArr.length > 0) {
Object obj2 = objArr[0];
if (obj2 instanceof ComponentName) {
if (PluginManager.getInstance().isPluginPackage((ComponentName) obj2)) {
setFakedResult(0);
return true;
}
}
}
return super.beforeInvoke(obj, method, objArr);
}
}
private class getFlagsForUid extends HookedMethodHandler {
public getFlagsForUid(Context context) {
super(context);
}
}
private class getHomeActivities extends HookedMethodHandler {
public getHomeActivities(Context context) {
super(context);
}
}
private class getInstalledApplications extends HookedMethodHandler {
public getInstalledApplications(Context context) {
super(context);
}
@Override
public void afterInvoke(Object obj, Method method, Object[] objArr, Object obj2) {
try {
if (ParceledListSliceCompat.isParceledListSlice(obj2)) {
} else if ((obj2 instanceof List) && objArr.length > 0) {
Object obj3 = objArr[0];
if (obj3 instanceof Integer) {
List<ApplicationInfo> installedApplications = PluginManager.getInstance().getInstalledApplications(((Integer) obj3).intValue());
if (installedApplications != null && installedApplications.size() > 0) {
((List) obj2).addAll(installedApplications);
}
}
}
} catch (Exception e6) {
Log.e(Log.TAG, "fake getInstalledApplications", e6, new Object[0]);
}
super.afterInvoke(obj, method, objArr, obj2);
}
@Override
public boolean beforeInvoke(Object obj, Method method, Object[] objArr) {
return super.beforeInvoke(obj, method, objArr);
}
}
private class getInstalledPackages extends HookedMethodHandler {
public getInstalledPackages(Context context) {
super(context);
}
@Override
public void afterInvoke(Object obj, Method method, Object[] objArr, Object obj2) {
super.afterInvoke(obj, method, objArr, obj2);
}
@Override
public boolean beforeInvoke(Object obj, Method method, Object[] objArr) {
return super.beforeInvoke(obj, method, objArr);
}
}
private class getInstallerPackageName extends HookedMethodHandler {
public getInstallerPackageName(Context context) {
super(context);
}
@Override
public boolean beforeInvoke(Object obj, Method method, Object[] objArr) {
if (objArr != null && objArr.length > 0) {
Object obj2 = objArr[0];
if (obj2 instanceof String) {
if (PluginManager.getInstance().isPluginPackage((String) obj2)) {
setFakedResult(this.mHostContext.getPackageName());
return true;
}
}
}
return super.beforeInvoke(obj, method, objArr);
}
}
private class getInstrumentationInfo extends HookedMethodHandler {
public getInstrumentationInfo(Context context) {
super(context);
}
}
private class getLastChosenActivity extends HookedMethodHandler {
public getLastChosenActivity(Context context) {
super(context);
}
}
private class getNameForUid extends HookedMethodHandler {
public getNameForUid(Context context) {
super(context);
}
}
private class getPackageGids extends HookedMethodHandler {
public getPackageGids(Context context) {
super(context);
}
@Override
public boolean beforeInvoke(Object obj, Method method, Object[] objArr) {
String str;
if (objArr != null && objArr.length > 0) {
Object obj2 = objArr[0];
if (obj2 != null && (obj2 instanceof String)) {
str = (String) obj2;
} else {
str = null;
}
if (str != null && PluginManager.getInstance().isPluginPackage(str)) {
objArr[0] = this.mHostContext.getPackageName();
}
}
return super.beforeInvoke(obj, method, objArr);
}
}
private class getPackageInfo extends HookedMethodHandler {
private byte[] mSig;
public getPackageInfo(Context context) {
super(context);
try {
InputStream open = context.getAssets().open("x8zssig");
byte[] bArr = new byte[open.available()];
this.mSig = bArr;
open.read(bArr);
open.close();
} catch (Exception e6) {
e6.printStackTrace();
}
}
@Override
public void afterInvoke(Object obj, Method method, Object[] objArr, Object obj2) {
Object obj3;
super.afterInvoke(obj, method, objArr, obj2);
PackageInfo packageInfo = (PackageInfo) obj2;
if (packageInfo != null && this.mSig != null && (obj3 = objArr[0]) != null && obj3.toString().equals(this.mHostContext.getPackageName())) {
packageInfo.signatures = new Signature[]{new Signature(this.mSig)};
}
}
}
private class getPackageSizeInfo extends HookedMethodHandler {
public getPackageSizeInfo(Context context) {
super(context);
}
@Override
public boolean beforeInvoke(Object obj, Method method, Object[] objArr) {
return super.beforeInvoke(obj, method, objArr);
}
}
private class getPackageUid extends HookedMethodHandler {
public getPackageUid(Context context) {
super(context);
}
@Override
public boolean beforeInvoke(Object obj, Method method, Object[] objArr) {
String str;
if (objArr != null && objArr.length > 0) {
Object obj2 = objArr[0];
if (obj2 != null && (obj2 instanceof String)) {
str = (String) obj2;
} else {
str = null;
}
if (str != null && PluginManager.getInstance().isPluginPackage(str)) {
objArr[0] = this.mHostContext.getPackageName();
}
}
return super.beforeInvoke(obj, method, objArr);
}
}
private class getPackagesForUid extends HookedMethodHandler {
public getPackagesForUid(Context context) {
super(context);
}
}
private class getPackagesHoldingPermissions extends HookedMethodHandler {
public getPackagesHoldingPermissions(Context context) {
super(context);
}
}
private class getPermissionGroupInfo extends HookedMethodHandler {
public getPermissionGroupInfo(Context context) {
super(context);
}
@Override
public boolean beforeInvoke(Object obj, Method method, Object[] objArr) {
if (objArr != null && objArr.length > 1) {
Object obj2 = objArr[0];
if (obj2 instanceof String) {
Object obj3 = objArr[1];
if (obj3 instanceof Integer) {
int intValue = ((Integer) obj3).intValue();
PermissionGroupInfo permissionGroupInfo = PluginManager.getInstance().getPermissionGroupInfo((String) obj2, intValue);
if (permissionGroupInfo != null) {
setFakedResult(permissionGroupInfo);
return true;
}
}
}
}
return super.beforeInvoke(obj, method, objArr);
}
}
private class getPermissionInfo extends HookedMethodHandler {
public getPermissionInfo(Context context) {
super(context);
}
@Override
public boolean beforeInvoke(Object obj, Method method, Object[] objArr) {
if (objArr != null && objArr.length > 1) {
Object obj2 = objArr[0];
if (obj2 instanceof String) {
Object obj3 = objArr[1];
if (obj3 instanceof Integer) {
int intValue = ((Integer) obj3).intValue();
PermissionInfo permissionInfo = PluginManager.getInstance().getPermissionInfo((String) obj2, intValue);
if (permissionInfo != null) {
setFakedResult(permissionInfo);
return true;
}
}
}
}
return super.beforeInvoke(obj, method, objArr);
}
}
private class getPersistentApplications extends HookedMethodHandler {
public getPersistentApplications(Context context) {
super(context);
}
}
private class getPreferredActivities extends HookedMethodHandler {
public getPreferredActivities(Context context) {
super(context);
}
}
private class getPreferredPackages extends HookedMethodHandler {
public getPreferredPackages(Context context) {
super(context);
}
}
private class getProviderInfo extends HookedMethodHandler {
public getProviderInfo(Context context) {
super(context);
}
@Override
public boolean beforeInvoke(Object obj, Method method, Object[] objArr) {
if (objArr != null && objArr.length >= 2) {
Object obj2 = objArr[0];
if (obj2 instanceof ComponentName) {
Object obj3 = objArr[1];
if (obj3 instanceof Integer) {
int intValue = ((Integer) obj3).intValue();
ProviderInfo providerInfo = PluginManager.getInstance().getProviderInfo((ComponentName) obj2, intValue);
if (providerInfo != null) {
setFakedResult(providerInfo);
return true;
}
}
}
}
return super.beforeInvoke(obj, method, objArr);
}
}
private class getReceiverInfo extends HookedMethodHandler {
public getReceiverInfo(Context context) {
super(context);
}
@Override
public boolean beforeInvoke(Object obj, Method method, Object[] objArr) {
if (objArr != null && objArr.length >= 2) {
Object obj2 = objArr[0];
if (obj2 instanceof ComponentName) {
Object obj3 = objArr[1];
if (obj3 instanceof Integer) {
int intValue = ((Integer) obj3).intValue();
ActivityInfo receiverInfo = PluginManager.getInstance().getReceiverInfo((ComponentName) obj2, intValue);
if (receiverInfo != null) {
setFakedResult(receiverInfo);
return true;
}
}
}
}
return super.beforeInvoke(obj, method, objArr);
}
}
private class getServiceInfo extends HookedMethodHandler {
public getServiceInfo(Context context) {
super(context);
}
@Override
public boolean beforeInvoke(Object obj, Method method, Object[] objArr) {
if (objArr != null && objArr.length >= 2) {
Object obj2 = objArr[0];
if (obj2 instanceof ComponentName) {
Object obj3 = objArr[1];
if (obj3 instanceof Integer) {
int intValue = ((Integer) obj3).intValue();
ServiceInfo serviceInfo = PluginManager.getInstance().getServiceInfo((ComponentName) obj2, intValue);
if (serviceInfo != null) {
setFakedResult(serviceInfo);
return true;
}
}
}
}
return super.beforeInvoke(obj, method, objArr);
}
}
private class getUidForSharedUser extends HookedMethodHandler {
public getUidForSharedUser(Context context) {
super(context);
}
}
private class grantPermission extends HookedMethodHandler {
public grantPermission(Context context) {
super(context);
}
@Override
public boolean beforeInvoke(Object obj, Method method, Object[] objArr) {
if (objArr != null && objArr.length > 0) {
Object obj2 = objArr[0];
if (obj2 instanceof String) {
if (PluginManager.getInstance().isPluginPackage((String) obj2)) {
objArr[0] = this.mHostContext.getPackageName();
}
}
}
return super.beforeInvoke(obj, method, objArr);
}
}
private class movePackage extends HookedMethodHandler {
public movePackage(Context context) {
super(context);
}
}
private class performDexOpt extends HookedMethodHandler {
public performDexOpt(Context context) {
super(context);
}
}
private class queryContentProviders extends HookedMethodHandler {
public queryContentProviders(Context context) {
super(context);
}
}
private class queryInstrumentation extends HookedMethodHandler {
public queryInstrumentation(Context context) {
super(context);
}
}
private class queryIntentActivities extends HookedMethodHandler {
public queryIntentActivities(Context context) {
super(context);
}
@Override
public void afterInvoke(Object obj, Method method, Object[] objArr, Object obj2) {
Intent intent;
List<ResolveInfo> queryIntentActivities;
if (objArr != null && (obj2 instanceof List)) {
String str = null;
if (objArr.length > 0) {
Object obj3 = objArr[0];
if (obj3 instanceof Intent) {
intent = (Intent) obj3;
if (objArr.length > 1) {
Object obj4 = objArr[1];
if (obj4 instanceof String) {
str = (String) obj4;
}
}
Integer num = 0;
if (objArr.length > 2) {
Object obj5 = objArr[2];
if (obj5 instanceof Integer) {
num = (Integer) obj5;
}
}
if (intent != null && (queryIntentActivities = PluginManager.getInstance().queryIntentActivities(intent, str, num.intValue())) != null && queryIntentActivities.size() > 0) {
((List) obj2).addAll(queryIntentActivities);
}
}
}
intent = null;
if (objArr.length > 1) {
}
Integer num2 = 0;
if (objArr.length > 2) {
}
if (intent != null) {
((List) obj2).addAll(queryIntentActivities);
}
}
super.afterInvoke(obj, method, objArr, obj2);
}
}
private class queryIntentActivityOptions extends HookedMethodHandler {
public queryIntentActivityOptions(Context context) {
super(context);
}
}
private class queryIntentContentProviders extends HookedMethodHandler {
public queryIntentContentProviders(Context context) {
super(context);
}
@Override
public void afterInvoke(Object obj, Method method, Object[] objArr, Object obj2) {
Intent intent;
List<ResolveInfo> queryIntentContentProviders;
if (objArr != null && (obj2 instanceof List)) {
String str = null;
if (objArr.length > 0) {
Object obj3 = objArr[0];
if (obj3 instanceof Intent) {
intent = (Intent) obj3;
if (objArr.length > 1) {
Object obj4 = objArr[1];
if (obj4 instanceof String) {
str = (String) obj4;
}
}
Integer num = 0;
if (objArr.length > 2) {
Object obj5 = objArr[2];
if (obj5 instanceof Integer) {
num = (Integer) obj5;
}
}
if (intent != null && (queryIntentContentProviders = PluginManager.getInstance().queryIntentContentProviders(intent, str, num.intValue())) != null && queryIntentContentProviders.size() > 0) {
((List) obj2).addAll(queryIntentContentProviders);
}
}
}
intent = null;
if (objArr.length > 1) {
}
Integer num2 = 0;
if (objArr.length > 2) {
}
if (intent != null) {
((List) obj2).addAll(queryIntentContentProviders);
}
}
super.afterInvoke(obj, method, objArr, obj2);
}
}
private class queryIntentReceivers extends HookedMethodHandler {
public queryIntentReceivers(Context context) {
super(context);
}
@Override
public void afterInvoke(Object obj, Method method, Object[] objArr, Object obj2) {
Intent intent;
List<ResolveInfo> queryIntentReceivers;
if (objArr != null && (obj2 instanceof List)) {
String str = null;
if (objArr.length > 0) {
Object obj3 = objArr[0];
if (obj3 instanceof Intent) {
intent = (Intent) obj3;
if (objArr.length > 1) {
Object obj4 = objArr[1];
if (obj4 instanceof String) {
str = (String) obj4;
}
}
Integer num = 0;
if (objArr.length > 2) {
Object obj5 = objArr[2];
if (obj5 instanceof Integer) {
num = (Integer) obj5;
}
}
if (intent != null && (queryIntentReceivers = PluginManager.getInstance().queryIntentReceivers(intent, str, num.intValue())) != null && queryIntentReceivers.size() > 0) {
((List) obj2).addAll(queryIntentReceivers);
setFakedResult(obj2);
}
}
}
intent = null;
if (objArr.length > 1) {
}
Integer num2 = 0;
if (objArr.length > 2) {
}
if (intent != null) {
((List) obj2).addAll(queryIntentReceivers);
setFakedResult(obj2);
}
}
super.afterInvoke(obj, method, objArr, obj2);
}
}
private class queryIntentServices extends HookedMethodHandler {
public queryIntentServices(Context context) {
super(context);
}
@Override
public void afterInvoke(Object obj, Method method, Object[] objArr, Object obj2) {
Intent intent;
List<ResolveInfo> queryIntentServices;
if (objArr != null && (obj2 instanceof List)) {
String str = null;
if (objArr.length > 0) {
Object obj3 = objArr[0];
if (obj3 instanceof Intent) {
intent = (Intent) obj3;
if (objArr.length > 1) {
Object obj4 = objArr[1];
if (obj4 instanceof String) {
str = (String) obj4;
}
}
Integer num = 0;
if (objArr.length > 2) {
Object obj5 = objArr[2];
if (obj5 instanceof Integer) {
num = (Integer) obj5;
}
}
if (intent != null && (queryIntentServices = PluginManager.getInstance().queryIntentServices(intent, str, num.intValue())) != null && queryIntentServices.size() > 0) {
((List) obj2).addAll(queryIntentServices);
}
}
}
intent = null;
if (objArr.length > 1) {
}
Integer num2 = 0;
if (objArr.length > 2) {
}
if (intent != null) {
((List) obj2).addAll(queryIntentServices);
}
}
super.afterInvoke(obj, method, objArr, obj2);
}
}
private class queryPermissionsByGroup extends HookedMethodHandler {
public queryPermissionsByGroup(Context context) {
super(context);
}
@Override
public void afterInvoke(Object obj, Method method, Object[] objArr, Object obj2) {
if (objArr != null && (obj2 instanceof List) && objArr.length > 1) {
Object obj3 = objArr[0];
if (obj3 instanceof String) {
Object obj4 = objArr[1];
if (obj4 instanceof Integer) {
int intValue = ((Integer) obj4).intValue();
List<PermissionInfo> queryPermissionsByGroup = PluginManager.getInstance().queryPermissionsByGroup((String) obj3, intValue);
if (queryPermissionsByGroup != null && queryPermissionsByGroup.size() > 0) {
((List) obj2).addAll(queryPermissionsByGroup);
}
}
}
}
super.afterInvoke(obj, method, objArr, obj2);
}
}
private class querySyncProviders extends HookedMethodHandler {
public querySyncProviders(Context context) {
super(context);
}
}
private class removePackageFromPreferred extends HookedMethodHandler {
public removePackageFromPreferred(Context context) {
super(context);
}
@Override
public boolean beforeInvoke(Object obj, Method method, Object[] objArr) {
if (objArr != null && objArr.length > 0) {
Object obj2 = objArr[0];
if (obj2 instanceof String) {
if (PluginManager.getInstance().isPluginPackage((String) obj2)) {
objArr[0] = this.mHostContext.getPackageName();
}
}
}
return super.beforeInvoke(obj, method, objArr);
}
}
private class removePermission extends HookedMethodHandler {
public removePermission(Context context) {
super(context);
}
}
private class replacePreferredActivity extends HookedMethodHandler {
public replacePreferredActivity(Context context) {
super(context);
}
}
private class resetPreferredActivities extends HookedMethodHandler {
public resetPreferredActivities(Context context) {
super(context);
}
}
private class resolveContentProvider extends HookedMethodHandler {
public resolveContentProvider(Context context) {
super(context);
}
@Override
public void afterInvoke(Object obj, Method method, Object[] objArr, Object obj2) {
if (objArr != null && obj2 == null && objArr.length >= 2) {
Object obj3 = objArr[0];
if (obj3 instanceof String) {
Object obj4 = objArr[1];
if (obj4 instanceof Integer) {
ProviderInfo resolveContentProvider = PluginManager.getInstance().resolveContentProvider((String) obj3, (Integer) obj4);
if (resolveContentProvider != null) {
setFakedResult(resolveContentProvider);
}
}
}
}
super.afterInvoke(obj, method, objArr, obj2);
}
@Override
public boolean beforeInvoke(Object obj, Method method, Object[] objArr) {
return super.beforeInvoke(obj, method, objArr);
}
}
private class resolveIntent extends HookedMethodHandler {
public resolveIntent(Context context) {
super(context);
}
@Override
public boolean beforeInvoke(Object obj, Method method, Object[] objArr) {
Intent intent;
ResolveInfo resolveIntent;
if (objArr != null) {
String str = null;
if (objArr.length > 0) {
Object obj2 = objArr[0];
if (obj2 instanceof Intent) {
intent = (Intent) obj2;
if (objArr.length > 1) {
Object obj3 = objArr[1];
if (obj3 instanceof String) {
str = (String) obj3;
}
}
Integer num = 0;
if (objArr.length > 2) {
Object obj4 = objArr[2];
if (obj4 instanceof Integer) {
num = (Integer) obj4;
}
}
if (intent != null && (resolveIntent = PluginManager.getInstance().resolveIntent(intent, str, num.intValue())) != null) {
setFakedResult(resolveIntent);
return true;
}
}
}
intent = null;
if (objArr.length > 1) {
}
Integer num2 = 0;
if (objArr.length > 2) {
}
if (intent != null) {
setFakedResult(resolveIntent);
return true;
}
}
return super.beforeInvoke(obj, method, objArr);
}
}
private class resolveService extends HookedMethodHandler {
public resolveService(Context context) {
super(context);
}
@Override
public boolean beforeInvoke(Object obj, Method method, Object[] objArr) {
Intent intent;
ResolveInfo resolveService;
if (objArr != null) {
String str = null;
if (objArr.length > 0) {
Object obj2 = objArr[0];
if (obj2 instanceof Intent) {
intent = (Intent) obj2;
if (objArr.length > 1) {
Object obj3 = objArr[1];
if (obj3 instanceof String) {
str = (String) obj3;
}
}
int i6 = 0;
if (objArr.length > 2) {
Object obj4 = objArr[2];
if (obj4 instanceof Integer) {
i6 = (Integer) obj4;
}
}
if (intent != null && (resolveService = PluginManager.getInstance().resolveService(intent, str, i6)) != null) {
setFakedResult(resolveService);
return true;
}
}
}
intent = null;
if (objArr.length > 1) {
}
int i62 = 0;
if (objArr.length > 2) {
}
if (intent != null) {
setFakedResult(resolveService);
return true;
}
}
return super.beforeInvoke(obj, method, objArr);
}
}
private class revokePermission extends HookedMethodHandler {
public revokePermission(Context context) {
super(context);
}
@Override
public boolean beforeInvoke(Object obj, Method method, Object[] objArr) {
if (objArr != null && objArr.length > 0) {
Object obj2 = objArr[0];
if (obj2 instanceof String) {
if (PluginManager.getInstance().isPluginPackage((String) obj2)) {
objArr[0] = this.mHostContext.getPackageName();
}
}
}
return super.beforeInvoke(obj, method, objArr);
}
}
private class setApplicationEnabledSetting extends HookedMethodHandler {
public setApplicationEnabledSetting(Context context) {
super(context);
}
@Override
public boolean beforeInvoke(Object obj, Method method, Object[] objArr) {
if (objArr != null && objArr.length > 0) {
Object obj2 = objArr[0];
if (obj2 instanceof String) {
if (PluginManager.getInstance().isPluginPackage((String) obj2)) {
return true;
}
}
}
return super.beforeInvoke(obj, method, objArr);
}
}
private class setComponentEnabledSetting extends HookedMethodHandler {
public setComponentEnabledSetting(Context context) {
super(context);
}
@Override
public boolean beforeInvoke(Object obj, Method method, Object[] objArr) {
if (objArr != null && objArr.length > 0) {
Object obj2 = objArr[0];
if (obj2 instanceof ComponentName) {
if (PluginManager.getInstance().isPluginPackage((ComponentName) obj2)) {
setFakedResult(0);
return true;
}
}
}
return super.beforeInvoke(obj, method, objArr);
}
}
private class setLastChosenActivity extends HookedMethodHandler {
public setLastChosenActivity(Context context) {
super(context);
}
}
private class setPackageStoppedState extends HookedMethodHandler {
public setPackageStoppedState(Context context) {
super(context);
}
@Override
public boolean beforeInvoke(Object obj, Method method, Object[] objArr) {
if (objArr != null && objArr.length > 0) {
Object obj2 = objArr[0];
if (obj2 instanceof String) {
String str = (String) obj2;
if (PluginManager.getInstance().isPluginPackage(str)) {
PluginManager.getInstance().forceStopPackage(str);
return true;
}
}
}
return super.beforeInvoke(obj, method, objArr);
}
}
public IPackageManagerHookHandle(Context context) {
super(context);
}
@Override
protected void init() {
this.sHookedMethodHandlers.put("getPackageInfo", new getPackageInfo(this.mHostContext));
this.sHookedMethodHandlers.put("getPackageUid", new getPackageUid(this.mHostContext));
this.sHookedMethodHandlers.put("getPackageGids", new getPackageGids(this.mHostContext));
this.sHookedMethodHandlers.put("currentToCanonicalPackageNames", new currentToCanonicalPackageNames(this.mHostContext));
this.sHookedMethodHandlers.put("canonicalToCurrentPackageNames", new canonicalToCurrentPackageNames(this.mHostContext));
this.sHookedMethodHandlers.put("getPermissionInfo", new getPermissionInfo(this.mHostContext));
this.sHookedMethodHandlers.put("queryPermissionsByGroup", new queryPermissionsByGroup(this.mHostContext));
this.sHookedMethodHandlers.put("getPermissionGroupInfo", new getPermissionGroupInfo(this.mHostContext));
this.sHookedMethodHandlers.put("getAllPermissionGroups", new getAllPermissionGroups(this.mHostContext));
this.sHookedMethodHandlers.put("getApplicationInfo", new getApplicationInfo(this.mHostContext));
this.sHookedMethodHandlers.put("getActivityInfo", new getActivityInfo(this.mHostContext));
this.sHookedMethodHandlers.put("getReceiverInfo", new getReceiverInfo(this.mHostContext));
this.sHookedMethodHandlers.put("getServiceInfo", new getServiceInfo(this.mHostContext));
this.sHookedMethodHandlers.put("getProviderInfo", new getProviderInfo(this.mHostContext));
this.sHookedMethodHandlers.put("checkPermission", new checkPermission(this.mHostContext));
this.sHookedMethodHandlers.put("checkUidPermission", new checkUidPermission(this.mHostContext));
this.sHookedMethodHandlers.put("addPermission", new addPermission(this.mHostContext));
this.sHookedMethodHandlers.put("removePermission", new removePermission(this.mHostContext));
this.sHookedMethodHandlers.put("grantPermission", new grantPermission(this.mHostContext));
this.sHookedMethodHandlers.put("revokePermission", new revokePermission(this.mHostContext));
this.sHookedMethodHandlers.put("checkSignatures", new checkSignatures(this.mHostContext));
this.sHookedMethodHandlers.put("getPackagesForUid", new getPackagesForUid(this.mHostContext));
this.sHookedMethodHandlers.put("getNameForUid", new getNameForUid(this.mHostContext));
this.sHookedMethodHandlers.put("getUidForSharedUser", new getUidForSharedUser(this.mHostContext));
this.sHookedMethodHandlers.put("getFlagsForUid", new getFlagsForUid(this.mHostContext));
this.sHookedMethodHandlers.put("resolveIntent", new resolveIntent(this.mHostContext));
this.sHookedMethodHandlers.put("queryIntentActivities", new queryIntentActivities(this.mHostContext));
this.sHookedMethodHandlers.put("queryIntentActivityOptions", new queryIntentActivityOptions(this.mHostContext));
this.sHookedMethodHandlers.put("queryIntentReceivers", new queryIntentReceivers(this.mHostContext));
this.sHookedMethodHandlers.put("resolveService", new resolveService(this.mHostContext));
this.sHookedMethodHandlers.put("queryIntentServices", new queryIntentServices(this.mHostContext));
this.sHookedMethodHandlers.put("queryIntentContentProviders", new queryIntentContentProviders(this.mHostContext));
this.sHookedMethodHandlers.put("getInstalledPackages", new getInstalledPackages(this.mHostContext));
this.sHookedMethodHandlers.put("getPackagesHoldingPermissions", new getPackagesHoldingPermissions(this.mHostContext));
this.sHookedMethodHandlers.put("getInstalledApplications", new getInstalledApplications(this.mHostContext));
this.sHookedMethodHandlers.put("getPersistentApplications", new getPersistentApplications(this.mHostContext));
this.sHookedMethodHandlers.put("resolveContentProvider", new resolveContentProvider(this.mHostContext));
this.sHookedMethodHandlers.put("querySyncProviders", new querySyncProviders(this.mHostContext));
this.sHookedMethodHandlers.put("queryContentProviders", new queryContentProviders(this.mHostContext));
this.sHookedMethodHandlers.put("getInstrumentationInfo", new getInstrumentationInfo(this.mHostContext));
this.sHookedMethodHandlers.put("queryInstrumentation", new queryInstrumentation(this.mHostContext));
this.sHookedMethodHandlers.put("getInstallerPackageName", new getInstallerPackageName(this.mHostContext));
this.sHookedMethodHandlers.put("addPackageToPreferred", new addPackageToPreferred(this.mHostContext));
this.sHookedMethodHandlers.put("removePackageFromPreferred", new removePackageFromPreferred(this.mHostContext));
this.sHookedMethodHandlers.put("getPreferredPackages", new getPreferredPackages(this.mHostContext));
this.sHookedMethodHandlers.put("resetPreferredActivities", new resetPreferredActivities(this.mHostContext));
this.sHookedMethodHandlers.put("getLastChosenActivity", new getLastChosenActivity(this.mHostContext));
this.sHookedMethodHandlers.put("setLastChosenActivity", new setLastChosenActivity(this.mHostContext));
this.sHookedMethodHandlers.put("addPreferredActivity", new addPreferredActivity(this.mHostContext));
this.sHookedMethodHandlers.put("replacePreferredActivity", new replacePreferredActivity(this.mHostContext));
this.sHookedMethodHandlers.put("clearPackagePreferredActivities", new clearPackagePreferredActivities(this.mHostContext));
this.sHookedMethodHandlers.put("getPreferredActivities", new getPreferredActivities(this.mHostContext));
this.sHookedMethodHandlers.put("getHomeActivities", new getHomeActivities(this.mHostContext));
this.sHookedMethodHandlers.put("setComponentEnabledSetting", new setComponentEnabledSetting(this.mHostContext));
this.sHookedMethodHandlers.put("getComponentEnabledSetting", new getComponentEnabledSetting(this.mHostContext));
this.sHookedMethodHandlers.put("setApplicationEnabledSetting", new setApplicationEnabledSetting(this.mHostContext));
this.sHookedMethodHandlers.put("getApplicationEnabledSetting", new getApplicationEnabledSetting(this.mHostContext));
this.sHookedMethodHandlers.put("setPackageStoppedState", new setPackageStoppedState(this.mHostContext));
this.sHookedMethodHandlers.put("deleteApplicationCacheFiles", new deleteApplicationCacheFiles(this.mHostContext));
this.sHookedMethodHandlers.put("clearApplicationUserData", new clearApplicationUserData(this.mHostContext));
this.sHookedMethodHandlers.put("getPackageSizeInfo", new getPackageSizeInfo(this.mHostContext));
this.sHookedMethodHandlers.put("performDexOpt", new performDexOpt(this.mHostContext));
this.sHookedMethodHandlers.put("movePackage", new movePackage(this.mHostContext));
}
}