具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,在一个实施例中,提供了一种操作平台的监控方法。本实施例主要以该方法应用于包含有操作平台的终端中来举例说明,该终端可以包括智能手机、平板电脑、电子书阅读器、MP3播放器(Moving Picture Experts GroupAudio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving PictureExperts Group Audio Layer IV,动态影像专家压缩标准音频层面3)播放器、膝上型便携计算机和台式计算机等等。该操作平台的监控方法,包括:
步骤102,将第一代码片段注入到终端的目标系统进程中。
第一代码片段是使得虚拟机能够加载第二代码片段的一段代码。进一步的,可通过第三方进程将第一代码片段注入到终端的目标系统进程中,第三方进程可以是区别于被监控的应用程序的进程。由于目标系统进程不易被删除,使得被注入的第一代码片段能够持续稳定地运行,不会因为安全软件清理内存、恶意软件恶意关闭而停止。
在一个优选的实施例中,以Android平台为例,目标系统进程可以为system_server,该进程为Android平台下的关键系统进程,该进程不可删除,否则Android平台将无法运行。
具体的,在一个实施例中,步骤102包括:获取目标系统进程的进程标识;根据目标系统进程的进程标识,使用可远程注入的系统函数将第一代码片段注入到目标系统进程中。
进程标识可以唯一地标识一个目标系统进程,该进程标识可以是目标系统进程的进程ID或进程名称。具体的,以操作平台为Android平台为例,可远程注入的系统函数为ptrace函数,该函数可以实现远程注入,通过ptrace函数可以将第一代码片段注入到目标系统进程中。
本实施例中,通过获取目标系统进程的进程标识,可以唯一地确定目标系统进程,进而使用可远程注入的系统函数,准确的将第一代码片段注入到目标系统进程中。
步骤104,在目标系统进程中运行虚拟机和第一代码片段。
在将第一代码片段注入到目标系统进程后,在目标系统进程中即可运行第一代码片段,此外,还可在目标系统进程中运行虚拟机。
步骤106,第一代码片段与虚拟机交互,控制虚拟机加载第二代码片段,通过第二代码片段监控终端中的应用程序的卸载事件。
第一代码片段可以与虚拟机进行交互,进而控制虚拟机加载第二代码片段。第二代码片段是用来实现对终端中的应用程序的卸载事件进行监控的一段代码,可存储于操作平台的文件系统中,执行第二代码片段即可实现对应用程序卸载事件的监控。进一步的,第二代码片段可实现对特定应用程序的监控,也可以通过读取预先配置的配置文件,对配置文件中设置的应用程序进行监控,也可以对所有应用程序进行监控。
本实施例中,第一代码片段不直接用于监控应用程序卸载事件,只实现与虚拟机的交互,其代码量少,第一代码片段执行时占用的内存空间小,且不影响操作系统的运行。
在一个实施例中,操作平台为Android平台,第一代码片段为C/C++代码片段,虚拟机为Android平台中的Java虚拟机,第二代码片段为Java代码片段。本实施例中,C/C++代码片段与Java虚拟机交互,使Java虚拟机加载Java代码片段,是通过JNI(Java Native Interface,Java本地接口)实现的。
本实施例中,通过将第一代码片段注入到目标系统进程,由第一代码片段与Android平台中的Java虚拟机交互,控制Java虚拟机加载第二代码片段,通过第二代码片段进而监控应用程序的卸载事件。由于目标系统进程在运行的过程中不易被删除,因此将第一代码片段注入目标系统进程后,使得应用程序的卸载事件可以处于被监控状态,从而可进一步根据得到的监控结果对应用程序的卸载原因进行分析。
在一个实施例中,该操作平台的监控方法还包括:当监测到应用程序的卸载事件时,记录应用程序所属的环境信息,并将环境信息上传至服务器。
卸载事件触发的原因有多种,可能是用户主动卸载,可能是恶意程序恶意卸载,或者可能是竞争对手不当竞争而强制卸载应用程序。因此当监测到应用程序的卸载事件时,记录应用程序所属的环境信息,并将记录下来的环境信息上传至服务器,从而使得服务器能够根据上传的环境信息进行分析。
在一个实施例中,还可以根据预配置的是否收集上传服务器的配置文件,判断是否将环境信息上传服务器,该配置文件可以由终端配置,使用户能够选择是否收集环境信息并上传。终端也可以接收服务器的分析结果,使得用户端根据服务器的分析结果,确定卸载事件的发生是否由其他恶意程序恶意卸载、或者竞争对手不当竞争强制卸载导致。
在一个实施例中,环境信息包括正在运行的进程标识、已安装的应用程序标识、终端的设备识别码和终端的root权限信息。
正在运行的进程标识可以是用于唯一标识正在运行的进程的进程名称或者进程ID号;已安装的应用程序标识可以是唯一标识已安装的应用程序的程序名称;设备识别码可以是唯一标识终端的号码,例如用来唯一标识手机的IMEI(International Mobile Equipment Identity,国际移动设备身份码)等。
进一步的,服务器可根据正在运行的进程标识,可以通过检测其是否列于预配置的恶意程序列表中,从而确定卸载事件是否由于恶意程序恶意卸载导致;某些应用程序的卸载需要root权限,根据终端是否已经获得root权限,可以判断卸载事件是否由用户主动卸载触发;终端的设备识别码可以唯一标识终端,当同一终端多次发生卸载事件时,很可能是由于恶意程序恶意卸载,或者竞争对手不当竞争强制卸载而触发,此时结合已安装的应用程序标识或正在运行的进程标识,则可以确定卸载事件触发的原因。
本实施例中,将环境信息上传至服务器,进而可以通过分析环境信息中正在运行的进程标识、已安装的应用程序标识、终端的设备识别码和终端的root权限信息,确定应用程序被卸载的原因。
下面以一个具体的应用场景来说明上述操作平台的监控方法的原理。该应用场景以操作平台为Android平台进行举例说明,该Android平台运行于移动终端中。如图2所示,在移动终端中运行有多个系统进程(系统进程1、系统进程2……系统进程n)和一个第三方进程。由第三方进程向系统进程2(优选地,这里系统进程2为system_server)注入第一代码片段,通过系统调用,在系统进程2中运行Android平台中的虚拟机(Android虚拟机)和第一代码片段。第一代码片段与Android平台中的虚拟机进行交互,从而控制Android平台中的虚拟机加载第二代码片段并执行。通过第二代码片段,可以监控应用程序的卸载事件。当监测到应用程序的卸载事件时,收集应用程序所属的环境信息,即移动终端中正在运行的进程的名称、已经安装的程序的名称、设备识别码和移动终端的root权限信息;并将这些环境信息上传到服务器,从而由服务器对环境信息进行分析,确定卸载事件发生的原因。
如图3所示,在一个实施例中,还提供了一种操作平台的监控装置,该装置包括:
代码注入模块320,用于将第一代码片段注入到终端的目标系统进程中。
代码运行模块340,用于在目标系统进程中运行虚拟机和第一代码片段。
事件监控模块360,用于通过第一代码片段与虚拟机交互,控制虚拟机加载第二代码片段,通过第二代码片段监控终端中的应用程序的卸载事件。
如图4所示,在一个实施例中,该操作平台的监控装置还包括:
进程标识获取模块321,用于获取目标系统进程的进程标识。
注入执行模块322,用于根据目标系统进程的进程标识,使用可远程注入的系统函数将第一代码片段注入到目标系统进程中。
在一个实施例中,操作平台是Android平台,第一代码片段为C/C++代码片段,虚拟机为Java虚拟机,第二代码片段为Java代码片段。
如图5所示,在一个实施例中,该操作平台的监控装置还包括:
收集上传模块380,用于当监测到应用程序的卸载事件时,记录应用程序所属的环境信息,并将环境信息上传至服务器。
在一个实施例中,环境信息包括正在运行的进程标识、已安装的应用程序标识、终端的设备识别码和终端的root权限信息。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述程序可存储于一计算机可读取存储介质中,如本发明实施例中,该程序存储于终端的存储介质中,并被该终端中的至少一个处理器执行,以实现包括如上述各方法的实施例的流程。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
本发明实施例还提供了另一种操作平台的监控终端,如图6所示,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该终端可以为包括手机、平板电脑、PDA(PersonalDigital Assistant,个人数字助理)、POS(Point of Sales,销售终端)、车载电脑等任意终端设备,以终端为手机为例:
图6示出的是与本发明实施例提供的终端相关的手机的部分结构的框图。参考图6,手机包括:射频(Radio Frequency,RF)电路1110、存储器1120、输入单元1130、显示单元1140、传感器1150、音频电路1160、无线通信模块1170、处理器1180、以及电源1190等部件。本领域技术人员可以理解,图6中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图6对手机的各个构成部件进行具体的介绍:
RF电路1110可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器1180处理;另外,将设计上行的数据发送给基站。通常,RF电路包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(Low Noise Amplifier,LNA)、双工器等。此外,RF电路110还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(Global System of Mobilecommunication,GSM)、通用分组无线服务(General Packet Radio Service,GPRS)、码分多址(Code Division Multiple Access,CDMA)、宽带码分多址(WidebandCode Division Multiple Access,WCDMA)、长期演进(Long TermEvolution,LTE))、电子邮件、短消息服务(Short Messaging Service,SMS)等。
存储器1120可用于存储软件程序以及模块,处理器1180通过运行存储在存储器1120的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器1120中的软件程序可用于执行一种操作平台的监控方法,该方法包括:将第一代码片段注入到终端的目标系统进程中;在目标系统进程中运行虚拟机和第一代码片段;第一代码片段与虚拟机交互,控制虚拟机加载第二代码片段,通过第二代码片段监控终端中的应用程序的卸载事件。存储器1120可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器1120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元1130可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元1130可包括触控面板1131以及其他输入设备1132。触控面板1131,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板1131上或在触控面板1131附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板1131可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器1180,并能接收处理器1180发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板1131。除了触控面板1131,输入单元1130还可以包括其他输入设备1132。具体地,其他输入设备1132可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元1140可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元1140可包括显示面板1141,可选的,可以采用液晶显示器(Liquid Crystal Display,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板1141。进一步的,触控面板1131可覆盖显示面板1141,当触控面板1131检测到在其上或附近的触摸操作后,传送给处理器1180以确定触摸事件的类型,随后处理器1180根据触摸事件的类型在显示面板1141上提供相应的视觉输出。虽然在图6中,触控面板1131与显示面板1141是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板1131与显示面板1141集成而实现手机的输入和输出功能。
手机还可包括至少一种传感器1150,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板1141的亮度,接近传感器可在手机移动到耳边时,关闭显示面板1141和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路1160、扬声器1161,传声器1162可提供用户与手机之间的音频接口。音频电路1160可将接收到的音频数据转换后的电信号,传输到扬声器1161,由扬声器1161转换为声音信号输出;另一方面,传声器1162将收集的声音信号转换为电信号,由音频电路1160接收后转换为音频数据,再将音频数据输出处理器1180处理后,经RF电路1110以发送给比如另一手机,或者将音频数据输出至存储器1120以便进一步处理。
无线通信模块1170包括但不限于无线保真(wireless fidelity,WiFi,一种短距离无线传输技术)模块、蓝牙模块、红外通信模块等。手机通过无线通信模块1170可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图6示出了无线通信模块1170,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器1180是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器1120内的软件程序和/或模块,以及调用存储在存储器1120内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器1180可包括一个或多个处理单元;优选的,处理器1180可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1180中。
手机还包括给各个部件供电的电源1190(比如电池),优选的,电源可以通过电源管理系统与处理器1180逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本发明实施例中,该终端所包括的处理器1180还具有以下功能:将第一代码片段注入到终端的目标系统进程中;在目标系统进程中运行虚拟机和第一代码片段;第一代码片段与虚拟机交互,控制虚拟机加载第二代码片段,通过第二代码片段监控终端中的应用程序的卸载事件。
在一个实施例中,处理器1180还具有以下功能:获取目标系统进程的进程标识;根据目标系统进程的进程标识,使用可远程注入的系统函数将第一代码片段注入到目标系统进程中。
在一个实施例中,操作平台为Android平台,第一代码片段为C/C++代码片段,虚拟机为Java虚拟机,第二代码片段为Java代码片段。
在一个实施例中,处理器1180还具有以下功能:当监测到应用程序的卸载事件时,记录应用程序所属的环境信息,并将环境信息上传至服务器。
在一个实施例中,环境信息包括正在运行的进程标识、已安装的应用程序标识、终端的设备识别码和终端的root权限信息。
以上实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。