360DroidPlugin

首页

产品白皮书

安卓沙箱引擎

安卓沙箱引擎360DroidPlugin,可广泛应用于应用多开、游戏免安装运行、隐私数据保护等业务场景,为开发者提供一套强大且稳定的“轻量级Android虚拟机”,让安卓移动应用在沙盒内独立运行。同时有效解决沙箱兼容问题,让开发者专注于业务开发

产品能力
兼容性强

支持最新的安卓13系统,深度适配 全系手机厂商Rom,为开发者提供稳定流畅的沙箱环境

快速体验

引擎可直接实现多开能力和Hook SDK,无需二次开发,即可满足多场景业务需求

业务创新

引擎支持应用数据隔离、手机参数更改以及自动点击器等辅助能力,让业务创新快人一步

使用便捷

用户可选择订阅或终身授权等多类套餐,并提供源码集成、SDK嵌入等多种接入方式

服务完善

引擎源于360千万级产品“分身大师”,可保证快速响应和持续更新,同时支持客户定制化服务

灵活扩展

可搭配360完善的移动服务,提供安全加固、广告聚合、杀毒清理等扩展能力,实现服务灵活组合

应用场景
多开分身

360DroidPlugin可轻松实现APP双开或者多开,各类移动应用均可多账号同时在线,免去切换困扰

游戏盒子

无论是大型游戏,还是轻量级小游戏,均可以免下载免安装,即点即玩。解决下载慢、高网耗、安装包占用内存大等问题

隐私安全

面对复杂多变的Android终端环境360DroidPlugin支持应用隐藏、图标伪装、名称修改和敏感权限管控,全面保护隐私和财产安全

1. 背景
2. 功能概述
2.1.产品满足的场景
2.2.产品特有能力
3. 功能介绍
3.1.应用分身/应用多开
3.2.应用静默下载/安装
3.3.应用统一管理
3.4.应用运行环境修改
3.5.隐私安全保护
3.6.政企安全
4. 360DroidPlugin优势介绍
5. 不支持的业务类型

近年来随着智能手机的普及,安卓系统逐步发展为最为广泛使用的手机操作系统。安卓系统为应用的开发提供了十分自由,开放的环境,可以针对性开发出许多功能强大且使用便捷的产品。但由此也带来了诸多隐患,许多应用程序可以通过漏洞在不被用户授权的情况下监控其他程序的运行,导致个人隐私甚至重要文件的泄露。 安卓沙箱引擎是解决上述问题的一个绝佳方案。沙箱引擎数据隔离的特性能够防止手机权限被应用程序恶意获取,同时也可以阻止应用程序读取隐私数据和文件。利用沙箱引擎的特性,还能做到应用分身,应用免安装运行等诸多意想不到的功能。360 公司深耕于沙箱引擎技术,并利用长期成熟的开发经验推出了功能强大的安卓沙箱引擎——360DroidPlugin。

360DroidPlugin是基于 360 核心安卓沙箱引擎技术,支持安卓应用程序在沙箱虚拟引擎内部运行的“轻量级安卓虚拟机”。对于引擎内部运行的应用,360DroidPlugin有着极高的权限。所有应用的运行,安装,卸载,消息处理,文件存储等操作都可以通过360DroidPlugin统一管理。
    此产品接入简单且功能强大,适配市面主流厂商操作系统及安卓版本,方便中小微企业利用此技术,对自身业务进行提效和创新。360DroidPlugin广泛应用在“分身多开、游戏盒子、游戏手柄、隐私安全、政企安全、视频美颜“等业务领域,拥有运行稳定、兼容性好、Hook 能力强、扩展功能丰富等优点。

