具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定***结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的***、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
为了说明本申请所述的技术方案,下面通过具体实施例来进行说明。
图1是本申请实施例提供的一种进程注入方法的实现流程示意图,应用于终端设备,如图所示,该方法包括以下步骤:
步骤S101,启动所述终端设备上的注入应用。
在本申请实施例中,需要预先设计安装一个注入应用,所述注入应用的信息可以参照表1。
表1所述注入应用的信息
步骤S102,在监测到第一注入指令后,创建所述注入应用的组件,并将所述第一注入指令中的第一进程确定为当前的目标进程。
在本申请实施例中,若是需要注入一个应用的进程时,可以输入一条执行命令,例如am startservice--es pro com.ubtechinc.cruzr.launcher2appinject。对于AMS服务而言,该命令可以作为一条指令,本申请实施例将该指令记为第一注入指令。AMS服务在接收到所述第一注入指令后,先解析所述第一注入指令,若解析到关键字appinject(所述注入应用的包名中的关键字),就可以创建所述注入应用的组件,在解析到pro对应com.ubtechinc.cruzr.launcher2之后,表示com.ubtechinc.cruzr.launcher2为目标进程的名称,可以将目标进程的名称设置到所述注入应用的组件信息中的进程信息中。
在此需要说明,由于所述注入应用可以注入android***中的任一进程,并且,所述注入指令中包含了目标进程的名称,为了区分不同的注入指令以及不同的目标进程,可以用第一注入指令、第二注入指令表示不同的注入指令,用第一进程和第二进程表示不同的目标进程。第一注入指令中的进程为第一进程,可以将所述第一进程设为当前的目标进程。
步骤S103,控制当前的目标进程加载所述注入应用的组件。
在本申请实施例中,AMS服务会通知所述目标进程加载所述注入应用的组件服务。当然,如果预先设定了控制参数,所述注入应用的组件还可以根据预先设置的控制参数执行与所述控制参数对应的操作。
本申请实施例是可以通过所述注入应用注入所述android***中的任一目标进程的,因此,除了可以注入第一进程,还可以注入第二进程,当需要对另一目标进程(第二进程)进行注入控制时,需要先从当前目标进程(第一进程)卸载所述注入应用的注入组件。
作为本申请另一实施例,在控制当前的目标进程加载所述注入应用的组件之后,还包括:
在监测到卸载指令后,从所述当前的目标进程中卸载所述注入应用的组件。
在本申请实施例中,所述卸载指令可以是:am stopservice appinject。AMS服务在解析到appinject关键字时,就可以从所述当前的目标进程中卸载所述注入应用的组件。
在此需要说明,AMS服务对应多种指令,只有解析到预先设置的所述注入应用的关键字之后,才会从所述当前的目标进程中卸载所述注入应用的组件。本申请实施例中将appinject作为所述注入应用的关键字,实际中还可以是其它的关键字,相应的,所述注入应用的包名、组件名、初始进程名这也可能相应的改变。
另外,为了能够将所述注入应用的组件从当前的目标进程中卸载,还需要从所述卸载指令中确定关键字为所述注入应用后,获取所述注入应用的组件的信息,并基于所述注入应用的组件的信息,从所述当前的目标进程中卸载所述注入应用的组件。
在从所述当前的目标进程(第一进程)中卸载所述注入应用的组件之后,就可以注入其它进程。
作为本申请另一实施例,在从所述当前的目标进程中卸载所述注入应用的组件之后,还包括:
在监测到第二注入指令后,创建所述注入应用的组件,并将所述第二注入指令中的第二进程确定为当前的目标进程;
控制当前的目标进程加载所述注入应用的组件。
在本申请实施例中,若再次接收到注入指令,可以将再次接收到的注入指令命名为第二注入指令,第二注入指令中的进程为第二进程,如接收到第一注入指令后的操作相同,需要创建所述注入应用的组件,并将所述第二注入指令中的第二进程确定为当前的目标进程;控制当前的目标进程加载所述注入应用的组件。在此不再赘述,可参照在监测到第一注入指令后的操作。
在此还需要说明,AMS服务并非仅针对所述注入应用设计,实际上也可以是所述android***中的其它应用,因此,AMS服务在接收到am startservice命令或amstopservice命令后,会先解析命令。以接收到am startservice命令为例,AMS服务解析到所述注入应用后(例如,解析到关键词appinject),会先获取预启动组件的信息,然后判断预启动组件是否已经启动,还需要判断所述预启动组件是否为所述注入应用(appinject)的组件,若预启动组件未启动、且预启动组件为所述注入应用(appinject)的组件,那么就可以创建所述注入应用的组件信息,并将其设置为预启动组件,将am stopservice命令中的进程名(例如,pro对应的进程名)设为当前的目标进程,最后在目标进程中加载所述预启动组件。同理,以接收到am stopservice命令为例,AMS服务解析到所述注入应用后(例如,解析到关键词appinject),会先判断预卸载组件是否为所述注入应用的组件,若是,就可以创建注入应用的组件的信息,并将创建的组件设为预卸载组件,基于所述预卸载组件,执行从当前的目标进程卸载组件的操作。本示例中的预启动组件为所述注入应用的组件。所述预卸载组件也为所述注入应用的组件,为了方便描述加载所述注入应用的组件的过程和卸载所述注入应用的组件的过程,通过所述预启动组件和所述预卸载组件进行区分。
作为本申请另一实施例,在启动所述终端设备上的注入应用之前,还包括:
在所述终端设备上安装注入应用,将所述注入应用的信息写入所述终端设备的文件***,并将所述注入应用加载到所述终端设备的缓存中。
在本申请实施例中,在终端设备上安装所述注入应用后,PackageManager服务将所述注入应用的信息写入文件***,同时加载到Android运行时的缓存中,以提供其他服务(例如AMS服务)使用。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
图2是本申请一实施例提供的终端设备的示意框图,为了便于说明,仅示出与本申请实施例相关的部分。
该终端设备2可以是内置于手机、笔记本、计算机等终端设备内的软件单元、硬件单元或者软硬结合的单元,也可以作为独立的挂件集成到所述手机、笔记本、计算机等终端设备中。
所述终端设备2包括:
注入应用启动单元21,用于启动所述终端设备上的注入应用;
目标进程确定单元22,用于在监测到第一注入指令后,创建所述注入应用的组件,并将所述第一注入指令中的第一进程确定为当前的目标进程;
组件加载单元23,用于控制当前的目标进程加载所述注入应用的组件。
作为本申请另一实施例,所述终端设备2还包括:
组件卸载单元24,用于在控制当前的目标进程加载所述注入应用的组件之后,在监测到卸载指令后,从所述当前的目标进程中卸载所述注入应用的组件。
作为本申请另一实施例,所述组件卸载单元24还用于:
在监测到卸载指令后,获取所述注入应用的组件的信息,并基于所述注入应用的组件的信息,从所述当前的目标进程中卸载所述注入应用的组件。
作为本申请另一实施例,所述目标进程确定单元22还用于:
在从所述当前的目标进程中卸载所述注入应用的组件之后,在监测到第二注入指令后,创建所述注入应用的组件,并将所述第二注入指令中的第二进程确定为当前的目标进程;
所述组件加载单元23还用于:
控制当前的目标进程加载所述注入应用的组件。
作为本申请另一实施例,所述终端设备2还包括:
安装单元,用于在启动所述终端设备上的注入应用之前,在所述终端设备上安装注入应用,将所述注入应用的信息写入所述终端设备的文件***,并将所述注入应用加载到所述终端设备的缓存中。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述终端设备的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述终端设备中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
图3是本申请又一实施例提供的终端设备的示意框图。如图3所示,该实施例的终端设备3包括:一个或多个处理器30、存储器31以及存储在所述存储器31中并可在所述处理器30上运行的计算机程序32。所述处理器30执行所述计算机程序32时实现上述各个方法实施例中的步骤,例如图1所示的步骤S101至S103。或者,所述处理器30执行所述计算机程序32时实现上述终端设备实施例中各模块/单元的功能,例如图2所示模块21至23的功能。
示例性的,所述计算机程序32可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器31中,并由所述处理器30执行,以完成本申请。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序32在所述终端设备3中的执行过程。例如,所述计算机程序32可以被分割成注入应用启动单元、目标进程确定单元、组件加载单元,示例如下:
注入应用启动单元,用于启动所述终端设备上的注入应用;
目标进程确定单元,用于在监测到第一注入指令后,创建所述注入应用的组件,并将所述第一注入指令中的第一进程确定为当前的目标进程;
组件加载单元,用于控制当前的目标进程加载所述注入应用的组件。
其它单元或者模块可参照图2所示的实施例中的描述,在此不再赘述。
所述终端设备包括但不仅限于处理器30、存储器31。本领域技术人员可以理解,图3仅仅是终端设备3的一个示例,并不构成对终端设备3的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端设备还可以包括输入设备、输出设备、网络接入设备、总线等。
所述处理器30可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器31可以是所述终端设备3的内部存储单元,例如终端设备3的硬盘或内存。所述存储器31也可以是所述终端设备3的外部存储设备,例如所述终端设备3上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器31还可以既包括所述终端设备3的内部存储单元也包括外部存储设备。所述存储器31用于存储所述计算机程序以及所述终端设备所需的其他程序和数据。所述存储器31还可以用于暂时地存储已经输出或者将要输出的数据。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的终端设备和方法,可以通过其它的方式实现。例如,以上所描述的终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括是电载波信号和电信信号。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。