VirtualApp中静默安装App

最近学习看到android沙箱VirtualApp,小编资历尚浅,只是从VA运用的角度记录了下来如何在VA中静默安装app

VirtualApp github地址https://github.com/android-hacker/VirtualXposed

1、将需要安装的app包放置在assets目录下

2、构建app安装需要的方法如下

    private void installApp(String path) {
        if (checkRequiredPermission()) {
            try {
                File localFile = extractApp(path);
                //com.app.test是测试安装的app包名
                AppInfoLite localAppInfoLite = new AppInfoLite("com.app.test", localFile.getAbsolutePath(), true);
                mPresenter.addApp(localAppInfoLite);
            } catch (Exception localException) {
                Toast.makeText(this, "安装失败", Toast.LENGTH_SHORT).show();
            }
        } else {
            ActivityCompat.requestPermissions(this, new String[]{"android.permission.WRITE_EXTERNAL_STORAGE"}, 200);
        }
    }
    private File extractApp(String path) {
        try {
            File localFile = new File(path);
            if (localFile.exists()) {
                localFile.delete();
            }
            //提取的app文件,testApp是我测试的app名称
            FileUtils.writeToFile(getAssets().open("testApp.apk"), localFile);
            return localFile;
        } catch (IOException localIOException) {
        }
        return null;
    }
    private boolean checkRequiredPermission() {
        return (Build.VERSION.SDK_INT < 23) || (ContextCompat.checkSelfPermission(this, "android.permission.WRITE_EXTERNAL_STORAGE") == 0);
    }

 3、在需要安装App代码的地方调用installApp方法即可

String apkPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/testApp.apk";
            //判断app是否已经安装
            if (!VirtualCore.get().isAppInstalled("com.app.test")) {
                installApp(apkPath);
            }else{
                Toast.makeText(this, "当前APP已经安装,请勿重复安装", Toast.LENGTH_SHORT).show();
            }

 

VirtualApp是一个开源的、提供虚拟化应用的框架,其源码可以帮助我们了解和学习虚拟化技术的实现原理。 VirtualApp的源码主要包含了以下几个方面的内容: 1. Hook技术:VirtualApp使用了Xposed和Substrate等Hook框架,通过动态修改运行时的Java方法,实现对目标应用的API调用进行拦截和替换。通过Hook技术,VirtualApp能够在虚拟环境替换目标应用的敏感操作,实现对应用的隔离和保护。 2. 虚拟环境创建:VirtualApp源码实现了一个独立的虚拟环境,可以在这个环境安装和运行目标应用。这个虚拟环境通过Hook技术对系统运行时的一些特殊API进行拦截和修改,使得目标应用在虚拟环境运行时能够调用到虚拟环境提供的资源、服务和功能。 3. 进程隔离:VirtualApp使用了Linux的Namespace和Cgroup等技术,实现了进程的隔离。在虚拟环境运行的应用与宿主系统的应用是完全独立的,互不干扰。这种隔离可以保护宿主系统的安全,同时也可以保护虚拟环境的应用不受外部环境的干扰。 4. 文件系统隔离:VirtualApp通过Hook技术对文件操作API进行拦截和修改,实现了虚拟环境与宿主系统的文件系统隔离。在虚拟环境运行的应用只能访问到虚拟环境的文件系统,无法直接访问宿主系统的文件系统,从而保护了宿主系统的文件安全。 总的来说,VirtualApp的源码实现了虚拟化应用的关键功能,如Hook技术、虚拟环境创建、进程隔离和文件系统隔离等。通过阅读和学习VirtualApp的源码,我们可以深入了解和掌握虚拟化技术的实现原理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值