CN109491725B - 应用程序可交互多开方法和系统、存储介质、电子设备 - Google Patents

应用程序可交互多开方法和系统、存储介质、电子设备 Download PDF

Info

Publication number
CN109491725B
CN109491725B CN201811339312.XA CN201811339312A CN109491725B CN 109491725 B CN109491725 B CN 109491725B CN 201811339312 A CN201811339312 A CN 201811339312A CN 109491725 B CN109491725 B CN 109491725B
Authority
CN
China
Prior art keywords
target program
program
host process
file directory
file
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201811339312.XA
Other languages
English (en)
Other versions
CN109491725A (zh
Inventor
陈列奋
马朔
徐振涛
陈泽敏
彭颖辉
唐铭舜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Flamingo Network Guangzhou Co ltd
Original Assignee
Flamingo Network Guangzhou Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Flamingo Network Guangzhou Co ltd filed Critical Flamingo Network Guangzhou Co ltd
Priority to CN201811339312.XA priority Critical patent/CN109491725B/zh
Publication of CN109491725A publication Critical patent/CN109491725A/zh
Application granted granted Critical
Publication of CN109491725B publication Critical patent/CN109491725B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明涉及一种应用程序可交互多开方法和系统、存储介质、电子设备。本发明所述的根据第一目标程序启动指令,在运行环境中创建第一宿主进程;加载第一目标程序的代码至第一宿主进程,并在第一宿主进程中启动第一目标程序;获取第一目标程序的交互请求指令;根据所述交互请求指令,获取被调用目标程序信息;根据所述交互请求指令,在运行环境中创建第二宿主进程;加载被调用目标程序的代码至第二宿主进程,并在第二宿主进程中启动被调用目标程序。本发明所述的一种应用程序可交互多开方法,其能够在一个运行环境中实现对多个应用程序的多开,且多个应用程序之间可交互。

Description

应用程序可交互多开方法和系统、存储介质、电子设备
技术领域
本发明涉及移动通信设备的应用程序管理方法,特别是涉及一种应用程序可交互多开方法和系统、存储介质、电子设备。
背景技术
对于多数的安卓应用程序(例如社交软件、游戏软件等),用户通常具有多个账户,虽然这些应用程序都有不同程度的切换账号的方式,但是使用上的体验都不尽人意,目前市场上安卓系统的智能终端,一个应用程序只能启动一个实例运行,不能实现应用程序多开。现有技术中,通过修改应用程序的包名,将应用程序重新打包成为一个新的应用程序,从而突破系统的限制,实现了一个应用多个实例运行,然而,多开出来的应用程序无法进行交互,导致部分功能异常。例如,当一个多开的软件在运行过程中,需要调用另一个软件进行登录或授权等操作时,由于无法感知到运行环境中的另一个软件,从而无法实现交互和调用,就无法进行登录或授权操作,因此,导致该软件的部分功能异常。
发明内容
基于此,本发明的目的在于,提供一种应用程序可交互多开方法,其能够在一个运行环境中实现对多个应用程序的多开,且多个应用程序之间可交互。
本发明是通过如下方案实施的:
一种应用程序可交互多开方法,包括如下步骤:
根据第一目标程序启动指令,在运行环境中创建第一宿主进程,其中,所述运行环境为在一个安卓应用程序内部,构建出的一个微型的安卓操作系统;
加载第一目标程序的代码至第一宿主进程,并在第一宿主进程中启动第一目标程序;
获取第一目标程序的交互请求指令;
根据所述交互请求指令,获取被调用目标程序信息;
根据所述交互请求指令,在运行环境中创建第二宿主进程;
加载被调用目标程序的代码至第二宿主进程,并在第二宿主进程中启动被调用目标程序。
本发明所述的应用程序可交互多开方法,其能够在一个运行环境中创建多个宿主进程,在不同的宿主进程中启动不同的目标应用程序,实现对多个应用程序的多开,且在运行环境中,多个应用程序之间可交互,可以更加完整的使用多开的应用程序的功能,使用更加方便。
在一种实施例中,根据所述交互请求指令,获取被调用目标程序信息后,还包括如下步骤:
如果所述被调用目标程序不能在所述运行环境中运行,则将所述交互请求指令分发至所述运行环境外部。
在一种实施例中,根据所述交互请求指令,获取被调用目标程序信息后,还包括如下步骤:
如果所述被调用目标程序已在所述运行环境中运行,则将所述交互请求指令发送至所述被调用目标程序。
在一种实施例中,还包括如下步骤:
获取所述被调用目标程序的文件目录访问请求;
如果所述被调用目标程序的文件目录访问请求所对应的文件目录为非允许访问文件目录,则丢弃所述被调用目标程序的文件目录访问请求。
被调用的目标程序可能会通过遍历运行环境中文件目录的方式,来校验调用请求者的身份,因此,如果检测到被调用目标程序的文件目录访问请求所对应的文件目录为非允许访问文件目录时,将该访问请求丢弃,可以防止被调用的目标程序发现当前的运行环境被修改。
在一种实施例中,还包括如下步骤:
获取所述第一目标程序的文件目录访问请求;
将第一目标程序的文件目录访问请求中的文件路径重定向为所述第一宿主进程所指定的文件路径。
将第一目标程序的访问文件路径映射至第一宿主进程所指定的文件路径,实现了多开的应用程序与原应用程序之间数据的隔离和共存,同时,不同的宿主进程指定不同的文件路径,使多开出的应用程序之间的数据实现隔离,互不干扰。
在一种实施例中,将第一目标程序的文件目录访问请求中的文件路径重定向为所述第一宿主进程所指定的文件路径后,还包括如下步骤:
获取文件目录访问请求结果;
将文件目录访问请求结果中的文件路径反重定向为原始文件目录访问请求中的文件路径。
将请求结果中的文件路径反重定向为原始文件目录访问请求中的文件路径,使第一目标程序认为自己确实是在访问期望访问的路径,增加运行环境的真实性,避免第一目标程序出错。
在一种实施例中,获取所述第一目标程序的文件目录访问请求后,还包括如下步骤:
如果所述第一目标程序的文件目录访问请求所对应的文件目录为非允许访问文件目录,则丢弃所述第一目标程序的文件目录访问请求。
防止第一目标程序通过遍历运行环境中文件目录的方式,来检测运行环境的真实性。
在一种实施例中,在运行环境中创建第一宿主进程后,还包括如下步骤:
根据所述第一目标程序的包名,生成路径重定向规则,所述路径重定向规则根据第一目标应用程序的相应请求,将所述第一目标程序运行时生成或访问的文件路径重定向为所述第一宿主进程所指定的文件路径。
在一种实施例中,根据所述第一目标程序的包名,生成路径重定向规则后,还包括如下步骤:
根据所述第一目标程序的包名,生成路径反重定向规则,所述路径反重定向规则获取所述第一目标程序运行时生成或访问的文件路径的返回结果,并将返回结果中的文件路径反重定向为原始访问文件路径。
进一步地,本发明还提供一种应用程序可交互多开系统,包括:
第一宿主进程创建模块,用于根据第一目标程序启动指令,在运行环境中创建第一宿主进程;
第一宿主进程加载模块,用于加载第一目标程序的代码至第一宿主进程,并在第一宿主进程中启动第一目标程序;
系统接口代理模块,用于获取第一目标程序的交互请求指令;
应用程序交互管理模块,用于根据所述交互请求指令,获取被调用目标程序信息;
应用程序状态管理模块,用于根据所述交互请求指令,在运行环境中创建第二宿主进程;
第二宿主进程加载模块,用于加载被调用目标程序的代码至第二宿主进程,并在第二宿主进程中启动被调用目标程序。
本发明所述的应用程序可交互多开系统,其能够在一个运行环境中创建多个宿主进程,在不同的宿主进程中启动不同的目标应用程序,实现对多个应用程序的多开,且在运行环境中,多个应用程序之间可交互,可以更加完整的使用多开的应用程序的功能,使用更加方便。
进一步地,本发明还提供一种计算机可读介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述实施例中任意一项所述的应用程序可交互多开方法。
进一步地,本发明还提供一种电子设备,包括存储器、处理器以及储存在所述存储器并可被所述处理器执行的计算机程序,所述处理器执行所述计算机程序时,实现如上述实施例中任意一项所述的应用程序可交互多开方法。
为了更好地理解和实施,下面结合附图详细说明本发明。
附图说明
图1为一种实施例中应用程序可交互多开方法流程框图;
图2为一种实施例中运行环境启动后的界面示意图;
图3为一种实施例中防校验流程框图;
图4为一种实施例中重定向流程框图;
图5为一种实施例中反重定向流程框图;
图6为一种实施例中重定向流程框图;
图7为一种实施例中生成重定向规则流程框图;
图8为一种实施例中第一宿主进程中启动第一目标程序流程框图;
图9为一种实施例中应用程序可交互多开系统结构示意图;
图10为另一种实施例中应用程序可交互多开系统结构示意图;
图11为一种实施例中电子设备结构示意图。
具体实施方式
请参阅图1,在一种实施例中,本发明应用程序可交互多开方法,包括如下步骤:
步骤S101:根据第一目标程序启动指令,在运行环境中创建第一宿主进程。
本发明的应用程序可交互多开方法,可应用于具有安卓操作系统的移动终端,包括手机、平板、智能手表和智能手环等。本发明实施例的运行环境,为在一个安卓应用程序内部,构建出的一个微型的安卓操作系统,已安装在手机系统上的任意应用程序都可以在本运行环境中运行,其中,应用程序在运行环境运行的方式为通过将该应用程序加载在宿主进程中的方式来运行,不同的应用程序,通过不同的宿主进程加载。
请参阅图2,图2为本实施例的运行环境启动后的示意图,本实施例的运行环境启动后,通过安卓系统的安装包管理服务(PackageManagerService)获取安卓设备中所有已安装应用程序的信息,并以列表的形式展现在运行环境的主界面,用户通过点击主界面上相关应用程序的图标,便可在运行环境中启动相关应用程序,当用户点击第一目标程序的图标时,运行环境的主进程根据该第一目标程序启动指令,创建用于运行该第一目标程序的第一宿主进程。
在第一宿主进程创建前,将第一目标程序的信息注册到运行环境中,其中需要记录的信息包含第一目标程序的版本(VersionName和VersionCode)、包名(PackageName)和安装包路径等。记录的信息将会用文件存储的方式持久化存放到运行环境的存储空间中。
步骤S102:加载第一目标程序的代码至第一宿主进程,并在第一宿主进程中启动第一目标程序。
第一宿主进程创建后,通过安装包管理服务获取第一目标程序的相关代码信息,并加载至第一宿主进程内部,进而在第一宿主进程内启动第一目标程序。
步骤S103:获取第一目标程序的交互请求指令。
所述交互请求指令为第一目标程序需要调用其他应用程序时,所发出的调用指令,例如,腾讯的游戏向QQ或微信软件发送的登录授权请求指令。
步骤S104:根据所述交互请求指令,获取被调用目标程序信息。
所述被调用目标程序信息,包括被调用目标程序的程序名。
步骤S105:根据所述交互请求指令,在运行环境中创建第二宿主进程。
步骤S106:加载被调用目标程序的代码至第二宿主进程,并在第二宿主进程中启动被调用目标程序。
本实施例所述的应用程序可交互多开方法,其能够在一个运行环境中创建多个宿主进程,在不同的宿主进程中启动不同的目标应用程序,实现对多个应用程序的多开,且在运行环境中,多个应用程序之间可交互,可以更加完整的使用多开的应用程序的功能,使用更加方便。
在一种实施例中,步骤S104中根据所述交互请求指令,获取被调用目标程序信息后,还执行如下步骤:
如果所述被调用目标程序不能在所述运行环境中运行,则将所述交互请求指令分发至所述运行环境外部。
其中,判断所述被调用目标程序能否在所述运行环境中运行,是通过预先在运行环境中建立需要在运行环境中运行的应用程序列表,判断所述被调用目标程序是否在所述列表中来完成的,如果被调用的目标程序不在该列表中,则将所述交互请求指令分发至所述运行环境外部。
在一种实施例中,如果被调用目标程序在需要在运行环境中运行的应用程序列表中,则进一步判断该被调用目标程序是否已在安卓系统上安装,如果没有安装,则返回请求失败结果至所述第一目标程序。
在一种实施例中,如果被调用目标程序已在运行环境中运行,则将所述交互请求指令发送至所述被调用目标程序,并等待返回结果。
在一种实施例中,被调用目标程序在接收到交互请求指令后,在返回结果前,可能会调用系统接口,通过遍历运行环境中文件目录的方式,来校验调用请求者的身份,因此,在本实施例中,还包括如下步骤:
步骤S301:获取所述被调用目标程序的文件目录访问请求。
步骤S302:如果所述被调用目标程序的文件目录访问请求所对应的文件目录为非允许访问文件目录,则丢弃所述被调用目标程序的文件目录访问请求。
具体的,将被调用目标程序所对应的文件目录以外的文件目录设为被调用目标程序的非允许访问目录,当检测到被调用目标程序访问非语序访问文件目录时,拒绝并丢弃该访问请求,使被调用目标程序无法发现当前的运行环境非安卓运行环境。
请参阅图4,在一种实施例中,第一目标程序运行后,还包括如下步骤:
步骤S401:获取所述第一目标程序的文件目录访问请求。
步骤S402:将第一目标程序的文件目录访问请求中的文件路径重定向为所述第一宿主进程所指定的文件路径。
将第一目标程序的访问文件路径映射至第一宿主进程所指定的文件路径,实现了多开的应用程序与原应用程序之间数据的隔离和共存,同时,不同的宿主进程指定不同的文件路径,使多开出的应用程序之间的数据实现隔离,互不干扰。
请参阅图5,在一种实施例中,第一目标程序访问第一宿主进程所指定的文件路径后,在将请求结果返回至第一目标程序前,还包括如下步骤:
步骤S501:获取文件目录访问请求结果。
步骤S502:将文件目录访问请求结果中的文件路径反重定向为原始文件目录访问请求中的文件路径。
将请求结果中的文件路径反重定向为原始文件目录访问请求中的文件路径,使第一目标程序认为自己确实是在访问期望访问的路径,增加运行环境的真实性,避免第一目标程序出错。
在一种实施例中,防止第一目标程序通过遍历运行环境中文件目录的方式,来检测运行环境的真实性,还包括如下步骤:
如果所述第一目标程序的文件目录访问请求所对应的文件目录为非允许访问文件目录,则丢弃所述第一目标程序的文件目录访问请求。
请参阅图6,在一个具体的实施例中,第一目标程序调用系统接口时,主要包括如下步骤:
步骤S601:获取第一目标程序调用系统接口请求。
步骤S602:将请求中包括文件或文件路径的部分重定向为第一宿主进程所指定的文件路径。
步骤S603:拒绝并丢弃访问非允许访问文件目录的请求。
步骤S604:判断是否需要调用其他应用程序,如果不是,执行步骤S606。
步骤S605:调用其他应用程序。
步骤S606:将请求结果中包括文件或文件路径的部分重定向为原请求中的文件或文件路径。
步骤S607:返回请求结果至第一目标程序。
在一种实施例中,请参阅图7,在运行环境中创建第一宿主进程后,还包括如下步骤:
步骤S701:根据所述第一目标程序的包名,生成路径重定向规则。
步骤S702:根据所述第一目标程序的包名,生成路径反重定向规则。
步骤S703:根据所述第一目标程序的包名,生成路径不重定向规则。
步骤S704:根据所述第一目标程序的包名,生成路径防检测规则。
其中,第一目标程序的包名(PackageName),为第一目标程序的唯一标识。所述路径重定向规则根据第一目标应用程序的相应请求,将所述第一目标程序运行时生成或访问的文件路径重定向为所述第一宿主进程所指定的文件路径。通过路径重定向规则,目标应用程序在运行环境中运行时的数据的独立性得到保证,多个不同的目标应用程序可以同时运行而且数据访问不冲突并能共存。例如将应用程序的私有访问目录地址从/data/data/目标应用程序PackageName重定向到/data/data/宿主应用程序PackageName/shadow/下。又如将应用程序的公共目录的访问地址从/sdcard重定向到/sdcard/shadow/目标应用程序PackageName下。
所述路径反重定向规则获取所述第一目标程序运行时生成或访问的文件路径的返回结果,并将返回结果中的文件路径反重定向为原始访问文件路径。通过路径反重定向规则,目标应用程序将会认为自己确实是在访问自己期望访问的路径,增加整个运行环境的真实性。
所述路径不重定向规则不需要进行路径重定向的部分宿主进程的逻辑,不进行重定向。这样能够保证宿主进程能够以一个监控者的角色对目标应用程序的行为进行管理。
所述路径防检测规则,生成一个非允许访问文件目录列表,拒绝并丢弃访问非允许访问文件目录的请求。
其中,上述规则具体通过java hook的方法,将安卓系统用java语言实现的系统接口部分的函数,全部替换成新的函数,并保留原函数,以便处理完后重新调用。
通过c/c++hook的方法,将安卓系统用c/c++语言实现的系统接口部分的函数,全部替换成新的函数,并保留原函数,以便处理完后重新调用。
替换完毕后,当目标进程调用系统接口的时候,实际上会调用到被替换后的代理的函数,这个时候可以对这个调用的行为进行处理(如访问文件路径的重定向、检测运行环境的去检测处理等)。等处理完毕后,可以选择将处理完的数据重新调回原函数或者是丢弃这个调用请求的处理。
请参阅图8,在一种实施例中,步骤S102,加载第一目标程序的代码至第一宿主进程,并在第一宿主进程中启动第一目标程序,具体包括如下步骤:
步骤S801:通过安装包管理系统服务(PackageManagerService),获取第一目标程序的信息,包含有ApplicationInfo(存储了应用的名称、版本、应用图标、安装包的路径和权限等基本信息)和四大组件。
其中四大组件包含活动信息(ActivityInfo),服务信息(ServiceInfo),广播接收器信息(BroadcastReceiverInfo),内容提供者信息(ContentProviderInfo)。
步骤S802:加载第一目标程序的代码到第一宿主进程内部,将第一目标程序的ApplicationInfo以及PackageName等目标应用程序的属性替换到第一宿主进程中,让第一宿主进程看起来像第一目标程序的进程。这样第一目标程序的进程如果进行获取自身应用程序信息的操作,就不会发现自己实际上是第一宿主进程。
步骤S803:将第一宿主进程的进程名通过系统接口修改为第一目标程序的进程名。这样目标进程如果进行读取自身进程名的操作,就不会发现自己实际上是第一宿主进程。
步骤S804:获取第一宿主进程的一个已注册的ActivityInfo信息A,将第一目标程序的入口ActivityInfo信息B做绑定对应。其中,入口ActivityInfo为应用程序启动后,第一个显示的界面。
步骤S805:调用系统接口请求启动A。
步骤S806:等待A经过活动系统服务(ActivityManagerService)确认并指示第一宿主进程启动后,在A真正被传送到(ActivityManagerService)启动前替换成B。
步骤S807:B被正常的启动,第一目标程序启动成功。
本发明所述的应用程序可交互多开方法,通过简单运行一个普通的安卓应用程序的方式,无需依赖特定的安卓系统和特定的安卓移动设备,简化多开应用程序的难度,提供一个可以让应用程序运行并交互的高效的轻量的运行环境,能够在一个运行环境中创建多个宿主进程,在不同的宿主进程中启动不同的目标应用程序,实现对多个应用程序的多开,且在运行环境中,多个应用程序之间可交互,可以更加完整的使用多开的应用程序的功能,使用更加方便;同时,能使被调用的应用程序认为自己处于正常的运行环境中;通过对应用程序调用系统接口的重定向,实现了多开的应用程序与原应用程序之间数据的隔离和共存,同时,不同的宿主进程指定不同的文件路径,使多开出的应用程序之间的数据实现隔离,互不干扰;通过对应用程序访问非允许访问文件目录的丢弃请求处理,增加了应用程序在运行环境中运行的可靠性。
请参阅图9,在一种实施例中,本发明应用程序可交互多开系统900包括运行环境主进程模块910、服务进程模块920和第一宿主进程模块930,其中,宿主进程模块的数量与运行环境中所运行的应用程序数量相同。
所述运行环境主进程模块910,通过安卓系统的安装包管理服务(PackageManagerService)获取安卓设备中所有已安装应用程序的信息,并以列表的形式展现在运行环境的主界面,用户通过点击主界面上相关应用程序的图标,便可在运行环境中启动相关应用程序。
所述运行环境主进程模块910根据第一目标程序启动指令,在运行环境中创建第一宿主进程。
所述服务进程模块920包括应用程序状态管理模块921和应用程序交互管理模块922,所述运行环境主进程模块910接收到第一目标程序启动指令后,启动所述服务进程模块920,所述应用程序状态管理模块921记录正在运行环境运行的应用程序清单,并在第一宿主进程模块930创建前,将第一目标程序的信息注册到运行环境中,其中需要记录的信息包含第一目标程序的版本(VersionName和VersionCode)、包名(PackageName)和安装包路径等。记录的信息将会用文件存储的方式持久化存放到运行环境的存储空间中。所述应用程序交互管理模块922,用于根据第一目标程序的交互请求指令,获取被调用目标程序信息。
所述第一宿主进程模块930包括加载模块931、系统接口代理模块932、重定向模块933和防检测模块934。
所述第一宿主进程模块930创建后,所述重定向模块933根据所述第一目标程序的包名,生成路径重定向规则;根据所述第一目标程序的包名,生成路径反重定向规则;根据所述第一目标程序的包名,生成路径不重定向规则。
所述防检测模块934生成防检测规则,具体的,生成一个禁止第一目标程序访问的文件目录列表,当第一目标程序访问到非允许访问的目录时,防检测模块934就会拒绝并丢弃该访问请求。
所述加载模块931加载第一目标程序的代码至第一宿主进程,并在第一宿主进程中启动第一目标程序。
在第一目标程序运行过程中,所述系统接口代理模块932获取第一目标程序调用系统接口的请求指令,其中,包括文件路径访问请求指令、调用其他应用程序的交互请求指令以及其他系统接口请求指令。
系统接口代理模块932获取到文件路径访问请求指令后,重定向模块933将第一目标程序的文件目录访问请求中的文件路径重定向为所述第一宿主进程模块930所指定的文件路径,所述重定向模块933还获取文件目录访问请求结果,并将文件目录访问请求结果中的文件路径反重定向为原始文件目录访问请求中的文件路径,如果该文件路径为非允许访问文件目录列表中的文件路径,则所述防检测模块934拒绝并丢弃该文件路径访问请求指令。
请参阅图10,在另一种实施例中,所述第一宿主进程模块930中的第一目标程序还通过交互请求指令,调用并启动了第二宿主进程模块940。
其中,所述系统接口代理模块932获取第一目标程序的交互请求指令,并发送至应用程序交互管理模块922,所述应用程序交互管理模块922于根据第一目标程序的交互请求指令,解析被调用目标程序信息,所述被调用的目标程序为第二目标程序。
所述应用程序交互管理模块922将第二目标程序的信息发送至应用程序状态管理模块921,在本实施例中,应用程序状态管理模块921包括第一应用程序列表和第二应用程序列表,所述第一应用程序列表中预设有能在运行环境中运行的应用程序清单,所述第二应用程序列表中包括在本安卓系统中已安装且存在于第一应用程序列表清单中的应用程序。
所述应用程序状态管理模块921判断被调用的第二目标程序是否在第一应用程序列表中,如果不是,则将该第一目标程序的交互请求指令分发至运行环境外部,如果是,则判断被调用的第二目标程序是否在第二应用程序列表中,如果不是,则返回请求失败结果至所述第一目标程序,如果是,则判断第二目标程序是否运行,如果不是,则启动第二目标程序,如果是,则将所述交互请求指令发送至第二目标程序,并等待返回结果。
第二目标程序通过第二宿主进程940启动,第二宿主进程940包括加载模块941、系统接口代理模块942、重定向模块943和防检测模块944。
本发明所述的应用程序可交互多开系统,通过简单运行一个普通的安卓应用程序的方式,无需依赖特定的安卓系统和特定的安卓移动设备,简化多开应用程序的难度,提供一个可以让应用程序运行并交互的高效的轻量的运行环境,通过运行带有轻量级运行环境的应用程序,运行目标应用程序;宿主进程模块加载系统接口代理模块,代理目标应用程序的系统接口调用;宿主进程模块获取目标应用程序信息,替换宿主进程信息并启动目标应用程序;系统接口代理模块截获目标应用程序的系统调用请求并依次分发给路径重定向模块、防检测模块以及应用程序交互管理模块;路径重定向模块将目标应用程序请求访问的路径转化为另一个指定的地址,方便实现数据隔离与共存;防检测模块对关键路径访问以及关键请求进行伪装,让目标应用程序相信自己运行在正常环境中;应用程序状态管理模块负责管理应用能否在运行环境中运行,以及是否正在运行;应用程序交互管理模块对目标应用程序的对外请求根据需要重定向到运行环境内部或者给回外部的系统中,让不同的应用程序能够同时运行在运行环境中并正常的交流提供协助。
本发明还提供一种计算机可读介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述任意一项实施例中的应用程序可交互多开方法。
请参阅图11,在一种实施例中,本发明的电子设备100包括存储器110和处理器120,以及储存在所述存储器110并可被所述处理器120执行的计算机程序,所述处理器120执行所述计算机程序时,实现如上述任意一项实施例中的应用程序可交互多开方法。
在本实施例中,控制器120可以是一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件。存储介质110可采用在一个或多个其中包含有程序代码的存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。计算机可读储存介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括但不限于:相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。

Claims (10)

1.一种应用程序可交互多开方法,其特征在于,包括如下步骤:
根据第一目标程序启动指令,在运行环境中创建第一宿主进程,其中,所述运行环境为在一个安卓应用程序内部,构建出的一个微型的安卓操作系统;
加载第一目标程序的代码至第一宿主进程,并在第一宿主进程中启动第一目标程序;
获取第一目标程序的交互请求指令;
根据所述交互请求指令,获取被调用目标程序信息;
如果所述被调用目标程序已在所述运行环境中运行,则将所述交互请求指令发送至所述被调用目标程序;
被调用目标程序在接收到交互请求指令后,获取所述被调用目标程序的文件目录访问请求;
如果所述被调用目标程序的文件目录访问请求所对应的文件目录为非允许访问文件目录,所述非允许访问文件目录是指对应的文件目录不在所述运行环境内部,则丢弃所述被调用目标程序的文件目录访问请求;
根据所述交互请求指令,在运行环境中创建第二宿主进程;
加载被调用目标程序的代码至第二宿主进程,并在第二宿主进程中启动被调用目标程序。
2.根据权利要求1所述的应用程序可交互多开方法,其特征在于,根据所述交互请求指令,获取被调用目标程序信息后,还包括如下步骤:
如果所述被调用目标程序不能在所述运行环境中运行,则将所述交互请求指令分发至所述运行环境外部。
3.根据权利要求1所述的应用程序可交互多开方法,其特征在于,还包括如下步骤:
获取所述第一目标程序的文件目录访问请求;
将第一目标程序的文件目录访问请求中的文件路径重定向为所述第一宿主进程所指定的文件路径。
4.根据权利要求3所述的应用程序可交互多开方法,其特征在于,将第一目标程序的文件目录访问请求中的文件路径重定向为所述第一宿主进程所指定的文件路径后,还包括如下步骤:
获取文件目录访问请求结果;
将文件目录访问请求结果中的文件路径反重定向为原始文件目录访问请求中的文件路径。
5.根据权利要求3所述的应用程序可交互多开方法,其特征在于,获取所述第一目标程序的文件目录访问请求后,还包括如下步骤:
如果所述第一目标程序的文件目录访问请求所对应的文件目录为非允许访问文件目录,则丢弃所述第一目标程序的文件目录访问请求。
6.根据权利要求1所述的应用程序可交互多开方法,其特征在于,在运行环境中创建第一宿主进程后,还包括如下步骤:
根据所述第一目标程序的包名,生成路径重定向规则,所述路径重定向规则根据第一目标应用程序的相应请求,将所述第一目标程序运行时生成或访问的文件路径重定向为所述第一宿主进程所指定的文件路径。
7.根据权利要求6所述的应用程序可交互多开方法,其特在于,根据所述第一目标程序的包名,生成路径重定向规则后,还包括如下步骤:
根据所述第一目标程序的包名,生成路径反重定向规则,所述路径反重定向规则获取所述第一目标程序运行时生成或访问的文件路径的返回结果,并将返回结果中的文件路径反重定向为原始访问文件路径。
8.一种应用程序可交互多开系统,其特征在于,包括:
第一宿主进程创建模块,用于根据第一目标程序启动指令,在运行环境中创建第一宿主进程,其中,所述运行环境为在一个安卓应用程序内部,构建出的一个微型的安卓操作系统;
第一宿主进程加载模块,用于加载第一目标程序的代码至第一宿主进程,并在第一宿主进程中启动第一目标程序;
系统接口代理模块,用于获取第一目标程序的交互请求指令;
应用程序交互管理模块,用于根据所述交互请求指令,获取被调用目标程序信息,如果所述被调用目标程序已在所述运行环境中运行,则将所述交互请求指令发送至所述被调用目标程序;被调用目标程序在接收到交互请求指令后,获取所述被调用目标程序的文件目录访问请求;如果所述被调用目标程序的文件目录访问请求所对应的文件目录为非允许访问文件目录,所述非允许访问文件目录是指对应的文件目录不在所述运行环境内部,则丢弃所述被调用目标程序的文件目录访问请求;
应用程序状态管理模块,用于根据所述交互请求指令,在运行环境中创建第二宿主进程;
第二宿主进程加载模块,用于加载被调用目标程序的代码至第二宿主进程,并在第二宿主进程中启动被调用目标程序。
9.一种计算机可读介质,其上存储有计算机程序,其特征在于:
该计算机程序被处理器执行时实现如权利要求1至7任意一项所述的应用程序可交互多开方法。
10.一种电子设备,包括存储器、处理器以及储存在所述存储器并可被所述处理器执行的计算机程序,其特征在于:
所述处理器执行所述计算机程序时,实现如权利要求1至7任意一项所述的应用程序可交互多开方法。
CN201811339312.XA 2018-11-12 2018-11-12 应用程序可交互多开方法和系统、存储介质、电子设备 Active CN109491725B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811339312.XA CN109491725B (zh) 2018-11-12 2018-11-12 应用程序可交互多开方法和系统、存储介质、电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811339312.XA CN109491725B (zh) 2018-11-12 2018-11-12 应用程序可交互多开方法和系统、存储介质、电子设备

Publications (2)

Publication Number Publication Date
CN109491725A CN109491725A (zh) 2019-03-19
CN109491725B true CN109491725B (zh) 2022-12-27

Family

ID=65695508

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811339312.XA Active CN109491725B (zh) 2018-11-12 2018-11-12 应用程序可交互多开方法和系统、存储介质、电子设备

Country Status (1)

Country Link
CN (1) CN109491725B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110851823B (zh) * 2019-11-12 2023-03-10 腾讯科技(深圳)有限公司 数据访问方法、装置、终端及存储介质
CN111104183B (zh) * 2019-12-17 2023-09-12 北京小米移动软件有限公司 应用程序运行方法、装置、电子设备及存储介质
CN111078325B (zh) * 2019-12-17 2024-01-30 北京小米移动软件有限公司 应用程序运行方法、装置、电子设备及存储介质
CN111371787B (zh) * 2020-03-04 2022-10-28 广州市百果园信息技术有限公司 中台服务的登录注册方法、装置、系统、服务器及介质
CN112783978A (zh) * 2021-01-28 2021-05-11 北京东方优播网络科技有限公司 数据传输方法、装置、计算机系统和存储介质
CN112988353A (zh) * 2021-03-12 2021-06-18 北京明朝万达科技股份有限公司 一种应用程序的运行控制方法及装置
CN113094085B (zh) * 2021-04-13 2024-01-19 贝壳找房(北京)科技有限公司 组件集成方法、装置、计算机可读存储介质及电子设备
CN116263824A (zh) * 2021-12-13 2023-06-16 北京有竹居网络技术有限公司 资源访问方法、装置、存储介质以及电子设备

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7082600B1 (en) * 2002-11-04 2006-07-25 Savaje Technologies, Inc. Method and apparatus for integrating a computer application programming language runtime environment with an operating system kernel
CN102201047A (zh) * 2010-11-09 2011-09-28 湖南创合制造有限公司 一种计算机管理方法
CN102224476A (zh) * 2008-10-14 2011-10-19 奥布隆工业有限公司 多进程交互系统和方法
CN103154948A (zh) * 2010-08-19 2013-06-12 桑迪士克以色列有限公司 可丢弃文件的基于卡的管理
CN104063234A (zh) * 2013-03-19 2014-09-24 华为技术有限公司 一种兼容方法及装置
CN104461663A (zh) * 2014-12-30 2015-03-25 北京奇虎科技有限公司 一种加载其它移动端应用的方法、装置和移动终端
CN106326018A (zh) * 2016-04-28 2017-01-11 深圳市金立通信设备有限公司 一种数据访问方法及终端
CN106445612A (zh) * 2016-10-10 2017-02-22 广东欧珀移动通信有限公司 一种开启应用的方法、装置及移动终端
CN106502717A (zh) * 2016-09-22 2017-03-15 华为技术有限公司 应用程序运行方法及装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9971807B2 (en) * 2009-10-14 2018-05-15 Oblong Industries, Inc. Multi-process interactive systems and methods
CN103246525B (zh) * 2012-02-06 2017-03-08 腾讯科技(深圳)有限公司 一种实现应用运行的方法及客户端
CN104199734B (zh) * 2014-09-12 2017-11-14 上海斐讯数据通信技术有限公司 一种基于安卓智能终端的应用程序多开管理方法和系统
CN104375857B (zh) * 2014-10-22 2016-06-01 腾讯科技(深圳)有限公司 一种应用程序运行多个实例的方法、装置及终端设备
CN104408367B (zh) * 2014-11-28 2019-04-05 北京奇虎科技有限公司 应用程序配置方法与装置
CN104866342A (zh) * 2015-05-07 2015-08-26 北京数字天域科技有限责任公司 在智能终端上同时开启多个同一应用程序的方法和装置
CN106020943B (zh) * 2016-05-04 2020-06-19 北京小米移动软件有限公司 应用程序双开启方法及装置
CN108334404B (zh) * 2017-01-20 2022-02-22 腾讯科技(深圳)有限公司 应用程序的运行方法和装置
CN108345496B (zh) * 2017-01-23 2020-12-15 华为技术有限公司 一种运行应用程序的方法及装置

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7082600B1 (en) * 2002-11-04 2006-07-25 Savaje Technologies, Inc. Method and apparatus for integrating a computer application programming language runtime environment with an operating system kernel
CN102224476A (zh) * 2008-10-14 2011-10-19 奥布隆工业有限公司 多进程交互系统和方法
CN103154948A (zh) * 2010-08-19 2013-06-12 桑迪士克以色列有限公司 可丢弃文件的基于卡的管理
CN102201047A (zh) * 2010-11-09 2011-09-28 湖南创合制造有限公司 一种计算机管理方法
CN104063234A (zh) * 2013-03-19 2014-09-24 华为技术有限公司 一种兼容方法及装置
CN104461663A (zh) * 2014-12-30 2015-03-25 北京奇虎科技有限公司 一种加载其它移动端应用的方法、装置和移动终端
CN106326018A (zh) * 2016-04-28 2017-01-11 深圳市金立通信设备有限公司 一种数据访问方法及终端
CN106502717A (zh) * 2016-09-22 2017-03-15 华为技术有限公司 应用程序运行方法及装置
CN106445612A (zh) * 2016-10-10 2017-02-22 广东欧珀移动通信有限公司 一种开启应用的方法、装置及移动终端

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于安卓定制Vision系统的日历设计以及应用多开功能的研究与实现;孙秀凯;《中国优秀硕士学位论文全文数据库 (信息科技辑)》;20171015;第I138-43页 *

Also Published As

Publication number Publication date
CN109491725A (zh) 2019-03-19

Similar Documents

Publication Publication Date Title
CN109491725B (zh) 应用程序可交互多开方法和系统、存储介质、电子设备
US20200120082A1 (en) Techniques for securing credentials used by functions
US8893222B2 (en) Security system and method for the android operating system
JP4676744B2 (ja) セキュリティ関連プログラミング・インターフェース
US10462228B2 (en) Providing access to a smartcard within a remote session
CN106446672B (zh) 一种Android第三方类库权限隔离方法及装置
US7711783B1 (en) Generic event notification service for resource-constrained devices
US20170264649A1 (en) Employing session level restrictions to limit access to a redirected interface of a composite device
US9230110B2 (en) Accessing privileged objects in a server environment
KR20090003224A (ko) 연산 컨텍스트를 이용한 네트워크 인터페이스 라우팅
CN108647513A (zh) 一种基于TrustZone的共享库安全隔离方法及系统
US10114779B2 (en) Isolating a redirected USB device to a set of applications
EP2862119B1 (en) Network based management of protected data sets
CN115378735B (zh) 一种数据处理方法、装置、存储介质及电子设备
US10757088B2 (en) YARN REST API protection
US11782748B2 (en) Cloud shell extension framework
US20200053084A1 (en) Intelligent redirection of authentication devices
US10536559B2 (en) Blocking an interface of a redirected USB composite device
CN115086166A (zh) 计算系统、容器网络配置方法及存储介质
EP1232436B1 (en) Separation kernel
CN114912103A (zh) 一种访问控制方法及相关装置
CN112163193A (zh) 一种广播注册控制方法、装置、设备及介质
US10599409B2 (en) Application lifecycle operation queueing
CN110865848B (zh) 组件拦截方法及终端设备
US9628401B2 (en) Software product instance placement

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant