95

GitHub - asLody/VirtualApp: An open source implementation of MultiAccount.(Suppo...

 6 years ago
source link: https://github.com/asLody/VirtualApp
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

English Doc

VA产品说明&开发指导

VA是什么?

VirtualApp(简称:VA)是一款运行于Android系统的沙盒产品,可以理解为轻量级的“Android虚拟机”。其产品形态为高可扩展,可定制的集成SDK,您可以基于VA或者使用VA定制开发各种看似不可能完成的项目。VA目前被广泛应用于APP多开、小游戏合集、手游加速器、手游租号、手游手柄免激活、VR程序移植、区块链、移动办公安全、军队政府数据隔离、手机模拟信息、脚本自动化、插件化开发、无感知热更新、云控等技术领域。
Github上代码已在2017年12月份停止更新,商业版代码在持续更新中,如需授权获得最新代码,请联系微信:10890

VA中的术语

术语 解释
宿主 集成VirtualApp类库(lib)的App叫做宿主
宿主插件 用于在同一个手机,运行另一种ABI的宿主包,又称做插件包,扩展包,宿主插件包,宿主扩展包
虚拟App/VApp VA的虚拟环境多开的app
外部App 手机真实环境安装的app

VA技术架构

68747470733a2f2f63646e2e6a7364656c6976722e6e65742f67682f78787879616e6368656e7878782f74656d7040312e302f646f632f76615f6172636869746563747572652e6a7067


VA技术一共涉及到了Android的APP层,Framework层以及Native层。
一个APP想要在Android系统上运行,必须要安装后系统才会接纳。安装到VA内部的APP实际上并没有安装到系统中,所以正常情况下是无法运行的。那如何才能让它运行呢?
答:那就只有“欺骗”系统,让系统认为已经安装。而这个“欺骗”过程就是VA Framework的核心工作内容,也是整个VA的核心技术原理。

下面介绍下在这3个层次分别做了什么事情:

层次 主要工作
VA Space 由VA提供了一个内部的空间,用于安装要在其内部运行的APP,这个空间是系统隔离的。
VA Framework 这一层主要给Android Framework和VAPP做代理,这也是VA的核心。VA提供了一套自己的VA Framework,处于Android Framework与VA APP之间。
1. 对于VAPP,其访问的所有系统Service均已被 VA Framework 代理,它会修改VAPP的请求参数,将其中与VAPP安装信息相关的全部参数修改为宿主的参数之后发送给Android Framework(有部分请求会发送给自己的VA Server直接处理而不再发送给Android系统)。这样Android Framework收到VAPP请求后检查参数就会认为没有问题。
2. 待Android系统对该请求处理完成返回结果时,VA Framework同样也会拦截住该返回结果,此时再将原来修改过的参数全部还原为VAPP请求时发送的。
这样VAPP与Android系统的交互也就能跑通了。
VA Native 在这一层主要为了完成2个工作,IO重定向和VA APP与Android系统交互的请求修改。
1. IO重定向是因为可能有部分APP会通过写死的绝对路径访问,但是如果APP没有安装到系统,这个路径是不存在的,通过IO重定向,则将其转向VA内部安装的路径。
2. 另外有部分jni函数在VA Framework中无法hook的,所以需要在native层来做hook。

总结: 通过上面技术架构可以看到,VA内部的APP实际是跑在VA自己的VA Framework之上。 VA已将其内部APP的全部系统请求进行拦截,通过这项技术也能对APP进行全面控制,而不仅仅只是多开。并且为了方便开发者,VA还提供了SDK以及Hook SDK。

VA进程架构

68747470733a2f2f63646e2e6a7364656c6976722e6e65742f67682f78787879616e6368656e7878782f74656d7040312e302f646f632f76615f70726f636573732e6a7067


VA运行时有5类进程:CHILD进程,VA Host Main进程,VA Host Plugin进程,VAPP Client进程,VAServer进程。 VA为了同时支持32位APP与64位APP,需要安装2个包:一个主包,一个插件包(在本文档中主包是32位,插件包是64位)。 2个包也是必须的,因为一个包只能运行在一种模式下,要么32位,要么64位。所以对于32位的APP,VA使用32位的主包去运行,对于64位的APP,VA则使用64位的插件包去运行。 在主包中含了VA的所有代码,插件包中只有一段加载主包代码执行的代码,无其他代码。所以插件包几乎不用更新,只需要更新主包即可。 另外主包是选择用32位还是64位,可以在配置文件中修改(比如对于要上GooglePlay的用户,会修改为主包64位,插件包32位)。

各类进程的作用与解释如下:

进程类型 作用
CHILD 由VA Host集成的其他进程,比如:保活进程,推送进程等。
VA Host Main VA主包的UI主界面所在的进程。默认主包是32位,插件包是64位,可在配置文件中修改切换。
VA Host Plugin 支持64位APP的插件包所在进程。默认主包是32位,插件包是64位,可在配置文件中修改切换。
VAPP Client 安装到VA中的APP启动后产生的进程,在运行时会将io.busniess.va:pxxx进程名修改VAPP的真实进程名。
VAServer VA Server的所在的进程,用于处理VA中不交予系统处理的请求。比如APP的安装处理。

VA几乎能满足您的一切需求

通过上面的技术架构,我们可以了解到VA可以对APP进行全面的控制,并且提供了Hook SDK,几乎能满足您在各个领域的一切需求:

  1. 可以满足您的双开/多开需求
    VA可以让您在同一部手机上安装多个微信/QQ/WhatsApp/Facebook等APP,实现一部手机,多个账号同时登录。

  2. 可以满足您的移动安全需求
    VA提供了一整套内部与外部的隔离机制,包括但不限于(文件隔离/组件隔离/进程通讯隔离),简单的说VA内部就是一个“完全独立的空间”。 通过VA可将工作事务与个人事务安全的隔离,互不干扰。稍作定制即可实现应用行为审计、数据加密、数据采集、数据防泄漏、防攻击泄密等移动安全相关的需求。
    2.1 应用行为审计
    通过VA提供的HOOK能力可以实现实时监测用户使用行为,将违规信息上传到服务器;并能轻易实现诸如时间围栏(在某个时间段内能否使用应用的某个功能)、地理围栏(在某个区域内能否使用应用的某个功能)、敏感关键字过滤拦截等功能需求。
    2.2 数据加密
    通过VA提供的HOOK能力可以实现对应用的全部数据/文件加密,保证数据/文件落地安全。
    2.3 数据采集
    通过VA提供的HOOK能力可以实现应用数据的实时无感上传需求,如聊天记录、转账记录等,防止事后删除无法追溯。
    2.4 数据防泄漏
    通过VA提供的HOOK能力可以实现应用防复制/粘贴、防截屏/录屏、防分享/转发、水印溯源等需求。
    2.5 防攻击泄密
    通过VA提供的应用管控能力可以将APP获取短信/通讯录/通话记录/后台录音/后台拍照/浏览历史/位置信息等隐私相关的行为完全控制在沙盒中,防止木马/恶意APP获取到用户真实的隐私数据,造成泄密等严重后果。

  3. 可以满足您的免ROOT HOOK需求
    VA提供了Java与Native的Hook能力,通过VA,您可以轻易实现诸如虚拟定位、改机、APP监控管理、移动安全等各种场景需要的功能。

  4. 可以满足您的APP静默安装需求
    VA提供了APP静默安装,静默升级,静默卸载的能力。如应用商店或游戏中心在集成VA后可以避免需要用户手动点击确认安装的操作,做到下载后立即安装到VA内,给用户带来“小程序”搬的体验,彻底避免了应用不易被用户安装上的问题。

  5. 可以满足您的APP管控需求
    您可以通过VA清楚的掌握APP访问了哪些系统API,哪些敏感数据,哪些设备信息等。比如APP是否访问了联系人,相册,通话记录,是否访问了用户的地理位置等信息。 当然,您还可以通过VA控制或者构造自定义的信息给这些APP。不仅于此,您还可以获取到APP的私有数据,比如聊天数据库等。总之通过VA提供的应用管控能力,您可以轻易控制APP的一切行为,甚至修改APP与服务器交互内容等。

  6. 可以满足您的海外市场需求
    VA实现了对Google服务的支持,以支持海外的App运行,比如Twitter、Messenger、WhatsApp、Instagram、FaceBook、Youtube等。

  7. 可以满足您的VR程序移植需求
    可以通过VA的Hook能力拦截VR设备的API,让您无需改动代码即可将VR程序移植到新的设备。

  8. 可以满足您几乎一切能想到的需求
    VA对于内部的App具有完全的监管和控制能力,几乎能满足您的一切需求!

  9. 同时VA也是该技术领域唯一一款对外商业授权的产品
    截止目前已有上百家授权客户在付费使用VirtualApp商业版代码,集成VirtualApp代码的APP日启动次数超过2亿次,众多安卓工程师向我们提供不同场景下的用户反馈,通过我们技术团队不断优化迭代,不断提升产品性能与兼容性!

VA的特有能力

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

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

  • 多开能力
    VA不仅可以“双开”,独特的多用户模式支持用户在内部无限多开同一个App。

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

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

详细(下拉打开) 1. 服务请求控制,首先VA直接提供了一些服务请求的拦截,您可以在集成VA的时候方便的定制这些服务请求,包括但远不限于(App请求安装apk/App请求打开某些文件/App请求定位数据/App请求手机信息等等)

2. 系统API控制,VA虚拟并实现了整个安卓系统框架,这也是VA可以免安装在内部运行apk的原理,您可以对虚拟框架的实现进行修改以动态监测分析App的行为等;除此之外,您还可模拟一些系统行为以实现一些在外部难以实现的需求(例如游戏手柄)。

3. 内存读写,VA可以无需Root读写内部App进程的内存。

4. 免Root调试,VA可以免Root调试(ptrace)内部的App进程,基于此您还可以实现免Root的进程注入。

5. 加载任意“插件”和“行为”,VA内部的App进程由VA的框架Client端代码派生而来,所以您可以在进程的入口代码插入任何“加载”以及“控制”逻辑。这些实现都非常简单。

6. 方法Hook,VA内置了一套运行于Android各个版本(直到AndroidQ)的Xposed框架以及native hook框架,基于此您可以方便的Hook任意内部App的任意Java/Native方法。可以轻松实现一个免Root的Xposed环境(有实例代码)。

7. 文件控制,VA内置了完整的文件重定向,可以方便的控制内部App的文件的读写,基于此可以实现对文件的保护加密等功能。

8. 注:以上控制能力均有实现代码或者实例以作参考。

VA的其他特性

  • 高性能
    进程级“虚拟机”,VA独特的实现方式让其性能几乎于原生App一致,更不需要普通虚拟机漫长的启动。

  • 全版本支持
    支持5.0-13.0,支持32位/64位app,支持ARM以及X86处理器。并且支持未来将更新的Android版本。

  • 易扩展与集成
    VA 的集成方式与普通Android库类似,即使您的App已经完成上线,您也方便的可以集成VA,享受VA带来的能力。

  • 支持Google服务
    提供Google服务的支持,以支持海外的App

VA与其他技术方案对比

在做企业级移动安全时,往往需要对APP进行管控,以下是列出的可能技术方案对比:

技术方案 原理简介 点评 运行性能 兼容稳定性 项目维护成本
二次打包 通过反编译目标APP,加入自己的控制代码,重新打包 1.现在的APP几乎都有加固或防篡改保护,重打包已是一件非常困难的事
2.手机系统也会检测APP是否被重打包,如果重打包,会直接提示用户存在安全风险,甚至不让安装
3.针对每一个APP,甚至每一个版本都要深入去逆向分析,耗时耗力,难于维护
优秀
定制ROM 通过定制系统源码,编译刷到指定手机 只能针对指定的内部手机,局限性太大,无法扩展 优秀 优秀
ROOT手机 通过ROOT手机,刷入xposed等类似框架 1.ROOT手机现在本身已是一件不太可能的事
2.现实中也很难让用户能去ROOT自己的手机
优秀
VA 轻量级虚拟机,速度快,对设备要求低 无上述风险点 优秀 优秀,有上百家企业在同时测试反馈 低,VA提供了API并有专业的技术团队保障项目稳定运行

通过以上对比可以看出,VA是一款优秀的产品,并且能降低您的开发维护成本!

集成VA步骤

第1步:在您的Application中调用VA接口VirtualCore.get().startup()来启动VA引擎
第2步:调用VA接口VirtualCore.get().installPackageAsUser(userId, packageName)将目标APP安装到VA中
第3步:调用VA接口VActivityManager.get().launchApp(userId, packageName)启动APP
仅通过以上3个API就完成了基础使用,VA已屏蔽了复杂的技术细节,并提供了接口API,让您的开发变得很简单!

VA的兼容稳定性

VA已被上百家企业进行了广泛测试,包含数十家上市公司高标准的测试及反馈,几乎涵盖了海内外的各种机型设备和场景! 为您的稳定运行提供了充分的保障!

截止目前,支持的系统版本:

系统版本 是否支持
5.0 支持
5.1 支持
6.0 支持
7.0 支持
8.0 支持
9.1 支持
10.0 支持
11.0 支持
12.0 支持
13.0 支持

支持的APP类型:

APP类型 是否支持
32位APP 支持
64位APP 支持

支持的HOOK类型:

Hook类型 是否支持
Java Hook 支持
Native Hook 支持

支持的CPU类型:

Hook类型 是否支持
ARM 32 支持
ARM 64 支持

集成VA遇到问题如何反馈?

购买授权后我们会建立微信群,有任何问题可以随时反馈给我们,并根据优先级在第一时间处理!

VA开发文档

VA开发文档请参考:开发文档

VirtualApp虚拟机技术归属于:济宁市罗盒网络科技有限公司,于2015年至2021年申请多项VirtualApp知识产权,受中华人民共和国知识产权法保护。当您需要使用Github上的代码时,请购买商业授权,获取商业授权后将可以收到最新VirtualApp商业版全部源代码。上百家授权客户在付费使用VirtualApp商业版代码,集成VirtualApp代码的APP日启动次数超过2亿次,众多安卓工程师向我们提供不同场景下的用户反馈,通过我们技术团队不断优化迭代,VirtualApp商业版代码性能更好、兼容性更高。当您的公司获取授权后,将成为其中一员,享受这些不断迭代完善后的技术成果。并可以和我们的授权客户进行运营、技术及商业上的互动合作。

负责人:张总
手机:130-321-77777
微信:10890

您如果未经授权将VirtualApp用于内部使用、商业牟利或上传应用市场,我们将取证后报警(侵犯著作权罪)或起诉,这将对您所属公司造成刑事责任及法律诉讼,影响到您公司的商誉和投资。购买商业授权为您节省大量开发、测试和完善兼容性的时间,让您更多时间用于创新及盈利。罗盒科技已在2020年报警和起诉了一些个人及公司。

为响应国家对于知识产权的保护号召!凡举报自己所在公司或其他公司未经授权,违法使用VirtualApp代码开发产品的,一经核实给予现金奖励。我们会对举报人身份保密!举报联系微信:10890

商业版主要更新

  1. 兼容最新Android 13.0
  2. 不易被杀毒软件误报
  3. 框架优化,性能大幅提升
  4. 手机系统及APP兼容性大幅提升
  5. 完美运行Google服务
  6. 支持运行纯64位App
  7. 内置XPosed Hook框架
  8. 增加定位模拟代码
  9. 增加改机代码
  10. 其他400+项问题的修复和改进,详情请见下表

2017年-2022年商业版代码更新详细

2022年 7月27号 至 2022年 8月19号 商业版代码更新内容

413、Android 13.0继续适配
412、主版调整为64bit
411、修复某些华为手机上App无法打开的问题
410、修复OPPO 13.0上无法打开应用的问题
409、修复百度语音TTS的调用问题
408、修复数据隔离后仍可以访问sdcard根目录的问题
407、修复鸿蒙手机上的崩溃问题
406、修复Debug模式下Hook失效问题
405、添加对BinderInvocationStub的混淆处理,避免混淆后崩溃问题
404、修复Native层调用free函数可能导致崩溃的问题
403、修复微信由于虚拟文件系统导致的崩溃问题

2022年 7月9号 至 2022年 7月26号 商业版代码更新内容

402、Android 13.0适配
401、修复开启虚拟储存后文件路径的处理问题
400、修复12.0上Notification没有提示的问题

2017年 12月 至 2022年 5月 31 日 商业版代码更新内容(下拉打开)


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK