CN106681884B - 一种***调用的监控方法和装置 - Google Patents

一种***调用的监控方法和装置 Download PDF

Info

Publication number
CN106681884B
CN106681884B CN201610490064.3A CN201610490064A CN106681884B CN 106681884 B CN106681884 B CN 106681884B CN 201610490064 A CN201610490064 A CN 201610490064A CN 106681884 B CN106681884 B CN 106681884B
Authority
CN
China
Prior art keywords
consumer process
consumer
tracked
function
calling
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
CN201610490064.3A
Other languages
English (en)
Other versions
CN106681884A (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.)
Tencent Cloud Computing Beijing Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201610490064.3A priority Critical patent/CN106681884B/zh
Publication of CN106681884A publication Critical patent/CN106681884A/zh
Application granted granted Critical
Publication of CN106681884B publication Critical patent/CN106681884B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system

Landscapes

  • Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Selective Calling Equipment (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明实施例公开了一种***调用的监控方法和装置;本发明实施例在接收到用户进程的启动请求时,可以根据该启动请求中携带的需要启动的用户进程的标识创建用户进程,并对该用户进程进行追踪,然后,当追踪信息指示该用户进程在进行***调用时,获取***调用信息,并基于该***调用信息对该用户进程的***调用操作进行监控;该方案不需要修改内核空间的数据,不仅实现简单,而且可以提高适配性、稳定性和兼容性。

Description

一种***调用的监控方法和装置
技术领域
本发明涉及通信技术领域,具体涉及一种***调用的监控方法和装置。
背景技术
在操作***中,绝大部分的资源都是通过***调用来访问的,比如文件、和内存,等等。因此,如果能够控制***调用,保证他们调用是具有权限的,比如不是来自恶意或非法用户,就能够在很大程度上提高***的安全性,为此,现有技术提出了***调用的监控技术,即对***调用进行拦截和分析,在根据分析结果确定该***调用具有权限时,才允许执行该***调用。
在现有技术中,主要是利用***漏洞,对***内核空间中的数据进行修改来达到拦截调用的目的的。例如,具体可以对内核空间中的syscall table(***调用函数表)中某个syscall(***调用)函数的地址进行修改,从而改变该syscall函数的指向,使得***在调用该syscall函数时,可以指向更改后地址所对应的函数,比如一个自定义函数,然后,利用该自定义函数,获取该***调用的相关信息并进行分析,便可以确定该***调用是否具有权限,是否允许执行该***调用,等等。
在对现有技术的研究和实践过程中,本发明的发明人发现,现有的方案需要对内核空间的数据进行修改,因此,实现较为复杂,而且,由于受限于***漏洞本身,所以,适配性、稳定性和兼容性也较差。
发明内容
本发明实施例提供一种***调用的监控方法和装置,不需要修改内核空间的数据,不仅实现简单,而且可以提高适配性、稳定性和兼容性。
本发明实施例提供一种***调用的监控方法,包括:
接收用户进程的启动请求,所述启动请求中携带需要启动的用户进程的标识;
根据所述标识创建用户进程,并对所述用户进程进行追踪,得到追踪信息;
当追踪信息指示所述用户进程在进行***调用时,获取***调用信息;
基于所述***调用信息对所述用户进程的***调用操作进行监控。
相应的,本发明实施例提供一种***调用的监控装置,包括:
接收单元,用于接收用户进程的启动请求,所述启动请求中携带需要启动的用户进程的标识;
创建单元,用于根据所述标识创建用户进程;
追踪单元,用于对所述用户进程进行追踪,得到追踪信息;
获取单元,用于当追踪信息指示所述用户进程在进行***调用时,获取***调用信息;
监控单元,用于基于所述***调用信息对所述用户进程的***调用操作进行监控。
本发明实施例在接收到用户进程的启动请求时,可以根据该启动请求中携带的需要启动的用户进程的标识创建用户进程,并对该用户进程进行追踪,然后,当追踪信息指示该用户进程在进行***调用时,获取***调用信息,并基于该***调用信息对该用户进程的***调用操作进行监控;由于该方案的大部分逻辑都在用户空间完成,而无需对内核空间的数据进行修改,因此,实现较为简单;而且,由于该方案无需基于***漏洞,所以,相对于现有的方案而言,适配性、稳定性和兼容性也得到大大地提高。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本发明实施例提供的***调用的监控方法的场景示意图;
图1b是本发明实施例提供的***调用的监控方法的流程图;
图2a是本发明实施例提供的***调用的监控方法的另一流程图;
图2b是本发明实施例提供的***调用的监控方法的另一场景示意图;
图3a是本发明实施例提供的***调用的监控装置的结构示意图;
图3b是本发明实施例提供的***调用的监控装置的另一结构示意图;
图4是本发明实施例提供的终端的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种***调用的监控方法和装置。
其中,该***调用的监控方法具体可以适用于安卓(android)操作***(简称安卓***)或其他类似的操作***,而该***调用的监控装置具体可以集成在终端,比如手机、平板电脑或笔记本电脑等设备中。
以安卓***为例,参见图1a,内存空间一般可以划分为内核空间和用户空间,其中,内核空间和用户空间的权限不同,内核空间拥有较高的权限,一个终端一般只有一个内核空间,而用户空间相对内核空间而言,权限较低,一般可以存在有多个用户空间,这些用户空间主要用于各种应用程序的运行,每个应用程序可以包括多个进程,在本发明实施例中,将这些应用程序对应的进程称为用户进程;而***调用,主要指的是对内核空间中的***调用函数的调用。为了实现对***调用的监控,可以在用户进程创建时,便对该用户进程进行追踪,若追踪信息指示该用户进程正在进行***调用,则获取***调用信息,并基于该***调用信息对该用户进程的***调用操作进行控制。
例如,如图1a所示,可以启动一追踪进程,当该追踪进程接收到用户进程的启动请求时,便可以根据该启动请求中携带的需要启动的用户进程的标识创建用户进程,比如,可以将跟踪进程附加(attach)至孵化进程(也称为孵化器),通过孵化进程如zygote创建(即孵化)一新的进程(即子进程),然后根据该标识对该子进程中的预设参数进行修改,得到用户进程,与此同时,还可以在该跟踪进程中设置相应的标识,用于指示对用户进程进行追踪,这样,后续跟踪进程便可以自动附加至该用户进程,当该用户进程进行***调用时,内核空间便会返回相应的***调用信息给附加至该用户进程的进程,即该跟踪进程,使得跟踪进程可以基于该***调用信息对该用户进程的***调用操作进行监控。比如,具体可以从中央处理器(CPU,Central Processing Unit)的寄存器中读取***调用函数(syscall)的函数号(syscall number),然后,根据该函数号确定是否需要对该***调用函数的调用进行控制,若需要,则对该***调用信息进行分析,并基于分析结果对该用户进程的***调用进行控制,否则,如果不需要对该函数的调用进行控制,则继续执行该用户进程,等等。
以下分别进行详细说明。需说明的是,以下实施例的序号不作为对实施例优选顺序的限制。
实施例一、
在本实施例中,将从***调用的监控装置的角度进行描述,该***调用的监控装置具体可以集成在终端中,该终端可以包括手机、平板电脑或笔记本电脑等设备。
一种***调用的监控方法,包括:接收用户进程的启动请求,该启动请求中携带需要启动的用户进程的标识;根据该标识创建用户进程,并对该用户进程进行追踪,得到追踪信息;当追踪信息指示该用户进程在进行***调用时,获取***调用信息;基于该***调用信息对该用户进程的***调用操作进行监控。
如图1b所示,该***调用的监控方法的具体流程可以如下:
101、接收用户进程的启动请求。
其中,该启动请求中携带需要启动的用户进程的标识,比如该用户进程的名称和/或编号等信息,此外,还可以携带其他的信息,比如与该用户进程相应的预设参数的值,等等。
其中,预设参数与具体的用户进程相关,一般用于指示该用户进程的资源和调用等情况,不同的用户进程所对应的预设参数可能会存在差异,具体可以根据实际应用的需求而定,在此不再赘述。
可选的,可以通过设置一追踪进程(或称为拦截进程)来执行该***调用的监控操作方法的相关操作,即步骤“接收用户进程的启动请求”具体可以为:
通过追踪进程接收用户进程的启动请求。
若通过追踪进程来执行该***调用的监控操作方法的相关操作,则在首次执行时,需要启动该追踪进程,即可选的,在步骤“接收用户进程的启动请求”之前,该***调用的监控方法还可以包括:
接收***调用的监控请求,根据该监控请求启动跟踪进程。
其中,该跟踪进程具体可以通过ptrace(跟踪)机制来实现,比如,具体可以在***处理***调用函数(syscall)软中断的例程中***硬编码的hook(entry.s)(hook(entry.s)为一种钩子函数),使之能够拦截所有被追踪进程的syscall调用和调出,从而达到些安全防护的效果,比如注入拦截,文件删除拦截,文件修改拦截,文件读取拦截、以及网络通讯拦截,等等。
102、根据该标识创建用户进程,并对该用户进程进行追踪,得到追踪信息。
其中,根据该标识创建用户进程的方式可以有多种,例如,可以如下:
将跟踪进程附加(attach)至孵化进程(也称为孵化器),通过该孵化进程创建子进程,该子进程继承该孵化进程的内容,根据该标识对该子进程中的预设参数进行修改,得到用户进程。
比如,可以根据该标识确定该子进程中需要修改的参数,以及相应参数值,然后,根据该需要修改的参数,以及相应参数值对该子进程进行修改,得到用户进程。
需说明的是,若在用户进程的启动请求中已经携带了预设参数的值,则此时,可以从该启动请求中该子进程中需要修改的参数,以及相应参数值;而如果启动请求中并没有携带该预设参数的值,则此时,可以从其他存储单位或数据库中获取到该子进程中需要修改的参数,以及相应参数值。
其中,该孵化进程具体可以为zygote(孵化)进程或其他可以实现与zygote进程类似功能的进程,具体可根据实际应用的需求而定,在此不再赘述。
例如,以该孵化进程具体为zygote进程为例,则可以将该跟踪进程附加(attach)至zygote进程,这样,当收到需要启动用户进程时,比如当用户点击某个终端应用的图标时,则zygote进程会以自己为母本,创建(或称为孵化)一新的进程,该新的进程继承了zygote进程所有的内容,也就是说,此时zygote进程相当于父进程,而该新的进程相当于子进程,因此,在本发明实施例中,将该新的进程称为子进程,此后,便可以根据需要启动的用户进程的标识确定该子进程中需要修改的参数,以及相应参数值,然后根据该需要修改的参数,以及相应参数值对该子进程进行修改,得到用户进程。
此外,在将该跟踪进程附加至孵化进程时,还可以在该跟踪进程中设置相应的标识,该标识用于指示对用户进程进行追踪,这样,后续若发现有该标识,便可以对用户进程进行追踪,或者,也可以设置一标识,用于指示是否对用户进程进行追踪,比如值为“1”时表示需要对用户进程进行追踪,值为“0”时表示需要对用户进程进行追踪,反之亦可,等等。即此时,步骤“对该用户进程进行追踪,得到追踪信息”可以包括:
确定该标识指示对用户进程进行追踪时,将该跟踪进程附加至该用户进程,使得该跟踪进程对该用户进程进行追踪,得到追踪信息。
比如,具体可以在跟踪进程中设置PTRACE_O_TRACEFORK,其中,PTRACE_O_TRACEFORK是PTRACE中的一个标识位,通过设置它,可以使得当由zygote进程孵化的进程执行到FORK(一种函数)时,自动附加至对应的用户进程上,这样,后续追踪进程便可以对该用户进程进行追踪。
103、当追踪信息指示该用户进程在进行***调用时,获取***调用信息。
例如,当追踪信息指示该用户进程在进行***调用时,具体可以通过跟踪进程接收来自内核空间的***调用信息。
比如,以用户进程为应用A的启动进程为例,则当该应用A的启动进程调用内核空间的某个***调用函数(syscall)时,由于syscall在***底层的实现,因此,它会向附加(attach)到该用户进程的进程发送信号,即会向追踪进程发送信号,其中,该信号携带***调用信息。
其中,该***调用信息可以包括***调用函数标识,比如名称和/或调用号(syscall number)等,还可以包括***调用的时间、以及存储位置等。
104、基于该***调用信息对该用户进程的***调用操作进行监控。例如,具体可以如下:
(1)读取***调用函数的调用号(syscall number)。
比如,可以通过读取CPU的寄存器,来获取到调用号。
(2)根据该调用号确定需要对该函数的调用进行控制时,对该***调用信息进行分析,得到分析结果。
例如,可以预设一数据表,该数据表保存有调用号、***调用函数(syscall)、以及重要等级等信息之间的映射关系,其中,重要等级越高,表明调用该syscall时所需要的权限等级越高,越需要对该函数的调用进行控制。
这样,在获取到调用号之后,便可以通过查找该预设数据表,来确定该调用号所对应的函数调用是否是需要进行控制,比如,以重要等级为“1”表示需要对该函数的调用进行控制为例,则此时,若调用号为“333”所对应的重要等级为“1”,则可以需要对该函数的调用进行控制,于是,对该***调用信息进行分析,比如,可以确定该用户进程是否具有调用该函数的权限,等等,从而得到分析结果。
反之,若调用号为“333”所对应的重要等级为不为“1”,则可以不需要对该函数的调用进行控制,于是,可以允许该用户进程调用该函数。
(3)根据该分析结果对该用户进程的***调用操作进行控制,比如,可以如下:
根据该分析结果确定该用户进程具有调用该函数的权限时,允许该用户进程调用该函数;
根据该分析结果确定该用户进程不具有调用该函数的权限时,阻止该用户进程调用该函数。
由上可知,本实施例在接收到用户进程的启动请求时,可以根据该启动请求中携带的需要启动的用户进程的标识创建用户进程,并对该用户进程进行追踪,然后,当追踪信息指示该用户进程在进行***调用时,获取***调用信息,并基于该***调用信息对该用户进程的***调用操作进行监控;由于该方案的大部分逻辑都在用户空间完成,而无需对内核空间的数据进行修改,因此,实现较为简单;而且,由于该方案无需基于***漏洞,所以,相对于现有的方案而言,适配性、稳定性和兼容性也得到大大地提高。
实施例二、
根据实施例一所描述的方法,以下将举例作进一步详细说明。
在本实施例中,将以该***调用的监控装置具体集成在终端中,且该终端的操作***为安卓***为例进行说明。
如图2a所示,一种***调用的监控方法,具体流程可以如下:
201、终端接收***调用的监控请求,根据该监控请求启动跟踪进程。
其中,该跟踪进程具体可以通过ptrace(跟踪)机制来实现,比如,具体可以在***处理***调用函数(syscall)软中断的例程中***硬编码的hook(entry.s)(hook(entry.s)为一种钩子函数),使之能够拦截所有被追踪进程的syscall调用和调出,从而达到些安全防护的效果,比如注入拦截,文件删除拦截,文件修改拦截,文件读取拦截、以及网络通讯拦截,等等。
需说明的是,为了节省流程,提高效率,该跟踪进程只需在首次运行时启动即可,后续可以一直沿用,而无需每次对用户进程进行监控时都启动一次,即步骤201为可选步骤,若当前***中的跟踪进程已经启动,则可以不执行该步骤。
202、终端通过追踪进程接收用户进程的启动请求。
其中,该启动请求中携带需要启动的用户进程的标识,比如该用户进程的名称和/或编号等信息,此外,还可以携带其他的信息,比如与该用户进程相应的预设参数的值,等等。
203、终端将跟踪进程附加(attach)至孵化进程,通过该孵化进程创建子进程,该子进程继承该孵化进程的内容,根据该标识对该子进程中的预设参数进行修改,得到用户进程。
其中,该孵化进程具体可以为zygote(孵化)进程或其他可以实现与zygote进程类似功能的进程,例如,以该孵化进程具体为zygote进程,且该需要启动的用户进程为文件A的删除进程为例,则如图2b所示,具体可以如下:
可以将该跟踪进程附加(attach)至zygote进程,这样,当接收到文件A的“删除进程”的启动请求时,比如用户点击或滑动文件A的图标以对该文件A进行删除时,zygote进程便会以自己为母本,创建一新的进程,得到子进程,其中,该子进程继承zygote进程的全部内容,然后,根据需要该启动请求中携带的需要启动的“删除进程”的标识确定该子进程中需要修改的参数,以及相应参数值,并根据该需要修改的参数,以及相应参数值对该子进程进行修改,得到该文件A的删除进程(即用户进程)。
此外,在将该跟踪进程附加至孵化进程时,还可以在该跟踪进程中设置相应的标识,用于指示对用户进程进行追踪,比如,参见图2b,可以在跟踪进程中设置PTRACE_O_TRACEFORK,这样,当zygote进程执行到FORK函数,即创建一子进程,以得到用户进程时,跟踪进程便可以自动附加(attach)至对应的用户进程,即文件A的删除进程上,从而使得后续该追踪进程可以对该文件A的删除进程进行追踪。
其中,追踪进程的部分代码可以如下:
204、终端根据追踪信息确定该用户进程是否在进行***调用,若不在进行***调用,则可以忽略,若在进行***调用,则通过跟踪进程接收来自内核空间的***调用信息。
例如,还是以用户进程为文件A的删除进程为例,则当该文件A的删除进程调用内核空间的某个syscall,比如函数“sys_getpid”时,内核空间会向附加(attach)到该删除进程的进程发送信号,即会向追踪进程发送信号,比如发送stop sig,参见图2b,其中,该信号携带***调用信息,因此,此时,追踪进程可以接收到来自内核空间的***调用信息。
其中,该***调用信息可以包括***调用函数标识,比如名称和/或调用号(syscall number)等,此外,该***调用信息还可以包括***调用的时间、以及存储位置等信息,在此不再赘述。
205、终端读取***调用函数的调用号(syscall number),即读取syscall的调用号。
比如,由于CPU的寄存器一般保存有当前正在运行的进程所调用的syscall的调用号,因此,可以通过读取CPU的寄存器,来获取到该调用号。
206、终端根据该调用号确定需要对该函数的调用进行控制时,对该***调用信息进行分析,得到分析结果。
例如,在获取到调用号之后,可以通过查找预设数据表,来确定是否需要对该调用号所对应的函数的调用进行控制,比如,还是以调用函数“sys_getpid”为例,由于函数“sys_getpid”所对应的调用号为“20”,因此,可以在该预设数据表中查找调用号为“20”的函数的相关记录,以确定是否需要对函数“sys_getpid”的调用进行控制,若需要,则此时可以对接收到的***调用信息进行分析,得到分析结果;否则,若不需要,则可以直接允许该用户进程调用该函数“sys_getpid”,以此类推,等等。
207、终端根据该分析结果确定该用户进程是否具有调用该函数的权限,若是,则允许该用户进程调用该函数;若否,则阻止该用户进程调用该函数。
由上可知,本实施例可以通过将追踪进程附加至孵化进程,并在追踪进程中设置相应的用于指示对用户进程进行追踪的标识,使得当孵化进程创建用户进程时,该追踪进程可以自动地附加至该用户进程上,从而达到对用户进程进行追踪,以获取到相应***调用信息,并基于该***调用信息对该用户进程的***调用操作进行监控的目的;由于该方案的大部分逻辑都在用户空间完成,而无需对内核空间的数据进行修改,因此,实现较为简单;而且,由于该方案无需基于***漏洞,所以,相对于现有的方案而言,适配性、稳定性和兼容性也得到大大地提高;总而言之,本实施例可以在保障***调用安全性的同时,提高适配性、稳定性和兼容性,而且,实现较为简单,可以大大简单开发难度和成本。
实施例三、
为了更好地实施以上方法,本发明实施例还提供一种***调用的监控装置,如图3a所示,该***调用的监控装置可以包括接收单元301、创建单元302、追踪单元303、获取单元304和监控单元305,如下:
(1)接收单元301;
接收单元301,用于接收用户进程的启动请求,该启动请求中携带需要启动的用户进程的标识。
其中,该用户进程的标识可以包括用户进程的名称和/或编号等信息。
此外,该启动请求还可以携带其他的信息,比如与该用户进程相应的预设参数的值,等等。
其中,预设参数与具体的用户进程相关,一般用于指示该用户进程的资源和调用等情况,不同的用户进程所对应的预设参数可能会存在差异,具体可以根据实际应用的需求而定,在此不再赘述。
可选的,可以通过设置一追踪进程(或称为拦截进程)来执行该***调用的监控操作方法的相关操作,即如图3b所示,该***调用的监控装置还可以包括启动单元306,如下:
接收单元301,还可以用于接收***调用的监控请求;
则此时,启动单元306,可以用于根据该监控请求启动跟踪进程。
其中,该跟踪进程具体可以通过ptrace机制来实现,比如,具体可以在***处理***调用函数(syscall)软中断的例程中***硬编码的hook(entry.s),使之能够拦截所有被追踪进程的syscall调用和调出。
(2)创建单元302;
创建单元302,用于根据该标识创建用户进程;
例如,该创建单元302,具体可以用于将跟踪进程附加至孵化进程;通过该孵化进程创建子进程,该子进程继承该孵化进程的内容;根据该标识对该子进程中的预设参数进行修改,得到用户进程。
比如,可以根据该标识确定该子进程中需要修改的参数,以及相应参数值,然后,根据该需要修改的参数,以及相应参数值对该子进程进行修改,得到用户进程。
需说明的是,若在用户进程的启动请求中已经携带了预设参数的值,则此时,可以从该启动请求中该子进程中需要修改的参数,以及相应参数值;而如果启动请求中并没有携带该预设参数的值,则此时,可以从其他存储单位或数据库中获取到该子进程中需要修改的参数,以及相应参数值。
其中,该孵化进程具体可以为zygote进程或其他可以实现与zygote进程类似功能的进程,具体可根据实际应用的需求而定,在此不再赘述。
此外,在将该跟踪进程附加至孵化进程时,还可以在该跟踪进程中设置一用于指示对用户进程进行追踪的标识,这样,后续若发现有该标识,便可以对用户进程进行追踪,即:
该创建单元302,还可以用于在将该跟踪进程附加至孵化进程时,在该跟踪进程中设置相应的标识,该标识用于指示是否对子进程进行追踪。
(3)追踪单元303;
追踪单元303,用于对该用户进程进行追踪,得到追踪信息;
例如,该追踪单元303,具体可以用于确定该标识指示对用户进程进行追踪时,将该跟踪进程附加至该用户进程,使得该跟踪进程对该用户进程进行追踪,得到追踪信息,等等。
(4)获取单元304;
获取单元304,用于当追踪信息指示该用户进程在进行***调用时,获取***调用信息;
例如,该获取单元304,具体可以用于当追踪信息指示该用户进程在进行***调用时,通过跟踪进程接收来自内核空间的***调用信息。
比如,以用户进程K为例,则当用户进程K调用内核空间的某个syscall时,内核空间便会向附加(attach)到该用户进程K的进程发送信号,即会向追踪进程发送信号,其中,该信号携带***调用信息。
其中,该***调用信息可以包括***调用函数标识,比如名称和/或调用号等,还可以包括***调用的时间、以及存储位置等。
(5)监控单元305;
监控单元305,用于基于该***调用信息对该用户进程的***调用操作进行监控。
例如,该监控单元305可以包括读取子单元、分析子单元和控制子单元,如下:
读取子单元,用于读取***调用函数的函数号。
比如,该读取子单元,可以用于从CPU的寄存器中读取***调用函数的函数号,等等。
分析子单元,用于根据该函数号确定需要对该函数的调用进行控制时,对该***调用信息进行分析,得到分析结果。
控制子单元,用于根据该分析结果对该用户进程的***调用操作进行控制,例如,可以如下:
控制子单元,具体用于在根据该分析结果确定该用户进程具有调用该函数的权限时,允许该用户进程调用该函数;在根据该分析结果确定该用户进程不具有调用该函数的权限时,阻止该用户进程调用该函数。
具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。
该***调用的监控装置具体可以集成在终端中,该终端可以包括手机、平板电脑或笔记本电脑等设备。
由上可知,本实施例在接收到用户进程的启动请求时,可以由创建单元302根据该启动请求中携带的需要启动的用户进程的标识创建用户进程,并由追踪单元303对该用户进程进行追踪,然后,当追踪信息指示该用户进程在进行***调用时,由获取单元304获取***调用信息,并由监控单元305基于该***调用信息对该用户进程的***调用操作进行监控;由于该方案的大部分逻辑都在用户空间完成,而无需对内核空间的数据进行修改,因此,实现较为简单;而且,由于该方案无需基于***漏洞,所以,相对于现有的方案而言,适配性、稳定性和兼容性也得到大大地提高。
实施例四、
相应的,本发明实施例还提供一种终端,如图4所示,该终端可以包括射频(RF,Radio Frequency)电路401、包括有一个或一个以上计算机可读存储介质的存储器402、输入单元403、显示单元404、传感器405、音频电路406、无线保真(WiFi,Wireless Fidelity)模块407、包括有一个或者一个以上处理核心的处理器408、以及电源409等部件。本领域技术人员可以理解,图4中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
RF电路401可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器408处理;另外,将涉及上行的数据发送给基站。通常,RF电路401包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM,Subscriber Identity Module)卡、收发信机、耦合器、低噪声放大器(LNA,Low Noise Amplifier)、双工器等。此外,RF电路401还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯***(GSM,Global System of Mobile communication)、通用分组无线服务(GPRS,GeneralPacket Radio Service)、码分多址(CDMA,Code Division Multiple Access)、宽带码分多址(WCDMA,Wideband Code Division Multiple Access)、长期演进(LTE,Long TermEvolution)、电子邮件、短消息服务(SMS,Short Messaging Service)等。
存储器402可用于存储软件程序以及模块,处理器408通过运行存储在存储器402的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器408和输入单元403对存储器402的访问。
输入单元403可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,在一个具体的实施例中,输入单元403可包括触敏表面以及其他输入设备。触敏表面,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面上或在触敏表面附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器408,并能接收处理器408发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面。除了触敏表面,输入单元403还可以包括其他输入设备。具体地,其他输入设备可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元404可用于显示由用户输入的信息或提供给用户的信息以及终端的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元404可包括显示面板,可选的,可以采用液晶显示器(LCD,Liquid Crystal Display)、有机发光二极管(OLED,Organic Light-Emitting Diode)等形式来配置显示面板。进一步的,触敏表面可覆盖显示面板,当触敏表面检测到在其上或附近的触摸操作后,传送给处理器408以确定触摸事件的类型,随后处理器408根据触摸事件的类型在显示面板上提供相应的视觉输出。虽然在图4中,触敏表面与显示面板是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面与显示面板集成而实现输入和输出功能。
终端还可包括至少一种传感器405,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板的亮度,接近传感器可在终端移动到耳边时,关闭显示面板和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路406、扬声器,传声器可提供用户与终端之间的音频接口。音频电路406可将接收到的音频数据转换后的电信号,传输到扬声器,由扬声器转换为声音信号输出;另一方面,传声器将收集的声音信号转换为电信号,由音频电路406接收后转换为音频数据,再将音频数据输出处理器408处理后,经RF电路401以发送给比如另一终端,或者将音频数据输出至存储器402以便进一步处理。音频电路406还可能包括耳塞插孔,以提供外设耳机与终端的通信。
WiFi属于短距离无线传输技术,终端通过WiFi模块407可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图4示出了WiFi模块407,但是可以理解的是,其并不属于终端的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器408是终端的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行终端的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器408可包括一个或多个处理核心;优选的,处理器408可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作***、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器408中。
终端还包括给各个部件供电的电源409(比如电池),优选的,电源可以通过电源管理***与处理器408逻辑相连,从而通过电源管理***实现管理充电、放电、以及功耗管理等功能。电源409还可以包括一个或一个以上的直流或交流电源、再充电***、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,终端还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,终端中的处理器408会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器408来运行存储在存储器402中的应用程序,从而实现各种功能:
接收用户进程的启动请求,该启动请求中携带需要启动的用户进程的标识;根据该标识创建用户进程,并对该用户进程进行追踪,得到追踪信息;当追踪信息指示该用户进程在进行***调用时,获取***调用信息;基于该***调用信息对该用户进程的***调用操作进行监控。
例如,可以通过设置一追踪进程(或称为拦截进程)来执行该***调用的监控操作方法的相关操作,即处理器408可以执行如下操作:
接收***调用的监控请求,根据该监控请求启动跟踪进程。
这样,后续便可以通过该追踪进程接收用户进程的启动请求,以及通过该追踪进程来实现对用户进程的追踪,比如,可以将跟踪进程附加(attach)至孵化进程,然后,通过该孵化进程创建子进程(该子进程继承该孵化进程的内容),并根据该标识对该子进程中的预设参数进行修改,得到用户进程,与此同时,还可以在该跟踪进程中设置相应的用于指示对用户进程进行追踪的标识,比如PTRACE_O_TRACEFORK,使得追踪进程可以自动附加至该用户进程上,然后,在用户进程调用syscall时,通过追踪进程接收内核空间发送的携带***调用信息的信号,这样,追踪进程便可以基于该***调用信息对该用户进程的***调用操作进行监控,其中,监控的方式具体可以如下:
读取***调用函数的调用号,根据该调用号确定需要对该函数的调用进行控制时,对该***调用信息进行分析,得到分析结果根据该分析结果对该用户进程的***调用操作进行控制,比如,若根据该分析结果确定该用户进程具有调用该函数的权限,则允许该用户进程调用该函数,反之,若根据该分析结果确定该用户进程不具有调用该函数的权限,则阻止该用户进程调用该函数,等等。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
由上可知,本实施例的终端在接收到用户进程的启动请求时,可以根据该启动请求中携带的需要启动的用户进程的标识创建用户进程,并对该用户进程进行追踪,然后,当追踪信息指示该用户进程在进行***调用时,获取***调用信息,并基于该***调用信息对该用户进程的***调用操作进行监控;由于该方案的大部分逻辑都在用户空间完成,而无需对内核空间的数据进行修改,因此,实现较为简单;而且,由于该方案无需基于***漏洞,所以,相对于现有的方案而言,适配性、稳定性和兼容性也得到大大地提高。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,RandomAccess Memory)、磁盘或光盘等。
以上对本发明实施例所提供的一种***调用的监控方法和装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (12)

1.一种***调用的监控方法,其特征在于,包括:
接收用户进程的启动请求,所述启动请求中携带需要启动的用户进程的标识;
将跟踪进程附加至孵化进程;
通过所述孵化进程创建子进程,所述子进程继承所述孵化进程的内容;
根据所述标识确定所述子进程中需要修改的参数和相应参数值;
根据所述需要修改的参数和相应参数值对所述子进程进行修改,得到用户进程;
对所述用户进程进行追踪,得到追踪信息;
当追踪信息指示所述用户进程在进行***调用时,获取***调用信息;
基于所述***调用信息对所述用户进程的***调用操作进行监控。
2.根据权利要求1所述的方法,其特征在于,所述将跟踪进程附加至孵化进程时,还包括:
在所述跟踪进程中设置相应的标识,所述标识用于指示是否对用户进程进行追踪;
所述对所述用户进程进行追踪,得到追踪信息,包括:确定所述标识指示对用户进程进行追踪时,将所述跟踪进程附加至所述用户进程,使得所述跟踪进程对所述用户进程进行追踪,得到追踪信息。
3.根据权利要求1所述的方法,其特征在于,所述接收用户进程的启动请求之前,还包括:
接收***调用的监控请求;
根据所述监控请求启动跟踪进程。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述当追踪信息指示所述用户进程在进行***调用时,获取***调用信息,包括:
当追踪信息指示所述用户进程在进行***调用时,通过跟踪进程接收来自内核空间的***调用信息。
5.根据权利要求1至3任一项所述的方法,其特征在于,所述基于所述***调用信息对所述用户进程的***调用操作进行监控,包括:
读取***调用函数的函数号;
根据所述函数号确定需要对所述函数的调用进行控制时,对所述***调用信息进行分析,得到分析结果;
根据所述分析结果对所述用户进程的***调用操作进行控制。
6.根据权利要求5所述的方法,其特征在于,所述根据所述分析结果对所述用户进程的***调用操作进行控制,包括:
根据所述分析结果确定所述用户进程具有调用所述函数的权限时,允许所述用户进程调用所述函数;
根据所述分析结果确定所述用户进程不具有调用所述函数的权限时,阻止所述用户进程调用所述函数。
7.一种***调用的监控装置,其特征在于,包括:
接收单元,用于接收用户进程的启动请求,所述启动请求中携带需要启动的用户进程的标识;
创建单元,用于将跟踪进程附加至孵化进程;通过所述孵化进程创建子进程,所述子进程继承所述孵化进程的内容;根据所述标识确定所述子进程中需要修改的参数和相应参数值;根据所述需要修改的参数和相应参数值对所述子进程进行修改,得到用户进程;
追踪单元,用于对所述用户进程进行追踪,得到追踪信息;
获取单元,用于当追踪信息指示所述用户进程在进行***调用时,获取***调用信息;
监控单元,用于基于所述***调用信息对所述用户进程的***调用操作进行监控。
8.根据权利要求7所述的装置,其特征在于,
所述创建单元,还用于在将所述跟踪进程附加至孵化进程时,在所述跟踪进程中设置相应的标识,所述标识用于指示是否对子进程进行追踪;
所述追踪单元,具体用于确定所述标识指示对用户进程进行追踪时,将所述跟踪进程附加至所述用户进程,使得所述跟踪进程对所述用户进程进行追踪,得到追踪信息。
9.根据权利要求7所述的装置,其特征在于,还包括启动单元;
所述接收单元,还用于接收***调用的监控请求;
所述启动单元,用于根据所述监控请求启动跟踪进程。
10.根据权利要求7至9任一项所述的装置,其特征在于,
所述获取单元,具体用于当追踪信息指示所述用户进程在进行***调用时,通过跟踪进程接收来自内核空间的***调用信息。
11.根据权利要求7至9任一项所述的装置,其特征在于,所述监控单元包括:
读取子单元,用于读取***调用函数的函数号;
分析子单元,用于根据所述函数号确定需要对所述函数的调用进行控制时,对所述***调用信息进行分析,得到分析结果;
控制子单元,用于根据所述分析结果对所述用户进程的***调用操作进行控制。
12.根据权利要求11所述的装置,其特征在于,所述控制子单元,具体用于:
根据所述分析结果确定所述用户进程具有调用所述函数的权限时,允许所述用户进程调用所述函数;
根据所述分析结果确定所述用户进程不具有调用所述函数的权限时,阻止所述用户进程调用所述函数。
CN201610490064.3A 2016-06-28 2016-06-28 一种***调用的监控方法和装置 Active CN106681884B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610490064.3A CN106681884B (zh) 2016-06-28 2016-06-28 一种***调用的监控方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610490064.3A CN106681884B (zh) 2016-06-28 2016-06-28 一种***调用的监控方法和装置

Publications (2)

Publication Number Publication Date
CN106681884A CN106681884A (zh) 2017-05-17
CN106681884B true CN106681884B (zh) 2018-09-04

Family

ID=58839823

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610490064.3A Active CN106681884B (zh) 2016-06-28 2016-06-28 一种***调用的监控方法和装置

Country Status (1)

Country Link
CN (1) CN106681884B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108228165B (zh) * 2018-01-05 2021-02-02 武汉斗鱼网络科技有限公司 一种记录程序接口间调用信息的方法及电子设备
CN111858224A (zh) * 2019-04-25 2020-10-30 珠海格力电器股份有限公司 一种安卓***中的进程监听方法及装置
CN110990874A (zh) * 2019-12-04 2020-04-10 厦门安胜网络科技有限公司 一种用于Android文件的安全防护方法和***
CN112269536A (zh) * 2020-10-16 2021-01-26 苏州浪潮智能科技有限公司 存储软件***调优方法、装置及计算机可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103886249A (zh) * 2012-12-20 2014-06-25 腾讯科技(深圳)有限公司 ***超级用户权限下执行进程的方法及装置
CN104156298A (zh) * 2014-08-19 2014-11-19 腾讯科技(深圳)有限公司 一种应用监控方法及装置
CN105373729A (zh) * 2015-12-24 2016-03-02 北京奇虎科技有限公司 一种信息处理方法和***

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103379481B (zh) * 2012-04-26 2015-05-06 腾讯科技(深圳)有限公司 一种实现安全防护的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103886249A (zh) * 2012-12-20 2014-06-25 腾讯科技(深圳)有限公司 ***超级用户权限下执行进程的方法及装置
CN104156298A (zh) * 2014-08-19 2014-11-19 腾讯科技(深圳)有限公司 一种应用监控方法及装置
CN105373729A (zh) * 2015-12-24 2016-03-02 北京奇虎科技有限公司 一种信息处理方法和***

Also Published As

Publication number Publication date
CN106681884A (zh) 2017-05-17

Similar Documents

Publication Publication Date Title
CN104519485B (zh) 一种终端之间的通信方法、装置和***
CN106412093B (zh) 一种数据的上传方法、装置及***
CN105278937B (zh) 一种显示弹出框消息的方法及装置
CN104951212B (zh) 一种移动终端的桌面数据处理方法、装置和***
CN107040610B (zh) 数据同步方法、装置、存储介质、终端以及服务器
CN106547844B (zh) 一种用户界面的处理方法和装置
CN106529312B (zh) 一种移动终端的权限控制方法、装置及移动终端
CN106681884B (zh) 一种***调用的监控方法和装置
CN108536594A (zh) 页面测试方法、装置及存储设备
CN104077184B (zh) 一种应用程序的进程控制方法及计算机***
CN106570358A (zh) 应用的权限设置方法和装置
CN106529332B (zh) 一种移动终端的权限控制方法、装置及移动终端
CN105740145B (zh) 定位控件中的元素的方法及装置
CN106502703A (zh) 一种函数调用方法和装置
CN106131930A (zh) 一种WiFi网络接入控制方法、装置和终端
CN106454976B (zh) 一种无线网络的切换方法、装置及终端
CN107219951A (zh) 触控屏控制方法、装置、存储介质及终端设备
CN110046497A (zh) 一种函数挂钩实现方法、装置和存储介质
CN105955597A (zh) 信息显示方法及装置
CN108270757A (zh) 一种用户账户切换方法、装置、客户端以及***
CN105808043B (zh) 一种终端应用的设置方法和移动终端
CN107104930A (zh) 一种设置查看权限的方法、装置和***
CN108513010A (zh) 终端解锁方法、终端及计算机可读存储介质
CN104391629A (zh) 定向发送消息的方法、显示消息的方法、服务器及终端
CN109688611A (zh) 一种频段参数的配置方法、装置、终端和存储介质

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
TR01 Transfer of patent right

Effective date of registration: 20230919

Address after: 100086 Beijing Haidian District Zhichun Road 49 No. 3 West 309

Patentee after: TENCENT CLOUD COMPUTING (BEIJING) Co.,Ltd.

Address before: 2, 518000, East 403 room, SEG science and Technology Park, Zhenxing Road, Shenzhen, Guangdong, Futian District

Patentee before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd.

TR01 Transfer of patent right