Android之VA关键原理解析

Android之VA关键原理解析,第1张

基础知识

VirtualApp(简称:VA)它是一款运行于Android系统的沙盒引擎框架产品,可以理解为轻量级的“Android虚拟机”。VA它具有免安装、多开、内外隔离及对于目标App完全控制的能力。

VA从表现形式上属于动态加载,但是从技术本质上来说还是通过增加VAMS对启动Intent进行修改,拦截和代理Android系统消息,并且通过自定义的ClassLoader加载和构造未在VA的AndroidManifest.xml中声明的组件,以达到对目标App的控制效果。

Android之VA关键原理解析,fa2a0bd0-2f86-11ed-ba43-dac502259ad0.png,第2张

VA的虚拟引擎技术一般是为了实现轻量级版本快速迭代、功能更新、bug修复和特定安全防护,但是恶意和流氓应用使用该技术一般是为了逃避安全检测,延长生命周期,获取更大的利益。

无论是动态加载的插件化技术,还是基于VA的虚拟化引擎技术,从安全属性上而言,都在一定程度上挑战了Android系统的安全要求,谷歌和苹果对上架应用都有对应的规定——禁止使用动态加载功能。虽然如此,仍然有大量开发者对VA技术有需求,包括在Windows平台上,也有官方API提供特定窗口和消息的Hook机制,用来满足开发者的应用开发需求,可见这种技术本身也是具有两面性的。

VA关键原理解析

Android应用隔离是基于Linux系统的多用户机制实现的,即每个应用在安装时被分配了不同的Linux用户uid/gid。而在VirtualApp中,client应用(通过VirtualApp安装的应用)与host应用(即VirtualApp本身)是具有相同用户uid的。

Android之VA关键原理解析,fa4b91f6-2f86-11ed-ba43-dac502259ad0.png,第3张

上图是VA启动AcTIvit时序图

VA启动后默认会创建三个进程分别为如下:

io.virtualapp:vapp应用启动的进程,该进程可以理解为Launcher,主要负责用户界面和应用管理。

io.virtualapp:pN 启动目标应用的进程,我们每点击一个双开应用都会为其创建一个对应的:pN子进程

io.virtualapp:x 虚拟服务子进程,双开应用没有直接与真实系统服务交互,而是与虚拟服务进行交互。虚拟服务实现了真实系统服务的能力。

Android之VA关键原理解析,fa58aada-2f86-11ed-ba43-dac502259ad0.png,第4张

启动原理

Android之VA关键原理解析,fa632230-2f86-11ed-ba43-dac502259ad0.png,第5张

VirtualApp实现了对原本APP路径的替换,在java层传入需要重定向的所有路径

Android之VA关键原理解析,fa71f80a-2f86-11ed-ba43-dac502259ad0.png,第6张

VA的强大功能应用

1、克隆功能

它可以克隆外部系统中已经安装的App,并在内部运行,互不干扰。典型应用场景为App双开。

Android之VA关键原理解析,fa7e4bd2-2f86-11ed-ba43-dac502259ad0.png,第7张

2、免安装功能

它除了克隆已安装之外,VA可以直接在内部安装(外部无感知)apk,并在内部直接运行。典型应用场景为插件化,独立应用市场等。

3、多开功能

VA不仅可以“双开”,独特的多用户模式(独立的虚拟空间)支持用户在内部无限多开同一个APP。

多开工具一直倍受微商、刷量工作室、羊毛党的青睐。通过明码标价,服务于意向商家,以低成本甚至零成本换取了高额利润。

4、内外隔离功能

VA是一个标准的沙盒,或者说“虚拟机”,提供了一整套内部与外部的隔离机制,包括但不限于(文件隔离/组件隔离/进程通讯隔离),简单的说VA内部就是一个“完全独立的空间”。在此基础之上,稍作定制即可实现一部手机上的“虚拟手机”。当然您也可以发挥想象,定制成应用于数据加密,数据隔离,隐私保护,企业管理的应用系统。

Android之VA关键原理解析,fa8d0302-2f86-11ed-ba43-dac502259ad0.png,第8张

5、对于内部App的完全控制功能

VA对于内部的App具有完全的监控和控制能力,这点在未Root的外部环境中是绝对无法实现的。

开发者利用VA自带的JAVA层Hook,开发了改机工具,包括修改设备参数,虚拟定位等工具。以虚拟定位工具为例,该应用通过遥感设置虚拟位置,能够实现虚拟定位的功能。

App中安装过去中需要获取当前的位置,通过va可以设置虚拟的位置,从而欺骗APP的位置信息。

Android之VA关键原理解析,fa9b9fa2-2f86-11ed-ba43-dac502259ad0.png,第9张

更多强大的功能,可以基于以下Github代码进行对virtaulAPP进行深入挖掘学习:

https://github.com/asLody/VirtualApp

https://github.com/ServenScorpion/VirtualApp

https://github.com/darkskygit/VirtualApp

https://gitcode.net/mirrors/aslody/virtualapp?utm_source=csdn_github_accelerator

VA的安全风险

VA技术目前也有用于正常用途的,比如部分游戏爱好者拥有多个账号,部分白领由于工作原因需要对于个人社交软件和工作用户社交软件进行隔离,这一类的需求一直很旺盛。但是 运行在VA中的App也带来不可忽视的安全风险,即APP的运行环境完全被VA控制,安卓的沙盒隔离机制被突破,并导致不必要的攻击入口和风险面暴露。

VA技术动态加载可以在运行时动态加载,并解释和执行包含在JAR或APK文件内的DEX文件。外部动态加载DEX文件的安全风险源于:Anroid4.1之前的系统版本容许Android应用动态加载存储在外部目录中的DEX文件,同时这些文件也可以被其他应用任意读写,所以不能够保护应用免遭恶意代码的注入;所加载的DEX文件易被恶意应用替换或者注入代码,如果没有对外部所加载的DEX文件做完整性校验,应用将会被恶意代码注入,那么攻击者编写的任意恶意代码将会被自动执行,从而进一步实施欺诈、获取账号密码或其他恶意行为。

VA技术是在虚拟空间中安装、启动和卸载APK,是应用级的虚拟化技术,VA中运行的恶意应用软件可以逃避杀毒软件的静态检测,VA框架也被黑灰产用于开发多开工具、改机工具等等方式实施恶意作弊行为。并且由于它具有免root的功能,所以它伪装起来对数据获取更加权限功能。VA框架上运行的插件应用程序也被引入了代码修改风险,重打包的应用程序存在隐私泄露、被植入广告等危害。

编辑:黄飞

 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/dianzi/2998343.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-09-26
下一篇 2022-09-26

发表评论

登录后才能评论

评论列表(0条)

保存