1.可以满足您的“双开/多开”需求
       360droidplugin可以让您在同一部手机上安装多个微信/QQ/WhatsApp/Facebook等APP,实现一部手机,多个账号同时登录。
       2.可以满足您的“移动安全”需求
       360droidplugin提供了一整套内部与外部的隔离机制,包括但不限于(文件隔离/组件隔离/进程通讯隔离),简单的说360droidplugin内部就是一个“完全独立的空间”。 通过360droidplugin可将工作事务与个人事务安全的隔离,互不干扰。稍作定制即可实现应用行为审计、数据加密、数据采集、数据防泄漏、防攻击泄密等移动安全相关的需求。
       2.1.应用行为审计
    通过360droidplugin提供的HOOK能力可以实现实时监测用户使用行为,将违规信息上传到服务器;并能轻易实现诸如时间围栏(在某个时间段内能否使用应用的某个功能)、地理围栏(在某个区域内能否使用应用的某个功能)、敏感关键字过滤拦截等功能需求。
       2.2.数据加密
       通过360droidplugin提供的HOOK能力可以实现对应用的全部数据/文件加密,保证数据/文件落地安全。
       2.3.数据采集
       通过360droidplugin提供的HOOK能力可以实现应用数据的实时无感上传需求,如聊天记录、转账记录等,防止事后删除无法追溯。
       2.4.数据防泄漏
       通过360droidplugin提供的HOOK能力可以实现应用防复制/粘贴、防截屏/录屏、防分享/转发、水印溯源等需求。
       2.5.防攻击泄密
       通过360droidplugin提供的应用管控能力可以将APP获取短信/通讯录/通话记录/后台录音/后台拍照/浏览历史/位置信息等隐私相关的行为完全控制在沙盒中,防止木马/恶意APP获取到用户真实的隐私数据,造成泄密等严重后果。
       3.可以满足您的“免ROOT HOOK”需求
       360droidplugin提供了Ja360droidplugin与Native的Hook能力,通过360droidplugin,您可以轻易实现诸如虚拟定位、改机、APP监控管理、移动安全等各种场景需要的功能。
       4.可以满足您的“APP静默安装”需求
       360droidplugin提供了APP静默安装,静默升级,静默卸载的能力。如应用商店或游戏中心在集成360droidplugin后可以避免需要用户手动点击确认安装的操作,做到下载后立即安装到360droidplugin内,给用户带来“小程序”搬的体验,彻底避免了应用不易被用户安装上的问题。
       5.可以满足您的“APP管控”需求
       您可以通过360droidplugin清楚的掌握APP访问了哪些系统API,哪些敏感数据,哪些设备信息等。比如APP是否访问了联系人,相册,通话记录,是否访问了用户的地理位置等信息。 当然,您还可以通过360droidplugin控制或者构造自定义的信息给这些APP。不仅于此,您还可以获取到APP的私有数据,比如聊天数据库等。总之通过360droidplugin提供的应用管控能力,您可以轻易控制APP的一切行为,甚至修改APP与服务器交互内容等。
       6.可以满足您的“VR程序移植”需求
       可以通过360droidplugin的Hook能力拦截VR设备的API,让您无需改动代码即可将VR程序移植到新的设备。
       7.可以满足您“几乎一切能想到”的需求
       360droidplugin对于内部的App具有完全的监管和控制能力,几乎能满足您的一切需求!

  • 克隆能力
  •       可以克隆外部系统中已经安装的App,并在内部运行,互不干扰。典型应用场景为App双开。
  • 免安装能力
  •       除了克隆已安装之外,360droidplugin可以直接在内部安装(外部无感知)apk,并在内部直接运行。典型应用场景为插件化,独立应用市场等。
  • 多开能力
  •       360droidplugin不仅可以“双开”,独特的多用户模式支持用户在内部无限多开同一个App。
  • 内外隔离能力
  •       360droidplugin是一个标准的沙盒,或者说“虚拟机”,提供了一整套内部与外部的隔离机制,包括但不限于(文件隔离/组件隔离/进程通讯隔离),简单的说360droidplugin内部就是一个“完全独立的空间”。在此基础之上,稍作定制即可实现一部手机上的“虚拟手机”。当然您也可以发挥想象,定制成应用于数据加密,数据隔离,隐私保护,企业管理的应用系统。
  • 对于内部App的完全控制能力
  •        360droidplugin对于内部的App具有完全的监控和控制能力,这点在未Root的外部环境中是无法实现的。

    360DroidPlugin支持应用程序在引擎内部运行的功能。360DroidPlugin由三个主要部分组成,分别为APP层,Framework层,Native层。
        其中APP 层是由引擎提供的内部空间,在这个空间中统一管理所有由引擎内部运行的应用程序。引擎对内部的应用程序有着最高管理权限,可用于安装和管理需要在其内部运行的应用程序,包括但不仅限于应用列表、应用版本、应用路径、应用签名等。因为APP 层在引擎内部创造了一个内部空间,因此APP 层内运行的应用程序完全和系统是隔离的。
        360DroidPlugin中运行的应用程序需要与手机系统产生交互,才能保证应用程序内的各项功能正常使用。然而引擎内部运行的应用程序和系统是隔离的,因此需要提供一个中间结构用于链接内部应用与手机系统。Framework层主要包含一套模拟Android framework的框架,主要给Android Framework 和APP层做代理,处于APP层和Android framework之间,充当App层访问Android framework的桥梁。DP Framework层在内部应用程序以及手机系统间的主要工作内容如下:
        1. APP 的“去”:这部分工作主要是内部应用程序对系统发出请求。APP层中的应用程序访问的所有系统的Service首先会被Framework接收。所有接收的请求全部被Framework代理,它会修改应用程序的请求参数,将其中与应用程序相关的参数全部修改成为宿主(引擎产品接入方)的参数。这样系统就能够正确识别这些请求,修改之后的请求之后再发送给Android framework,系统校验无误后会进一步处理上述请求。经过Framework的处理,虽然APP层内运行的应用程序完全和系统是隔离的,但系统仍顺利处理了内部应用程序对系统发出的请求。
        2. APP 的“回”:内部应用程序发送请求给系统后,还需要从系统接收处理后的结果。系统校验参数无问题后,会将请求处理的结果返回给Framework。此时返回的结果是针对引擎的, Framework接收到返回的结果后还需要再将修改过的参数还原成APP层发出请求的参数。通过Framework的处理, APP层和Android系统都能够成功识别发出的请求以及返回的结果。这样交互就通过Framework搭建的桥梁跑通了。
        Native层主要完成IO重定向和APP层与安卓系统交互的参数修改。IO重定向是通过将APP层的所有IO访问的路径全部修改成引擎内部的存储路径,通过IO HOOK的方式,完成路径的替换。安卓系统的很多系统函数和参数需要通过Native层来做HOOk完成修改,完成系统数据的校验。
        基于上述原理,360DroidPlugin可以对应用程序进行全面控制,可以实现多种突破安卓系统限制的能力,并广泛应用在多种场景中。360DroidPlugin目前广泛应用在如下领域:
        1. 应用分身/应用多开
        2. 应用静默下载/安装
        3. 应用统一管理
        4. 应用运行环境修改
        5. 隐私安全保护
        6. 政企安全

    由于安卓系统会对安装的应用进行校验,因此相同包名的应用无法在同一个手机中安装多个。360DroidPlugin有对内部运行应用统一管理的能力,因此可以突破这一限制。通过在应用安装过程中调整userid参数,可以快捷简单实现应用的多开能力。目前一些手机厂商在系统中提供了应用分身的能力,360DroidPlugin与之相比有如下优势。
    1. 适配能力强:手机厂商只支持微信,QQ等极少部分主流应用的分身。相比之下,360DroidPlugin支持几乎所有安卓应用程序的分身。另外,360DroidPlugin可支持最新的安卓13,兼容各个手机厂商的操作系统。
    2. 分身能力强大:手机厂商仅支持应用程序双开,360DroidPlugin 理论上支持无限分身。整个分身流程十分迅速,真正意义上实现点击即用的效果。所有分身的应用程序可以自主选择是否在手机桌面上展示,可实现分身隐藏在产品内部的能力。
    3. 分身之间可关联:所有内部运行的应用与系统中应用一样可以相互调用。分身应用可通过分身微信完成登录,淘宝可通过支付宝进行支付等等。整体使用体验与系统应用一致。
    4. 相同分身数据隔离:在使用微信,淘宝等应用时,不同分身登录不同账号,分身之间不会相互影响。不同分身数据相互隔离,真正实现多个账号同时在线,避免频繁切换的良好使用体验。

    360DroidPlugin 支持应用静默下载安装的功能。通常用户在应用下载完成后,需要经过系统安装过程。很多手机厂商在安装过程中加入了许多限制,引导用户到自己厂商的应用市场下载应用程序。对于未在应用市场上架的应用,厂商会展示“风险提醒”,还有些厂商要求用户输入密码等其他一系列繁琐操作阻止用户进行安装。
          360DroidPlugin中的应用程序运行在引擎内部,因此下载到360DroidPlugin内部的应用无需经过系统安装的过程。下载完成后点击即可直接启动,整个应用的下载使用过程十分流畅。在用户需要短时间内安装大量应用程序的场景,此能力显得更为突出,这个功能也被广泛应用于 “游戏盒子”场景,允许用户对大量游戏进行试玩体验,提升了游玩的效率。除了应用的下载,应用的升级同样可以静默完成。此能力保证用户升级到最新的版本,可以对应用新版本的及时部署提供重要帮助,与应用市场中的应用更新体验一致。

    360DroidPlugin提供了对应用统一管理的能力。可以实现应用批量安装,启动,停止,升级,卸载等操作。上述操作均可通过一行代码实现,使用简单快捷。支持给应用添加应用锁,确保指定应用加密安全使用。可以自定义修改应用的图标,名称,轻松管理所有内部应用。

    360DroidPlugin可将应用程序向系统请求的信息进行拦截,并把修改 后的参数返回给应用程序,以此达到应用运行环境修改的目的。产品支持机型伪装功能,针对特定应用不显示本机的机型,有多种主流手机品牌及型号可以伪装。除此之外,更支持手机唯一识别码,安卓ID,手机序列号,SIM卡号,WIFI连接名称,Mac地址等参数的修改。

    360DroidPlugin提供了一个完全独立的内部空间,因此可以实现文件数据,隐私数据的隔离和保护。产品可以对应用程序的运行进行实时监控,并对应用数据的请求及接收消息进行拦截。在应用程序请求读取文件,相册等数据时,引擎可以将请求重定向到内部空间,防止系统中的资料被应用程序读取。当应用程序通过后台读取短信/通讯录/通话记录/后台录音/后台拍照/浏览历史/位置信息等隐私信息时,360DroidPlugin完全可以将此类行为拦截,或返回给应用程序虚拟信息,防止应用程序恶意获取用户真实隐私数据,造成隐私泄露等严重后果。另外,产品还可以防止应用程序复制粘贴内容,防止录屏截屏等等。应用程序运行在内部能够好地进行应用隐藏,结合图标名称修改,运行环境修改等系列能力可以最大程度保护用户隐私安全。

    360DroidPlugin的特性能够很好地应用在政企安全场景。通过在产品中预置应用程序,能够保证使用应用程序的安全稳定性。同时,通过引擎能力的管理,限制引擎中应用程序的下载和使用。上述能力保证了引擎独立空间的纯净,从源头上保证内部应用数据和系统隔离。此外,360DroidPlugin还可以实现应用行为审计。通过HOOK能力实时监测用户使用行为,第一时间将违规行为或违规信息上报。HOOK能力还可以实现应用数据的无感知上传,保证使用记录可追溯。前面提到的隐私安全保护能力,也能够保证政企机密信息防泄漏,防攻击,可广泛应用于政府、军队、企业对移动安全合规和审计的需求。

  • 兼容性强
  •     支持最新的安卓13系统,深度适配全息手机厂商Rom,为开发者提供稳定流畅的沙箱环境。
  • 快速体验
  •     引擎可直接实现多开能力和HOOK SDK,无需二次开发,即可满足多场景业务需求。
  • 业务创新
  •     引擎支持应用数据隔离,手机参数修改以及自动点击等辅助能力,让创新快人一步。
  • 使用便捷
  •     用户可选择订阅或终身授权等多类套餐,并提供源码集成,SDK嵌入等多种接入方式。
  • 服务更完善
  •      引擎源于360千万级产品“分身大师”,可保证快速响应和持续更新,同时支持客户定制服务。
  • 灵活扩展
  •     可搭配360完善的移动服务,提供安全加固、广告聚合、杀毒清理等扩展能力,实现服务灵活组合。
  • 动态更新
  •     支持热更新,引擎升级无需手动更新版本。最新补丁通过动态加载方式部署,保证引擎版本的到达速度和到达率。
  • 产品适配
  •     产品可实现360加固加白,并适配其他主流加固方案。让开发专注于功能开发,节省产品适配的开发成本。
    考虑到部分业务可能带来法律法规及政策风险,本产品不支持以下业务的开发:
  • 用于传播病毒,木马等违规违法业务
  • 修改地理位置、修改图片、修改声音及视频内容等功能
  • 微信一键转发,一键集赞,一键抢红包等影响微信功能的相关业务
  • 钉钉远程打卡等侵入计算机信息系统的相关业务
  • 其他有法律法规或政策风险的业务类型
  • 1. 接口列表
    2. DPCore
    3. 接口回调
    a.安装回调
    b.启动回调
    c.Activity全局生命周期回调
    4. 状态值

    360Droidplugin接口⽂档

    1. 接口列表

    类别 方法
    初始化 init
    安装 installPackageFromFile installPackageFromSys
    启动分身 launchApp launchAppActivity
    卸载分身 uninstallPackage
    分身是否安装 isInstalled
    获取分身ApplicationInfo getApplicationInfo
    获取分身PackageInfo getPackageInfo
    获取当前包名和userId下正在运行的进程 getRunningAppProcesses
    获取当前userId下安装的分身 getInstalledPackages
    清除数据 clearDataStorage clearCacheStorage
    杀死分身应用 forceStop
    注册全局Activity生命周期回调 registerActivityLifecycleCallbacks

    360Droidplugin接口⽂档

    2. DPCore

    
                  package com.qihoo.droidplugin;
                  public class DPCore {
                    /**
                    *	初始化⽅法
                    *	@param context 全局context
                    *	@throws IllegalArgumentException context为null
                    */
                    public static void init(Context context) {}
                    /**
                    *	通过⽂件路径安装分⾝应⽤
                    *	@param filePath apk路径
                    *	@param userId 分多个情况下通过userId做区分,和Android中多⽤⼾类似
                    *	@param callback 结果回调
                    *	@throws PackageManager.NameNotFoundException filePath⽂件不存在
                    */ 
                    public static void installPackageFromFile(String filePath, int userId, IPackageCallback callback) {}
                    /**
                    *	安装系统应⽤列表中的apk
                    *	@param packageName 包名
                    *	@param userId 分多个情况下通过userId做区分,和Android中多⽤⼾类似
                    *	@param callback 结果回调
                    *	@throws PackageManager.NameNotFoundException packageName未找到
                    */
                    public static void installPackageFromSys(String packageName, int userId, IPackageCallback callback) {}
                    /**
                    *	启动分⾝应⽤
                    *	@param packageName 包名
                    *	@param userId 分多个情况下通过userId做区分,和Android中多⽤⼾类似
                    *	@param callback 启动回调
                    */
                    public static void launchApp(String packageName, int userId, IAppCallback callback) {}
                    /**
                    *	启动分⾝应⽤内部Activity
                    *	@param intent Activity intent
                    *	@param userId 分多个情况下通过userId做区分,和Android中多⽤⼾类似
                    */
                    public static void launchAppActivity(Intent intent, int userId) {}
                    /**
                    *	卸载分⾝
                    *	@param packageName 包名
                    *	@param userId 分多个情况下通过userId做区分,和Android中多⽤⼾类似
                    *	@param callback 结果回调
                    */
                    public static void uninstallPackage(String packageName, int userId, IPackageCallback callback) {}
                    /**
                    *	分⾝是否安装
                    *	@param packageName 包名
                    *	@param userId 分多个情况下通过userId做区分,和Android中多⽤⼾类似
                    *	@return 已安装:true,未安装:false
                    */
                    public static boolean isInstalled(String packageName, int userId) {}
                    /**
                    *	获取分⾝ApplicationInfo
                    *	@param packageName 包名
                    *	@param flags 和系统PackageManager.getApplicationInfo⼀致
                    *	@param userId 分多个情况下通过userId做区分,和Android中多⽤⼾类似
                    *	@return ApplicationInfo
                    */
                    public static ApplicationInfo getApplicationInfo(String packageName, int flags, int userId) {}
                    /**
                    *	获取分⾝PackageInfo             
                  

    360Droidplugin接口⽂档

    3. 接口回调

    
                      *	@param packageName 包名
                      *	@param flags 和系统PackageManager.PackageInfo⼀致
                      *	@param userId 分多个情况下通过userId做区分,和Android中多⽤⼾类似
                      *	@return PackageInfo
                      */
                      public static PackageInfo getPackageInfo(String packageName, int flags, int userId) {}
                      /**
                      *	获取当前包名和userId下正在运⾏的进程
                      *	@param packageName 包名
                      *	@param userId 分多个情况下通过userId做区分,和Android中多⽤⼾类似
                      *	@return 返回RunningAppProcessInfo列表
                      */
                      public static List getRunningAppProcesses(String packageName, int userId) {}
                      

    360Droidplugin接口⽂档

    a. 安装回调

    
                    package com.qihoo.droidplugin;
                    public interface IPackageCallback {
                      /**
                      *	开始安装
                      *	@param packageName
                      */
                      void onStarted(String packageName);
                      /**
                      *	安装进度
                      *	@param packageName
                      *	@param progress 1-100
                      */
                      void onProgress(String packageName, int progress);
                      /**
                      *	安装完成
                      *	@param packageName
                      *	@param status 返回状态值
                      */
                      void onFinished(String packageName, int status);
                    }
                  

    360Droidplugin接口⽂档

    b. 启动回调

    
                    package com.qihoo.droidplugin;
                    public interface IAppCallback {
                      /**
                      *	冷启动回调
                      *	@param isCold 是否为冷启动
                      *	@param intent 启动intent
                      *	@param pkgName pkg
                      *	@param processName Activity⽬标进程
                      */
                      void onAppLaunch(boolean isCold, Intent intent, String pkgName, String processName);
                      /**
                      *	Application 创建成功
                      *	@param pkgName
                      *	@param processName ⽬标进程
                      */
                      void onApplicationCreate(String pkgName, String processName);
                      /**
                      *	Activity onCreate回调
                      */
                      void onActivityCreate();
                      /**
                      *	Activity onResume回调
                      */
                      void onActivityResume();
                      /**
                      *	错误回调
                      *	@param status 错误状态值
                      */
                      void onError(int status);
                    }
                  

    360Droidplugin接口⽂档

    c. Activity全局生命周期回调

    
                    package com.qihoo.droidplugin;
                    public interface IActivityLifecycleCallback {
                      void onApplicationOnCreate(Application app, int userId);
                      void onActivityOnCreate(Activity activity, int userId);
                      void onActivityOnStart(Activity activity,int userId);
                      void onActivityOnResume(Activity activity,int userId);
                      void onActivityOnPause(Activity activity,int userId);
                      void onActivityOnStop(Activity activity,int userId);
                      void onActivityOnDestroy(Activity activity,int userId);
                    }
                  

    360Droidplugin接口⽂档

    4. 状态值

    
                    package com.qihoo.droidplugin;
                    public class DPConstant {
                      // 安装成功
                      public final static int INSTALL_SUCCESS = 0;
                      // ⽆效的apk
                      public final static int INSTALL_FAILED_INVALID_APK = -1;
                      // 已存在更⾼版本的apk
                      public final static int INSTALL_EXISTS_HIGHER_VERSION = -2;
                      // 其它
                      public final static int INSTALL_FAILED_UNKNOWN = -3;
                      // 启动成功
                      public final static int LAUNCH_ACTIVITY_SUCCESS = 0;
                      // 正在升级中
                      public final static int LAUNCH_ACTIVITY_PACKAGE_UPGRADING = 1;
                      // 正在安装中
                      public final static int LAUNCH_ACTIVITY_PACKAGE_INSTALLING = 2;
                      // 启动失败
                      public final static int LAUNCH_ACTIVITY_FAILED = -1;
                      // ipc失败等原因
                      public final static int LAUNCH_ACTIVITY_UNKNOWN = -2;
                      // package未找到
                      public final static int LAUNCH_ACTIVITY_PACKAGE_NOT_FOUND = -3;
                    }
                  

    联系电话 :13051331441 | 电子邮箱 : g-sandbox@360.cn | Copyright©2005-2022 360.cn 版权所有 360互联网安全中心 | 京公网安备 11000002000006号 | 北京奇虎科技有限公司

    扫码进群