微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android.app.IActivityManager的实例源码

项目:VirtualAPK    文件PluginManager.java   
/**
 * hookSystemServices,but need to compatible with Android O in future.
 */
private void hookSystemServices() {
    try {
        Singleton<IActivityManager> defaultSingleton = (Singleton<IActivityManager>) ReflectUtil.getField(ActivityManagerNative.class,null,"gDefault");
        IActivityManager activityManagerProxy = ActivityManagerProxy.newInstance(this,defaultSingleton.get());

        // Hook IActivityManager from ActivityManagerNative
        ReflectUtil.setField(defaultSingleton.getClass().getSuperclass(),defaultSingleton,"mInstance",activityManagerProxy);

        if (defaultSingleton.get() == activityManagerProxy) {
            this.mActivityManager = activityManagerProxy;
        }
    } catch (Exception e) {
        e.printstacktrace();
    }
}
项目:VirtualAPK    文件PluginManager.java   
private void hookAMSForO() {
    try {
        Singleton<IActivityManager> defaultSingleton = (Singleton<IActivityManager>) ReflectUtil.getField(ActivityManager.class,"IActivityManagerSingleton");
        IActivityManager activityManagerProxy = ActivityManagerProxy.newInstance(this,defaultSingleton.get());
        ReflectUtil.setField(defaultSingleton.getClass().getSuperclass(),activityManagerProxy);
    } catch (Exception e) {
        e.printstacktrace();
    }
}
项目:PowerToggles    文件CmdFont.java   
public static boolean run(float delta) {
  try {
    IActivityManager amn = ActivityManagerNative.getDefault();
    Configuration config = amn.getConfiguration();
    config.fontScale = (delta == 0) ? 1 : (config.fontScale + delta);
    amn.updatePersistentConfiguration(config);
    return true;
  } catch (Throwable e) {
    Debug.log(e);
    return false;
  }
}
项目:DeepInVirtualApp    文件ActivityManagerPatch.java   
@Override
public void inject() throws Throwable {

    Field f_gDefault = ActivityManagerNative.class.getDeclaredField("gDefault");
    if (!f_gDefault.isAccessible()) {
        f_gDefault.setAccessible(true);
    }
    if (f_gDefault.getType() == IActivityManager.class) {
        f_gDefault.set(null,getHookObject().getProxyObject());

    } else if (f_gDefault.getType() == Singleton.class) {

        Singleton gDefault = (Singleton) f_gDefault.get(null);
        Field f_mInstance = Singleton.class.getDeclaredField("mInstance");
        if (!f_mInstance.isAccessible()) {
            f_mInstance.setAccessible(true);
        }
        f_mInstance.set(gDefault,getHookObject().getProxyObject());
    } else {
        // 不会经过这里
        throw new UnsupportedOperationException("Singleton is not visible in AMN.");
    }

    HookBinder<IActivityManager> hookAMBinder = new HookBinder<IActivityManager>() {
        @Override
        protected IBinder queryBaseBinder() {
            return ServiceManager.getService(Context.ACTIVITY_SERVICE);
        }

        @Override
        protected IActivityManager createInterface(IBinder baseBinder) {
            return getHookObject().getProxyObject();
        }
    };
    hookAMBinder.injectService(Context.ACTIVITY_SERVICE);
}
项目:atlas    文件AtlasHacks.java   
public static void allMethods() throws HackAssertionException {

        ActivityThread_currentActivityThread = ActivityThread.method("currentActivityThread");
        AssetManager_addAssetPath = AssetManager.method("addAssetPath",String.class);
        if(Build.VERSION.SDK_INT>=24) {
            AssetManager_addAssetPathAsSharedLibrary = AssetManager.method("addAssetPathAsSharedLibrary",String.class);
        }
        Application_attach = Application.method("attach",Context.class);
        PackageParser$Component_getComponentName = PackageParser$Component.method("getComponentName");
        ClassLoader_findLibrary = ClassLoader.method("findLibrary",String.class);
        ContextImpl_setouterContext = ContextImpl.method("setouterContext",Context.class);

        if (LexFile != null && LexFile.getmClass() !=null ) {
            LexFile_loadLex = LexFile.method("loadLex",String.class,int.class);
            LexFile_loadClass = LexFile.method("loadClass",java.lang.classLoader.class);
            LexFile_close = LexFile.method("close");
            DexClassLoader_findClass = DexClassLoader.method("findClass",String.class);
        }

        try {
            if (Build.VERSION.SDK_INT>20){
                AssetManager_getResourceIdentifier = AssetManager.method("getResourceIdentifier",String.class);
                AssetManager_ensureStringBlocks = AssetManager.method("ensureStringBlocks");
            }
        } catch (Throwable e) {
        }

        ActivityThread_installContentProviders = ActivityThread.method("installContentProviders",Context.class,List.class);
        if(Build.VERSION.SDK_INT>25 || (Build.VERSION.SDK_INT==25 && Build.VERSION.PREVIEW_SDK_INT>0)) {
            ActivityThread_installProvider = ActivityThread.method("installProvider",android.app.ContentProviderHolder.class,ProviderInfo.class,boolean.class,boolean.class);
        }else if(Build.VERSION.SDK_INT==14){
            ActivityThread_installProvider = ActivityThread.method("installProvider",boolean.class);
        }else if(Build.VERSION.SDK_INT==15){
            ActivityThread_installProvider = ActivityThread.method("installProvider",boolean.class);
        }else{
            ActivityThread_installProvider = ActivityThread.method("installProvider",IActivityManager.ContentProviderHolder.class,boolean.class);
        }
        Service_attach = Service.method("attach",ActivityThread.getmClass(),IBinder.class,Application.getmClass(),Object.class);

        AssetManager_addAssetPathNative = AssetManager.method("addAssetPathNative",String.class);
        if(AssetManager_addAssetPathNative==null || AssetManager_addAssetPathNative.getmethod()==null) {
            AssetManager_addAssetPathNative24 = AssetManager.method("addAssetPathNative",boolean.class);
        }
        if((AssetManager_addAssetPathNative==null || AssetManager_addAssetPathNative.getmethod()==null) &&
                (AssetManager_addAssetPathNative24==null || AssetManager_addAssetPathNative24.getmethod()==null)){
            AssetManager_addAssetPathNativeSamSung = AssetManager.method("addAssetPathNative",int.class);
        }
        AssetManager_getStringBlockCount=AssetManager.method("getStringBlockCount");
        AssetManager_getNativeStringBlock = AssetManager.method("getNativeStringBlock",int.class);

    }
