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));
    }
}