CN111880987A - 应用程序的动态监测方法、装置、存储介质以及电子装置 - Google Patents
应用程序的动态监测方法、装置、存储介质以及电子装置 Download PDFInfo
- Publication number
- CN111880987A CN111880987A CN202010657830.7A CN202010657830A CN111880987A CN 111880987 A CN111880987 A CN 111880987A CN 202010657830 A CN202010657830 A CN 202010657830A CN 111880987 A CN111880987 A CN 111880987A
- Authority
- CN
- China
- Prior art keywords
- application program
- virtual
- running
- application
- target
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3051—Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例提供了应用程序的动态监测方法、装置、存储介质以及电子装置,该方法包括:在第一应用程序中生成的目标虚拟运行环境内运行第二应用程序,替换第二应用程序所需调用的初始服务代理对象以使第二应用程序在目标虚拟运行环境中运行,并获取用于对处于运行状态下的第二应用程序进行动态监测的目标监测日志,可以解决相关技术中存在的难以对待监测的应用程序进行有效监测的技术问题,达到易于实现对待监测应用的监测,保证设备数据以及信息的安全,优化用户的使用体验的技术效果。
Description
技术领域
本发明实施例涉及通信领域,具体而言,涉及一种应用程序的动态监测方法、装置、存储介质以及电子装置。
背景技术
目前的相关技术中,在终端运行的操作系统,例如,Android操作系统中,如果需要动态监测运行设备中安装的应用程序的行为,传统的方案都是基于定制ROM(Read-OnlyMemory,只读存储器)、在获取设备Root权限的情况下,去修改系统文件或利用相关技术对需要进行监测的应用程序所属的进程中注入代码,或者重新打包应用程序的APK(Androidapplication package,Android应用程序包)。
而上述相关技术中均是通过侵入待监测的应用程序的方式来进行监测,相关技术严重依赖系统环境,难以部署到不同的设备上,同时,设备信息安全性无法保证。
针对上述的相关技术中存在的难以对待监测的应用程序进行有效监测的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种应用程序的动态监测方法及装置,以至少解决相关技术中存在的难以对待监测应用程序进行有效监测的问题。
根据本发明的一个实施例,提供了一种应用程序的动态监测方法,包括:在第一应用程序所生成的目标虚拟运行环境中运行第二应用程序,其中,在所述目标虚拟运行环境中具备用于运行所述第二应用程序的目标虚拟服务代理对象,所述目标虚拟服务代理对象用于通过替换所述第二应用程序所需调用的初始服务代理对象以使所述第二应用程序在所述目标虚拟运行环境中运行;获取用于对处于运行状态下的所述第二应用程序进行动态监测的目标监测日志。
根据本发明的另一个实施例,提供了一种应用程序的动态监测装置,包括:处理模块,用于在第一应用程序所生成的目标虚拟运行环境中运行第二应用程序,其中,在所述目标虚拟运行环境中具备用于运行所述第二应用程序的目标虚拟服务代理对象,所述目标虚拟服务代理对象用于通过替换所述第二应用程序所需调用的初始服务代理对象以使所述第二应用程序在所述目标虚拟运行环境中运行;获取模块,用于获取用于对处于运行状态下的所述第二应用程序进行动态监测的目标监测日志。
根据本发明的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
通过本发明,由于在第一应用程序中生成的目标虚拟运行环境内运行第二应用程序,通过替换第二应用程序所需调用的初始服务代理对象以使第二应用程序在目标虚拟运行环境中运行,并获取用于对处于运行状态下的第二应用程序进行动态监测的目标监测日志,替代了相关技术中需要以侵入式方式实现对待监测应用程序的监测,因此,可以解决相关技术中存在的难以对待监测的应用程序进行有效监测的技术问题,达到易于实现对待监测应用的监测,保证设备数据以及信息的安全,优化用户的使用体验的技术效果。
附图说明
图1是根据本发明实施例的一种可选的应用程序的动态监测方法的流程图;
图2是根据本发明实施例的一种可选的应用程序的动态监测的流程示意图;
图3是根据本发明实施例的一种可选的第二应用程序安装流程示意图;
图4是根据本发明实施例的一种可选的应用程序的动态监测的系统架构示意图;
图5是根据本发明实施例的另一种可选的应用程序的动态监测的流程示意图;
图6是根据本发明实施例的一种可选的应用程序的动态监测装置的结构框图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明的实施例。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
本申请实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本发明实施例的一种应用程序的动态监测方法的移动终端的硬件结构框图。如图1所示,移动终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,其中,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的应用程序的动态监测方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种运行于上述移动终端或计算机终端或类似的运算装置的应用程序的动态监测方法,图2是根据本发明实施例的一种可选的应用程序的动态监测的流程示意图,如图2所示,该流程包括如下步骤:
步骤S202,在第一应用程序所生成的目标虚拟运行环境中运行第二应用程序,其中,在所述目标虚拟运行环境中具备用于运行所述第二应用程序的目标虚拟服务代理对象,所述目标虚拟服务代理对象用于通过替换所述第二应用程序所需调用的初始服务代理对象以使所述第二应用程序在所述目标虚拟运行环境中运行;
步骤S204,获取用于对处于运行状态下的所述第二应用程序进行动态监测的目标监测日志。
其中,上述步骤的执行主体可以为移动终端、计算机终端或者类似的运算装置等,但不限于此。
可选地,在本实施例中,上述第一应用程序以及第二应用程序可以包括但不限于App(application,应用程序)、软件等能够生成的虚拟运行环境的应用程序。
可选地,在本实施例中,在App运行过程中,App的组件是通过代理对象与系统服务进程通信的。上述目标虚拟服务代理对象用于表示对待监测的第二应用程序中的初始服务代理对象以动态代理方式进行Hook处理,将第二应用程序中使用的初始代理对象替换成目标虚拟服务代理对象,在第二应用程序访问系统服务时,目标虚拟服务代理对象会将第二应用程序发起的服务请求重定向到虚拟服务进程中。上述虚拟服务进程模拟系统服务处理初始服务代理对象的服务请求或者将服务请求中上下文信息替换成第一应用程序在运行时的上下文信息发送到系统服务进程处理。
可选地,在本实施例中,上述初始服务代理对象可以包括但不限于系统服务进程Framework层中的诸多Binder服务对象如AMS(Activity Manager Service,),PMS(PackageManager Service),上述目标虚拟服务代理对象可以包括但不限于VPMS(Virtual PackageManager Service)等Binder服务对象。
可选地,在本实施例中,上述目标虚拟运行环境包括但不限于通过插件化技术将上述第二应用程序作为上述第一应用程序的一个插件来安装运行,通过在上述第一应用程序加载运行上述第二应用程序之前,添加一个虚拟窗口,用于加载监测模块,以实现对上述第二应用程序的监测。
可选地,在本实施例中,上述目标监测日志可以包括但不限于记录有上述第二应用程序在启动过程中调用系统函数的名称、参数信息、调用时间等。上述目标监测日志可以对应于包括但不限于针对系统Binder服务类API,Java API,Native API等其他需要监测的敏感API进行监测得到的目标监测日志。
通过本实施例,由于在第一应用程序中生成的目标虚拟运行环境内运行第二应用程序,通过替换第二应用程序所需调用的初始服务代理对象以使第二应用程序在目标虚拟运行环境中运行,并获取用于对处于运行状态下的第二应用程序进行动态监测的目标监测日志,替代了相关技术中需要以侵入式方式实现对待监测应用程序的监测,因此,可以解决相关技术中存在的难以对待监测的应用程序进行有效监测的技术问题,达到易于实现对待监测应用的监测,保证设备数据以及信息的安全,优化用户的使用体验的技术效果。
在一个可选的实施例中,在第一应用程序所生成的目标虚拟运行环境中运行第二应用程序之前,所述方法还包括:在第一应用程序所生成的第一虚拟运行环境中安装所述第二应用程序;启动所述第二应用程序,并检测所述第二应用程序在启动过程中是否已经进行了初始化;在确定所述第二应用程序已经进行了初始化的情况下,将所述第一虚拟运行环境确定为所述目标虚拟运行环境;在确定所述第二应用程序未进行初始化的情况下,基于所述目标虚拟服务代理对象对所述第一虚拟运行环境进行调整,以生成第二虚拟运行环境,并将所述第二虚拟运行环境确定为所述目标虚拟运行环境。
可选地,在本实施例中,当上述第二应用程序在上述目标虚拟运行环境中启动时,第一应用程序通过虚拟服务进程仿照系统服务生成了多个虚拟服务,其中,VAMS服务对应于系统服务AMS,利用在应用层启动一个由第一应用程序创建的目标组件以创建用于启动第二应用程序的进程,以实现上述第二应用程序的启动。在上述组件启动过程中,会创建一个名称为VClientImpl(对应于前述的目标虚拟服务代理对象)的Binder服务对象,并将该服务的Binder引用返回给VAMS保存,VAMS可通过VClientImpl与第二应用程序进行通信,执行后续的进程初始化工作。在完成上述第二应用程序的启动之前,通过再次检测当前运行的第二应用程序是否初始化,在检测到并未进行初始化的情况下,由目标组件启动创建的待监测进程后,完成了对当前进程中各种Binder服务代理对象和其他关键对象的Hook替换,使Binder服务请求重定向到目标虚拟运行环境中的虚拟服务进程中。
通过本实施例,能够实现将上述第二应用程序在上述第一应用程序创建的目标虚拟运行环境中运行,进而,避免了相关技术中需要侵入待监测的应用程序或者需要获取系统Root权限,通过修改系统文件或进程注入方式才能够完成部署的技术问题,能够达到易于监测需要监测的应用程序,保证设备数据以及信息的安全,优化用户的使用体验的技术效果。
在一个可选的实施例中,在第一应用程序所生成的第一虚拟运行环境中安装所述第二应用程序之前,所述方法还包括:启动所述第一应用程序;对启动所述第一应用程序后所生成的初始虚拟运行环境进行初始化,得到所述第一虚拟运行环境,其中,所述初始虚拟运行环境包括用于通过运行所述第一应用程序以管理所述第二应用程序的宿主进程、用于生成所述目标虚拟服务的虚拟服务进程、用于运行所述第二应用程序的客户端进程。
可选地,在本实施例中,上述第一应用程序在启动之后可以存在但不限于如下四种进程:宿主进程、虚拟服务进程、客户端进程、宿主进程子进程。
其中,上述宿主进程用于实现通过上述第一应用程序管理上述第二应用程序的安装、启动、卸载等操作。上述虚拟服务进程用于模仿系统Framework层服务功能创建一套虚拟的Binder服务,其中服务命名和系统服务命名类似,例如,系统Framework层的AMS对应虚拟服务进程的VAMS。上述客户端进程用于运行上述第二应用程序的进程,上述宿主进程的子进程用于运行上述第一应用程序以实现其他与上述第一应用程序相关联的功能。
通过本实施例,在上述初始虚拟运行环境中生成不同的进程以实现对应于不同进程的不同功能,进而,能够实现将上述第二应用程序以插件化的形式在上述第一应用程序中运行,完成基于第一应用程序对第二应用程序的监测。
在一个可选的实施例中,对启动所述第一应用程序后所生成的初始虚拟运行环境进行初始化,得到所述第一虚拟运行环境,包括:维持所述宿主进程的运行状态;利用所述虚拟服务进程生成所述目标虚拟服务;在所述客户端进程中运行所述第二应用程序。
可选地,在本实施例中,将上述初始虚拟运行环境中的每个进程通过调用VirtualCore类的startup方法进行初始化。其中,可以包括但不限于使用Invocation StubManager类的injectAll方法根据当前进程类型以动态代理的方式进行Hook,用对应的Stub类目标虚拟服务替换与第二应用程序所对应需求调用的系统服务。在此过程中,对于宿主进程,维持上述宿主进程的运行状态,也即,不对宿主进程进行Hook,对于虚拟服务进程,可以通过上述虚拟服务进程生成上述对应于第二应用程序需要调用的系统服务的目标虚拟服务,例如,可以包括但不限于AM(Activity Manager)和PM(Packager Manager)等,对客户端进程,可以包括但不限于运行上述第二应用程序。
在一个可选的实施例中,基于所述目标虚拟代理对象对所述第一虚拟运行环境进行调整,包括:将运行所述第二应用程序所需调用的初始服务代理对象替换为所述目标虚拟代理对象。
可选地,在本实施例中,上述替换操作可以包括但不限于Hook替换,例如,将上述第二应用程序所需调用的各种Binder服务代理对象和其他关键对象的Hook替换,使第二应用程序在运用过程中的Binder服务请求重定向到虚拟服务进程中,例如,对上述虚拟服务进程Hook AM(Activity Manager)和PM(PackagerManager)两个代理对象,对上述客户端进程Hook全部系统Framework层的Binder服务代理对象和其他相关对象,其中,对Binder代理对象的Hook会将当前进程的Binder服务请求重定向到虚拟服务进程中的虚拟服务中。
在一个可选的实施例中,在第一应用程序所生成的第一虚拟运行环境中安装所述第二应用程序,包括:在所述第一虚拟运行环境中将所述第二应用程序安装到目标安装路径下,其中,所述目标安装路径为所述第一应用程序为所述第二应用程序分配的安装路径。
可选地,在本实施例中,需要通过上述第一应用程序对上述第二应用程序进行安装。其中,上述安装可以由包括但不限于第一虚拟运行环境中的虚拟服务进程中的虚拟服务完成,该服务模拟了相关技术中系统服务PMS的安装应用程序的流程。
其中,图3是根据本发明实施例的一种可选的第二应用程序安装流程示意图,如图3所示,该流程步骤如下:
S302,通过PackageParser解析第二应用程序的安装包中的AndroidManifest.xml文件,生成VPackage对象来储存解析过程中生成的组件信息和权限信息。其中,VPackage对象是可以序列化的,最终被序列化到私有安装目录下的package.ini文件中。
S304,为安装的上述第二应用程序分配私有的安装目录。该安装目录并非是系统的安装目录,而是在上述第一应用程序的目标安装路径下以安装第二应用程序的名称创建的安装目录,上述安装目录内部的目录结构还包括但不限于与安装上述第二应用程序的相关信息的序列化存储文件,如package.ini等。
S306,将上述第二应用程序的安装包文件及其相关文件复制到目标安装目录下,例如,将so文件复制到对应的lib目录下。
S308,创建PackageSetting对象,在PackageSetting对象中存储上述第二应用程序的安装信息,例如,目标安装目录、分配用户ID等,将PackageSetting对象保存到VPackage对象中。
S310,向上述虚拟服务进程内定义的广播系统注册上述第二应用程序的静态广播。
通过本实施例,完成了上述第二应用程序在目标虚拟运行环境中的安装,进而,能够实现将上述第二应用程序在上述第一应用程序创建的目标虚拟运行环境中运行,能够有效的完成对第二应用程序的动态监测。
在一个可选的实施例中,获取用于对处于运行状态下的所述第二应用程序进行动态监测的目标监测日志,包括:获取所述第二应用程序在运行状态下通过所述目标虚拟代理对象所调用的一组虚拟接口,其中,所述一组虚拟接口用于所述第二应用程序调用一组虚拟服务,所述一组虚拟服务为所述目标虚拟服务代理对象所代理的虚拟服务;将所述一组虚拟接口的调用日志确定为所述目标监测日志。
可选地,在本实施例中,上述一组虚拟接口可以包括但不限于用于调用常见系统敏感函数的应用程序接口,上述系统敏感函数可以包括但不限于如下内容:
1、网络流量:Android应用通常会把本地的数据上传到服务器,可以但不限于通过追踪URL类的构造方法来获取URL链接,通过追踪HttpUrlConection类的相关方法和域对象来获取网络链接和流量信息。如果使用第三方网络连接库的,通过针对性的Hook第三方网络连接库中的函数以实现对网络流量相关联的虚拟接口的监测。
2、文件系统:Android在Java层主要是使用File类进行文件操作,可以通过包括但不限于Hook File类相关构造函数来监测文件对象。ContextImpl类的openFileOutput函数也有文件读写功能。
此外,由于Android支持NDK编程,因此也有可能通过fopen等C/C++函数进行读写操作。
3、数据库存储:Android使用SQLite数据库进行数据存储操作,并提供了SQLiteOpen Helper工具类来管理数据库。SQLiteOpenHelper的getWritableDataBase会创建数据库。而数据类SQLiteDataBase用于描述创建的数据库对象,它的execSQL方法可以执行SQL语句,SQLiteDataBase类也支持insert,update,delete,query等操作,通过监测在完成上述操作时所需调用的一组虚拟接口,完成对上述第二应用程序的监测。
需要说明的是,如果上述第二应用程序使用了具有加密功能的第三方SQL Cipher数据库,就需要有针对性的Hook第三方库中的相关函数。
4、组件间通信和进程间通信:Android组件间通信主要依赖于Binder机制。Intent对象作为媒介携带数据从一个组件传递到另一个组件,可以通过Intent对象的putXXX方法设置不同类型的数据以及获取数据。Activity对象使用startActivity从一个Activity(组件)切换到另一个。Activity启动服务时,使用startService/bindService方法;Activity发送广播时,会使用sendBroadcast方法。这些方法会将Intent对象作为参数传递到另一个组件中,所以组件的这些方法所调用的一组虚拟接口也可以作为组件间通信的虚拟接口。
此外,上述第二应用程序在使用Binder服务时,会打开Binder驱动文件/dev/binder,使用IO控制函数ioctl与驱动文件进行交互,因此,还可以通过包括但不限于用Hooklib Binder.so或libc.so共享库中的ioctl函数来监测Binder间的进程通信。此外,SharedPreferences、动态库加载、多进程、加解密函数、资源加载、序列化等都是Android应用运行时可以进行监测的关注点,通过对上述不同系统服务对应的虚拟接口进行监测实现对上述第二应用程序的监测。还可以包括但不限于针对性的对其中的Java层和Native层虚拟接口进行了Hook,以实现对上述第二应用程序的监测。
通过本实施例,通过对上述一组虚拟接口进行监测,能够得到对上述第二应用程序调用上述一组虚拟接口的日志,并输出上述监测日志,进而将上述调用日志确定为目标监测日志,以实现对第二应用程序的有效监测的技术效果。
在一个可选的实施例中,获取所述第二应用程序在运行状态下通过所述目标虚拟代理对象所调用的一组虚拟接口,包括:对所述第二应用程序的运行过程进行逆向分析,获取所述一组虚拟接口。
可选地,在本实施例中,上述对所述第二应用程序的运行过程进行逆向分析可以包括但不限于对于DEX格式文件,使用JEB工具进行逆向分析以获取一组虚拟接口,对于加固的DEX文件,使用Android SDK中的性能分析软件TraceView,记录待监测应用运行过程中函数调用流程关系图进行分析,获取一组虚拟接口,对于待监测应用中的so共享库文件,使用逆向分析工具IDA进行逆向分析获取Native层的一组虚拟接口。
在一个可选的实施例中,所述一组虚拟接口包括以下接口至少之一:系统Binder服务类虚拟接口、Java类虚拟接口、Native类虚拟接口。
可选地,在本实施例中,可以但不限于将上述虚拟接口分为如下三类:
系统Binder服务类虚拟接口、Java类虚拟接口、Native类虚拟接口。
其中,针对上述三种虚拟接口,分别采用不同的方法实现对上述第二应用程序的监测。
1、Binder方法:在通过上述第一应用程序生成目标虚拟运行环境后,上述第二应用程序启动过程中,已经通过动态代理的方式对AMS,PMS等Binder代理对象进行了Hook,并生成了目标虚拟服务代理对象。如果需要进行监测的虚拟接口所对应的代理对象为已经完成Hook替换的目标虚拟服务代理对象,可以动态代理的方式直接进行Hook,以提高实现对上述第二应用程序进行监测的效率。如果需要进行监测的虚拟接口所对应的代理对象尚未被Hook替换,则对上述虚拟接口进行与普通Java类虚拟接口相同的处理方式。
2、Java方法:从Android5.0开始,正式使用ART虚拟机作为Android运行时环境。而ART虚拟机会在安装Android应用时,将Dalvik字节码翻译成本地机器指令存储在OAT格式文件中。对应于Java虚拟接口的Java方法的执行过程中,每个Java方法对应一个ArtMethod对象,在ART虚拟机加载Class类时,会将Java方法对应机器指令的起始地址设置到对应Art Method对象的compiled_code_entry_point域。Java方法执行时,会根据compiled_code_entry_point的地址,跳转执行对应的机器指令,从而加快了上述Java方法的执行。在对上述Java方法进行Hook时,需要找到方法所属的Class类对象。通过将上述第一应用程序中对于Android系统类Hook的Java监测模块加载时机设置为上述目标虚拟运行环境的初始化过程中,由于系统类对应的DEX文件在ART虚拟机启动时被加载到内存中,并以DexFile类形式保存在Class Linker中,换言之,上述第一应用程序可以直接使用Android系统Class类,并对其中的Java方法进行Hook。
3、Native方法:在Android平台,对系统共享库或App中的共享库的Hook通常需要获取Root权限,然后通过进程注入技术将so库注入到目标进程完成Hook。而在本实施例中,在上述第二应用程序所需调用上述虚拟接口完成启动之前,就已经完成了对上述第二应用程序调用上述虚拟接口的监测,进而,在不同时机加载相应的Native监测模块,并不需要Root权限和进程注入,具有易部署特点。
下面结合具体的实施例,对本发明进行进一步说明:
在Android应用开发中,插件化技术的出现使得模块化编程成为可能。因此,可以将四大组件打包在独立插件模块中,由宿主App(对应于前述的第一应用程序)加载运行插件中的组件。如果将完整的待监测App(对应于前述的第二应用程序)作为一个插件来安装运行,那么在宿主App加载运行待监测App前,可以通过添加一个窗口(对应于前述的目标虚拟运行环境),用于加载监测模块,这样就能监测待监测App。而窗口中加载监测模块的逻辑都是宿主App完成的,并不需要对Android系统和App做出修改。因此,在面对不同机型之间的差异时,只需要将宿主App进行适配,就能够实现非侵入、易部署的技术效果。
因此,可以基于上述基本原理设置如图4所示的一种可选的应用程序的动态监测系统架构:
其中,上述应用程序的动态监测的系统架构可以包括但不限于被监测程序进程402、虚拟服务进程404以及系统服务进程406,通过将上述待监测应用在宿主App的窗口中以插件形式运行,实现了将被监测应用所需要调取的系统服务进程替换为与上述系统服务进行对应的虚拟服务进程,进而监测待监测App与上述虚拟服务进程之间的通信,以获取目标监测日志,完成对待监测App的监测任务。
需要说明的是,图5是根据本发明实施例的另一种可选的应用程序的动态监测的流程示意图,该流程步骤如下:
步骤S502:构造插件运行环境(对应于前述的目标虚拟运行环境);
插件运行环境主体为宿主App,具有将待监测应用以插件形式加载到自身运行环境中运行的能力,从而在待监测应用启动时,将监测模块加载到待监测应用运行的进程中。该宿主App的实现依赖于Android插件化开发技术,例如,由插件化沙箱框架VirtualApp提供。
步骤S504:插件进程环境的初始化;
应用程序的动态监测系统的插件功能主要由VirtualApp提供,VirtualApp运行时,会存在4种进程:宿主进程、虚拟服务进程、客户端进程、宿主进程子进程。其中,(1)宿主进程:用于管理客户端App的安装,启动,卸载。(2)虚拟服务进程:模仿系统Framework层服务功能创建一套虚拟的Binder服务,其中,服务命名和系统服务命名类似。如系统Framework层的AMS对应虚拟服务进程的VAMS。(3)客户端进程:插件App运行的进程,也就是待监测App运行的进程。(4)宿主进程的子进程。
需要说明的是,由于存在多个进程,因此每个进程中的Application都会调用VirtualCore类的startup方法初始化一次。VirtualCore使用InvocationStub Manager类的injectAll方法根据当前进程类型以动态代理的方式进行Hook,用对应的Stub类替换相应的类。其不对宿主进程进行Hook,对虚拟服务进程只Hook AM(Activity Manager)和PM(Packager Manager)两个代理对象,对客户端进程,即待监测进程,需要Hook整个Framework层的Binder服务代理对象和其他相关对象。而对Binder代理的Hook会将当前进程的Binder服务请求重定向到虚拟服务进程中的虚拟服务中。
步骤S506:待监测应用的安装;
由于待监测App作为客户端App运行,因此在运行前,必须由宿主App对其进行一次安装。安装过程是虚拟服务进程中的虚拟服务(Virtual App Manager Service)进行的,该服务模拟了PMS安装应用程序的流程。模拟安装应用程序流程如下:(1)通过PackageParser解析待监测APK中的AndroidManifest.xml文件,生成VPackage对象来储存解析过程中生成的组件信息和权限信息。VPackage对象是可以序列化的,它最终会被序列化到私有安装目录下的package.ini文件中。(2)为安装的待监测App分配私有的安装目录。该安装目录并非是系统的安装目录,而是在宿主App的Data目录下以安装应用包名创建的一个私有安装目录,私有安装目录内部的目录结构和系统安装目录内部的目录结构类似,但多了一些与安装应用相关信息的序列化存储文件,如package.ini等。(3)将APK文件及其相关文件复制到私有安装目录下,如将so文件复制到对应的lib目录下。(4)创建PackageSetting对象,在PackageSetting对象中存储待监测应用的安装信息,如安装目录、分配用户ID等,将PackageSetting对象保存到VPackage对象中。(5)向虚拟服务进程内定义的广播系统注册待监测APK的静态广播。
步骤S508:待监测应用的启动
一个Android应用程序通常由四大组件组成。若该应用仍未启动,访问任意一个组件提供的功能都会启动该应用进程的创建,这个过程由AMS控制。AMS内部维持一个ProcessRecord对象列表,ProcessRecord对象储存了对应进程的相关信息。当组件启动时,AMS会查找该组件所属进程对应的ProcessRecord对象是否存在于列表中,若不存在则通知Zygote进程fork一个进程,并将进程对应的ProcessRecord对象保存在列表中,然后在该进程中创建并启动该组件。在本实施例中,虚拟服务进程仿照系统服务实现了诸多虚拟服务,其中VAMS服务仿照了系统的AMS。VAMS内部有ActivityStack,ActivityRecorder等数据结构,模拟实现了对待监测进程中Activity的栈管理。当待监测App启动时,VAMS并没有像原生AMS那样通过Socket通信告知Zygote去创建一个进程,而是在应用层通过一个StubContentProvider组件的启动来创建待监测应用进程。在组件启动过程中,会创建一个名称为VClientImpl的Binder服务对象,并将该服务的Binder引用返回给VAMS保存,VAMS可通过VClientImpl与待监测应用通信,执行后续的进程初始化工作。在实例化当前进程的Activity或Service组件前,会再次检测当前进程的Application是否初始化,若没有则进行初始化。由StubContentProvider组件启动创建的待监测进程后,待监测进程运行的应用程序认为待监测应用程序,并完成了对当前进程中各种Binder服务代理对象和其他关键对象的Hook替换,使Binder服务请求重定向到虚拟服务进程中。在启动插件化的Activity或Service组件前,VirtualApp会调用VClientImpl类的bind ApplicationNoCheck函数方法。
该方法模拟了ActivityThread类的handleBindApplication方法,创建并初始化待监测应用程序,并且对待监测应用程序的目标虚拟运行环境进行了配置。由于待监测进程启动会调用bind ApplicationNoCheck函数进行待监测应用程序切换,而此时插件化的四大组件尚未启动执行,因此,相当于提供一个窗口,通过在bindApplicationNoCheck函数中窗口处添加监测模块,完成对当前进程的插桩,即可对当前待监测应用程序所运行的进程进行监测。
而相关技术中Android系统是基于linux内核开发的,虽然linux已经提供管道、Socket等IPC机制,但考虑到数据传输效率和安全性,采用了新的进程间通信机制Binder。正常情况下,一个App进程与系统服务进程通信时,是通过Binder代理对象进行的。为了使待监测App中的组件能够在事先启动的进程中运行,VirtualApp仿照系统服务进程构造了一个虚拟服务进程,对系统服务进程Framework层中的诸多Binder服务对象如AMS(Activity ManagerService),PMS(PackageManager Service)进行模拟,构造出虚拟的VPMS(Virtual PackageManager Service)等Binder服务对象。虚拟的Binder服务对象和系统的Binder服务对象具有几乎一样的服务方法,但逻辑不完全相同,它们只是模拟了系统的Binder服务功能。一个正常App进程内部缓存有一部分系统服务的Binder代理对象,在App运行过程中,组件是通过这些代理对象与系统服务进程通信的。为了使组件能够插件化运行,VirtualApp对待监测进程中的Binder代理对象以动态代理方式进行Hook,将缓存Binder代理对象替换成自定义的动态代理对象,这样待监测进程访问系统服务时,自定义的动态代理对象会将Binder服务请求重定向到虚拟服务进程中。虚拟服务进程作为一个中间人,模拟系统服务处理Binder服务请求或者将服务请求中上下文信息替换成宿主App中上下信息发送到系统服务进程处理。在这种方式下,对待监测App中的四大组件进行插件化,使其能够在事先启动的进程中运行。而AndroidMonitor监测系统,在进程事先启动后,待监测App组件启动前这个窗口时机,加载自定义的监控模块,从而能够对App进行监测。
通过本实施例,解决了传统监测方案面临的难部署、要求Root权限、对目标应用侵入性较强、设备数据以及信息安全无法保证的技术问题,实现了一个待监测App运行时,能够同时对待监测应用的Java API和Native API进行监控,相比其他动态监测方案具有易部署、无浸入的特点。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
在本实施例中还提供了一种应用程序的动态监测装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图6是根据本发明实施例的应用程序的动态监测装置的结构框图,如图6所示,该装置包括:
处理模块602,用于在第一应用程序所生成的目标虚拟运行环境中运行第二应用程序,其中,在所述目标虚拟运行环境中具备用于运行所述第二应用程序的目标虚拟服务代理对象,所述目标虚拟服务代理对象用于通过替换所述第二应用程序所需调用的初始服务代理对象以使所述第二应用程序在所述目标虚拟运行环境中运行;
获取模块604,用于获取用于对处于运行状态下的所述第二应用程序进行动态监测的目标监测日志。
在一个可选的实施例中,所述装置还用于:在第一应用程序所生成的目标虚拟运行环境中运行第二应用程序之前,在第一应用程序所生成的第一虚拟运行环境中安装所述第二应用程序;启动所述第二应用程序,并检测所述第二应用程序在启动过程中是否已经进行了初始化;在确定所述第二应用程序已经进行了初始化的情况下,将所述第一虚拟运行环境确定为所述目标虚拟运行环境;在确定所述第二应用程序未进行初始化的情况下,基于所述目标虚拟服务代理对象对所述第一虚拟运行环境进行调整,以生成第二虚拟运行环境,并将所述第二虚拟运行环境确定为所述目标虚拟运行环境。
在一个可选的实施例中,所述装置还用于:在第一应用程序所生成的第一虚拟运行环境中安装所述第二应用程序之前,启动所述第一应用程序;对启动所述第一应用程序后所生成的初始虚拟运行环境进行初始化,得到所述第一虚拟运行环境,其中,所述初始虚拟运行环境包括用于通过运行所述第一应用程序以管理所述第二应用程序的宿主进程、用于生成所述目标虚拟服务的虚拟服务进程、用于运行所述第二应用程序的客户端进程。
在一个可选的实施例中,所述装置还用于通过如下方式对启动所述第一应用程序后所生成的初始虚拟运行环境进行初始化,得到所述第一虚拟运行环境:维持所述宿主进程的运行状态;利用所述虚拟服务进程生成所述目标虚拟服务;在所述客户端进程中运行所述第二应用程序。
在一个可选的实施例中,所述装置还用于通过如下方式基于所述目标虚拟代理对象对所述第一虚拟运行环境进行调整:将运行所述第二应用程序所需调用的初始服务代理对象替换为所述目标虚拟代理对象。
在一个可选的实施例中,在第一应用程序所生成的第一虚拟运行环境中安装所述第二应用程序,包括:
在所述第一虚拟运行环境中将所述第二应用程序安装到目标安装路径下,其中,所述目标安装路径为所述第一应用程序为所述第二应用程序分配的安装路径。
在一个可选的实施例中,所述获取模块604包括:
获取单元,用于获取所述第二应用程序在运行状态下通过所述目标虚拟代理对象所调用的一组虚拟接口,其中,所述一组虚拟接口用于所述第二应用程序调用一组虚拟服务,所述一组虚拟服务为所述目标虚拟服务代理对象所代理的虚拟服务;
确定单元,用于将所述一组虚拟接口的调用日志确定为所述目标监测日志。
在一个可选的实施例中,所述获取单元包括:
获取子单元,用于对所述第二应用程序的运行过程进行逆向分析,获取所述一组虚拟接口。
在一个可选的实施例中,所述一组虚拟接口包括以下接口至少之一:系统Binder服务类虚拟接口、Java类虚拟接口、Native类虚拟接口。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
本发明的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
在本实施例中,上述计算机可读存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,在第一应用程序所生成的目标虚拟运行环境中运行第二应用程序,其中,在目标虚拟运行环境中具备用于运行第二应用程序的目标虚拟服务代理对象,目标虚拟服务代理对象用于通过替换第二应用程序所需调用的初始服务代理对象以使第二应用程序在目标虚拟运行环境中运行;
S2,获取用于对处于运行状态下的第二应用程序进行动态监测的目标监测日志。
计算机可读存储介质还被设置为存储用于执行以下步骤的计算机程序:
S1,在第一应用程序所生成的目标虚拟运行环境中运行第二应用程序,其中,在目标虚拟运行环境中具备用于运行第二应用程序的目标虚拟服务代理对象,目标虚拟服务代理对象用于通过替换第二应用程序所需调用的初始服务代理对象以使第二应用程序在目标虚拟运行环境中运行;
S2,获取用于对处于运行状态下的第二应用程序进行动态监测的目标监测日志。
在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
在一个示例性实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,在第一应用程序所生成的目标虚拟运行环境中运行第二应用程序,其中,在目标虚拟运行环境中具备用于运行第二应用程序的目标虚拟服务代理对象,目标虚拟服务代理对象用于通过替换第二应用程序所需调用的初始服务代理对象以使第二应用程序在目标虚拟运行环境中运行;
S2,获取用于对处于运行状态下的第二应用程序进行动态监测的目标监测日志。
本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种应用程序的动态监测方法,其特征在于,包括:
在第一应用程序所生成的目标虚拟运行环境中运行第二应用程序,其中,在所述目标虚拟运行环境中具备用于运行所述第二应用程序的目标虚拟服务代理对象,所述目标虚拟服务代理对象用于通过替换所述第二应用程序所需调用的初始服务代理对象以使所述第二应用程序在所述目标虚拟运行环境中运行;
获取用于对处于运行状态下的所述第二应用程序进行动态监测的目标监测日志。
2.根据权利要求1所述的方法,其特征在于,在第一应用程序所生成的目标虚拟运行环境中运行第二应用程序之前,所述方法还包括:
在第一应用程序所生成的第一虚拟运行环境中安装所述第二应用程序;
启动所述第二应用程序,并检测所述第二应用程序在启动过程中是否已经进行了初始化;
在确定所述第二应用程序已经进行了初始化的情况下,将所述第一虚拟运行环境确定为所述目标虚拟运行环境;
在确定所述第二应用程序未进行初始化的情况下,基于所述目标虚拟服务代理对象对所述第一虚拟运行环境进行调整,以生成第二虚拟运行环境,并将所述第二虚拟运行环境确定为所述目标虚拟运行环境。
3.根据权利要求2所述的方法,其特征在于,在第一应用程序所生成的第一虚拟运行环境中安装所述第二应用程序之前,所述方法还包括:
启动所述第一应用程序;
对启动所述第一应用程序后所生成的初始虚拟运行环境进行初始化,得到所述第一虚拟运行环境,其中,所述初始虚拟运行环境包括用于通过运行所述第一应用程序以管理所述第二应用程序的宿主进程、用于生成所述目标虚拟服务的虚拟服务进程、用于运行所述第二应用程序的客户端进程。
4.根据权利要求3所述的方法,其特征在于,对启动所述第一应用程序后所生成的初始虚拟运行环境进行初始化,得到所述第一虚拟运行环境,包括:
维持所述宿主进程的运行状态;
利用所述虚拟服务进程生成所述目标虚拟服务;
在所述客户端进程中运行所述第二应用程序。
5.根据权利要求2所述的方法,其特征在于,基于所述目标虚拟代理对象对所述第一虚拟运行环境进行调整,包括:
将运行所述第二应用程序所需调用的初始服务代理对象替换为所述目标虚拟代理对象。
6.根据权利要求2所述的方法,其特征在于,在第一应用程序所生成的第一虚拟运行环境中安装所述第二应用程序,包括:
在所述第一虚拟运行环境中将所述第二应用程序安装到目标安装路径下,其中,所述目标安装路径为所述第一应用程序为所述第二应用程序分配的安装路径。
7.根据权利要求2所述的方法,其特征在于,获取用于对处于运行状态下的所述第二应用程序进行动态监测的目标监测日志,包括:
获取所述第二应用程序在运行状态下通过所述目标虚拟代理对象所调用的一组虚拟接口,其中,所述一组虚拟接口用于所述第二应用程序调用一组虚拟服务,所述一组虚拟服务为所述目标虚拟服务代理对象所代理的虚拟服务;
将所述一组虚拟接口的调用日志确定为所述目标监测日志。
8.根据权利要求7所述的方法,其特征在于,获取所述第二应用程序在运行状态下通过所述目标虚拟代理对象所调用的一组虚拟接口,包括:
对所述第二应用程序的运行过程进行逆向分析,获取所述一组虚拟接口。
9.根据权利要求7或8所述的方法,其特征在于,所述一组虚拟接口包括以下接口至少之一:系统Binder服务类虚拟接口、Java类虚拟接口、Native类虚拟接口。
10.一种应用程序的动态监测装置,其特征在于,包括:
处理模块,用于在第一应用程序所生成的目标虚拟运行环境中运行第二应用程序,其中,在所述目标虚拟运行环境中具备用于运行所述第二应用程序的目标虚拟服务代理对象,所述目标虚拟服务代理对象用于通过替换所述第二应用程序所需调用的初始服务代理对象以使所述第二应用程序在所述目标虚拟运行环境中运行;
获取模块,用于获取用于对处于运行状态下的所述第二应用程序进行动态监测的目标监测日志。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述权利要求1至9任一项中所述的方法。
12.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述权利要求1至9任一项中所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010657830.7A CN111880987A (zh) | 2020-07-09 | 2020-07-09 | 应用程序的动态监测方法、装置、存储介质以及电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010657830.7A CN111880987A (zh) | 2020-07-09 | 2020-07-09 | 应用程序的动态监测方法、装置、存储介质以及电子装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111880987A true CN111880987A (zh) | 2020-11-03 |
Family
ID=73150574
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010657830.7A Pending CN111880987A (zh) | 2020-07-09 | 2020-07-09 | 应用程序的动态监测方法、装置、存储介质以及电子装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111880987A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112463128A (zh) * | 2020-12-08 | 2021-03-09 | 北京指掌易科技有限公司 | 软件开发工具包行为控制方法及装置 |
CN112559293A (zh) * | 2020-12-22 | 2021-03-26 | 上海哔哩哔哩科技有限公司 | 应用程序包的监控方法及装置 |
CN112966257A (zh) * | 2021-05-18 | 2021-06-15 | 腾讯科技(深圳)有限公司 | 一种应用程序的授权方法及装置 |
CN113778554A (zh) * | 2021-09-01 | 2021-12-10 | 粒子文化科技集团(杭州)股份有限公司 | 插件处理方法、电子装置和存储介质 |
CN113791789A (zh) * | 2021-08-13 | 2021-12-14 | 成都中鱼互动科技有限公司 | 一种通用浏览器上检测webgl上下文的方法 |
WO2022111391A1 (zh) * | 2020-11-27 | 2022-06-02 | 华为技术有限公司 | 管理不可信应用程序通信的方法及相关装置 |
WO2022253158A1 (zh) * | 2021-06-04 | 2022-12-08 | 华为技术有限公司 | 一种用户隐私保护方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106897611A (zh) * | 2017-03-03 | 2017-06-27 | 金光 | 无需root权限的安全虚拟移动应用程序运行环境系统及方法与应用 |
CN108932429A (zh) * | 2017-05-27 | 2018-12-04 | 腾讯科技(深圳)有限公司 | 应用程序的分析方法、终端及存储介质 |
-
2020
- 2020-07-09 CN CN202010657830.7A patent/CN111880987A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106897611A (zh) * | 2017-03-03 | 2017-06-27 | 金光 | 无需root权限的安全虚拟移动应用程序运行环境系统及方法与应用 |
CN108932429A (zh) * | 2017-05-27 | 2018-12-04 | 腾讯科技(深圳)有限公司 | 应用程序的分析方法、终端及存储介质 |
Non-Patent Citations (2)
Title |
---|
文伟平 等: "一种基于Android内核的APP敏感行为检测方法及实现", 《信息网络安全》, no. 08, pages 1 - 8 * |
苏祥: "一种易部署的Android应用程序动态监测方案", 《计算机科学》, vol. 47, no. 2, pages 1 - 7 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022111391A1 (zh) * | 2020-11-27 | 2022-06-02 | 华为技术有限公司 | 管理不可信应用程序通信的方法及相关装置 |
CN112463128A (zh) * | 2020-12-08 | 2021-03-09 | 北京指掌易科技有限公司 | 软件开发工具包行为控制方法及装置 |
CN112559293A (zh) * | 2020-12-22 | 2021-03-26 | 上海哔哩哔哩科技有限公司 | 应用程序包的监控方法及装置 |
CN112966257A (zh) * | 2021-05-18 | 2021-06-15 | 腾讯科技(深圳)有限公司 | 一种应用程序的授权方法及装置 |
CN112966257B (zh) * | 2021-05-18 | 2022-02-08 | 腾讯科技(深圳)有限公司 | 一种应用程序的授权方法及装置 |
WO2022253158A1 (zh) * | 2021-06-04 | 2022-12-08 | 华为技术有限公司 | 一种用户隐私保护方法及装置 |
CN113791789A (zh) * | 2021-08-13 | 2021-12-14 | 成都中鱼互动科技有限公司 | 一种通用浏览器上检测webgl上下文的方法 |
CN113791789B (zh) * | 2021-08-13 | 2023-08-04 | 成都中鱼互动科技有限公司 | 一种通用浏览器上检测webgl上下文的方法 |
CN113778554A (zh) * | 2021-09-01 | 2021-12-10 | 粒子文化科技集团(杭州)股份有限公司 | 插件处理方法、电子装置和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111880987A (zh) | 应用程序的动态监测方法、装置、存储介质以及电子装置 | |
US20180039507A1 (en) | System and method for management of a virtual machine environment | |
US8793676B2 (en) | Version-resilient loader for custom code runtimes | |
US9703551B2 (en) | Modifying mobile application binaries to call external libraries | |
US20150332043A1 (en) | Application analysis system for electronic devices | |
US9208328B2 (en) | Security system and method for operating systems | |
US8336043B2 (en) | Dynamic deployment of custom code | |
US7774762B2 (en) | System including run-time software to enable a software application to execute on an incompatible computer platform | |
CN105955782B (zh) | 应用程序运行控制的方法及装置 | |
US20050081220A1 (en) | Systems and methods for dynamically linking application software into a running operating system kernel | |
CN106066803B (zh) | 应用程序运行控制的方法及装置 | |
US10592215B1 (en) | Unikernel cross-compilation | |
WO2017041499A1 (zh) | 一种软件升级方法、系统和计算机可读存储介质 | |
CN112083968A (zh) | 一种宿主中插件加载方法及装置 | |
CN116860266A (zh) | 应用容器化部署方法、装置、电子设备及存储介质 | |
CN113760339A (zh) | 漏洞修复方法和装置 | |
CN110045998A (zh) | 加载动态库的方法及装置 | |
CN112199151B (zh) | 一种应用程序的运行方法及装置 | |
US11385923B2 (en) | Container-based virtualization system extending kernel functionality using kernel modules compiled by a compiling container and loaded by an application container | |
CN106775916B (zh) | 减小应用安装包的方法、装置及电子设备 | |
CN113821220A (zh) | 一种linux操作系统的安装方法和装置 | |
CN114490103A (zh) | 一种操作系统接口调用方法、装置以及电子设备 | |
CN109933355B (zh) | 应用程序升级方法及装置 | |
CN114706662B (zh) | 基于jvm沙箱实现动态模拟业务操作和数据的方法及系统 | |
Müller et al. | Dinosaur Resurrection: PowerPC Binary Patching for Base Station Analysis |
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 |