项目:VirtualAPK    文件ActivityManagerProxy.java   
public static IActivityManager newInstance(PluginManager pluginManager,IActivityManager activityManager) {
    return (IActivityManager) Proxy.newProxyInstance(activityManager.getClass().getClassLoader(),new Class[] { IActivityManager.class },new ActivityManagerProxy(pluginManager,activityManager));
}
项目:VirtualAPK    文件ActivityManagerProxy.java   
public ActivityManagerProxy(PluginManager pluginManager,IActivityManager activityManager) {
    this.mPluginManager = pluginManager;
    this.mActivityManager = activityManager;
}
项目:VirtualAPK    文件PluginManager.java   
public IActivityManager getActivityManager() {
    return this.mActivityManager;
}
项目:Brevent    文件HideApiOverrideM.java   
@SuppressWarnings("unchecked")
public static List getRecentTasks(IActivityManager am,int maxnum,int flags,int userId) {
    return am.getRecentTasks(maxnum,flags,userId);
}
项目:DeepInVirtualApp    文件ActivityManagerPatch.java   
public static IActivityManager getAMN() {
    return ActivityManagerNative.getDefault();
}
项目:DeepInVirtualApp    文件ActivityManagerPatch.java   
@Override
protected HookObject<IActivityManager> initHookObject() {
    return new HookObject<IActivityManager>(getAMN());
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。