著录项信息
专利名称 | 在移动终端中监控API函数调用的方法和装置 |
申请号 | CN201210200327.4 | 申请日期 | 2012-06-18 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2014-01-15 | 公开/公告号 | CN103514075A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F11/30 | IPC分类号 | G;0;6;F;1;1;/;3;0;;;G;0;6;F;9;/;4;6查看分类表>
|
申请人 | 腾讯科技(深圳)有限公司 | 申请人地址 | 广东省深圳市福田区振兴路赛格科技园2栋东403室
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 腾讯科技(深圳)有限公司 | 当前权利人 | 腾讯科技(深圳)有限公司 |
发明人 | 张立春;韩景维 |
代理机构 | 北京德琦知识产权代理有限公司 | 代理人 | 王一斌;王琦 |
摘要
本发明提供了一种在移动终端中监控API函数调用的方法和装置。其中的方法包括:预先设置所需监控的一个或多个API函数以及与预设API函数相对应的响应事件;根据预设的各个API函数设置一个监控处理模块;实时获取预设的目标信息发送函数监听模块输出的当前监听数据;当所获取的当前监听数据满足响应事件时,监控处理模块进行相应的后续的监控处理。应用本发明可以在一个监控流程中对所有所需监控的API函数调用同时进行监控,因而使得对所有所需监控的API函数调用的监控工作变得更为简单、快捷。
1.一种在移动终端中监控API函数调用的方法,其特征在于,该方法包括:
预先设置所需监控的一个或多个API函数以及与预设API函数相对应的响应事件;
根据各个预设API函数设置一个监控处理模块;
实时获取目标信息发送函数监听模块输出的当前监听数据;
当所获取的当前监听数据满足响应事件时,监控处理模块进行相应的后续的监控处理。
2.根据权利要求1所述的方法,其特征在于,在所述实时获取目标信息发送函数监听模块的当前监听数据之后,该方法还进一步包括:
记录所获取的当前监听数据。
3.根据权利要求1所述的方法,其特征在于,所述预设API函数为:
删除联系人函数、访问网络函数、获取应用程序安装列表函数、发送短信的函数、读取联系人信息的函数、启动应用程序的函数、访问文件的函数和拨打电话的函数中的任意一个或多个函数。
4.根据权利要求1、2或3所述的方法,其特征在于,所述响应事件为:
至少一个正在系统中运行的应用程序调用至少一个预设API函数。
5.根据权利要求1所述的方法,其特征在于,所述当前监听数据包括:
与目标信息发送函数的各个发送操作相对应的对象方法。
6.根据权利要求1所述的方法,其特征在于,所述后续的监控处理包括:
记录调用了预设API函数的应用程序的信息、中断调用了预设API函数的应用程序和/或向用户发送提醒信息或询问信息并根据用户的指令或预设的默认操作进行处理。
7.一种在移动终端中监控API函数调用的装置,其特征在于,该装置包括:设置模块、信息获取模块和监控处理模块;
所述设置模块,用于预先设置所需监控的一个或多个API函数以及与预设API函数相对应的响应事件,将预设API函数和响应事件发送给监控处理模块;
所述信息获取模块,用于实时获取目标信息发送函数监听模块的当前监听数据,将当前监听数据发送给监控处理模块;
所述监控处理模块,用于当所获取的当前监听数据满足响应事件时,监控处理模块进行相应的后续的监控处理。
8.根据权利要求7所述的装置,其特征在于,该装置还进一步包括:存储模块;
所述存储模块,用于记录所获取的当前监听数据。
在移动终端中监控API函数调用的方法和装置\n技术领域\n[0001] 本申请涉及涉及计算机技术领域,尤其涉及一种在移动终端中监控API函数调用的方法和装置。\n背景技术\n[0002] 在现有技术中,为移动终端(例如,手机、笔记本电脑等)开发的应用程序一般都是基于某个操作系统的应用程序,因此,如果某个应用程序需要实现某种具体的功能时,就必须要调用其所属操作系统所提供的应用程序编程接口(API,Application Programming Interface)函数。例如,当某个应用程序需要查看移动终端中存储的通讯簿数据时,则该应用程序将需要调用其所属操作系统提供的访问通讯簿的API函数,才能实现查看通讯簿数据的功能。\n[0003] 为了实现各种功能或业务,移动终端中一般都装有多种应用程序。然而,在某些时候,移动终端中的某些应用程序有可能会在用户不知情或未经用户授权的情况下,私自进行一些涉及用户数据安全的操作,例如,读取移动终端中存储的通讯簿、打开移动终端中存储的图片、调用移动终端中的通话记录等,从而威胁到用户数据或用户隐私的安全性。\n[0004] 因此,为了提高移动终端的安全性,防止应用程序进行窃取用户隐私、破坏用户系统等行为,需要对移动终端中正在运行的各种应用程序进行有效地动态监控。\n[0005] 在实现动态监控应用程序是否具有某些行为时,很多安全厂商一般都是利用监听应用程序的API函数调用(即对API函数的调用)来检测正在运行的程序是否具有窃取用户隐私、破坏用户系统等行为。例如,可以对读取通讯簿的API函数调用进行实时监听;当有某个正在运行的应用程序调用了该API函数时,即可捕获到该应用程序调用该API函数的行为,因此即可以获知该应用程序具有读取移动终端中存储的通讯簿数据的操作,从而可对移动终端中正在运行的各种应用程序进行动态监控。\n[0006] 图1为现有技术中在移动终端中监控API函数调用的方法流程图。如图1所示,在现有技术中,当需要在移动终端中监控API函数调用时,可通过如下所述的步骤来实现:\n[0007] 步骤101,确定所需监控的API函数。\n[0008] 由于不同的操作行为所调用的API函数是不同的,因此,当需要对某种操作行为进行监控时,可先确定该操作行为所需调用的API函数,并将所需调用的API函数设置为所需监控的API函数。\n[0009] 步骤102,设置与所需监控的API函数相对应的监听处理模块。\n[0010] 在本步骤中,将为所需监控的API函数设置相对应的监听处理模块,用于对所需监控的API函数调用进行监听,并进行后续的处理。\n[0011] 步骤103,使用监听处理模块对所需监控的API函数进行监听。\n[0012] 步骤104,当所需监控的API函数被调用时,使用监听处理模块进行后续处理。\n[0013] 在本步骤中,所述后续处理可以是:向用户发送提醒信息或询问信息、记录调用了该API函数的应用程序的信息和/或中断调用了该API函数的应用程序等。\n[0014] 在现有技术中,通过上述的步骤101~104,即可对某一特定的API函数的调用情况进行监控。\n[0015] 然而,根据上述的步骤101~104可知,在上述的监控方法中,仅能对某一个特定的API函数的调用单独进行监控。如果有多个API函数的调用需要监控,则必须为每一个需要监控的API函数都执行与上述步骤101~104相同或相类似的监控流程。另外,使用上述的监控方法,仅能监听到孤立的、具体的API函数调用,而无法获知某一个应用程序在运行期间调用了哪些API函数以及各个API函数的调用顺序,因此无法对该应用程序所调用的各个API函数之间的逻辑关系进行任何分析。\n[0016] 由此可知,在现有技术中在移动终端中监控API函数调用的方法中,仅能对某一个特定的API函数调用单独进行监控,而且对各个API函数调用的监控过程都是彼此独立的,不能复用,因此无法在一个监控流程中对所有所需监控的API函数的调用同时进行监控。进一步的,在现有技术中对API函数调用的监控方法中,对于每一个所需监控的API函数调用,即使启动多个监控流程分别对多个API函数的调用进行监控,也仅能监听到各个孤立的、具体的API函数调用,而无法分析应用程序所调用的各个API函数之间的逻辑关系。\n发明内容\n[0017] 有鉴于此,本发明提供了一种在移动终端中监控API函数调用的方法和装置,从而可在一个监控流程中对所有所需监控的API函数调用同时进行监控,因而使得对各个所需监控的API函数调用的监控工作变得更为简单、快捷。\n[0018] 本发明的技术方案具体是这样实现的:\n[0019] 一种在移动终端中监控API函数调用的方法,该方法包括:\n[0020] 预先设置所需监控的一个或多个API函数以及与预设API函数相对应的响应事件;\n[0021] 根据各个预设API函数设置一个监控处理模块;\n[0022] 实时获取目标信息发送函数监听模块输出的当前监听数据;\n[0023] 当所获取的当前监听数据满足响应事件时,监控处理模块进行相应的后续的监控处理。\n[0024] 一种在移动终端中监控API函数调用的装置,该装置包括:设置模块、信息获取模块和监控处理模块;\n[0025] 所述设置模块,用于预先设置所需监控的一个或多个API函数以及与预设API函数相对应的响应事件,将预设API函数和响应事件发送给监控处理模块;\n[0026] 所述信息获取模块,用于实时获取目标信息发送函数监听模块的当前监听数据,将当前监听数据发送给监控处理模块;\n[0027] 所述监控处理模块,用于当所获取的当前监听数据满足响应事件时,监控处理模块进行相应的后续的监控处理。\n[0028] 由上述技术方案可见,本发明可通过对objc_msgSend函数的监听,即可获知应用程序是否调用了被监控的一个或多个API函数,从而实现在一个监控流程中对所有所需监控的API函数调用情况同时进行监控,而不必为每一个API函数调用的监控都执行一个独立的监控流程,因而使得对各个所需监控的API函数调用的监控工作变得更为简单、快捷。而且,进一步的,由于在上述的API函数调用的监控方法中,可以同时对多个API函数调用进行监控,还可记录objc_msgSend函数的监听数据,因此使得技术人员可以根据所记录的监听数据进行相应的分析,从而获知某个具体的应用程序所调用的各个API函数之间的逻辑关系,进而可对该应用程序的各种操作行为进行跟踪和/或分析。\n附图说明\n[0029] 图1为现有技术中在移动终端中监控API函数调用的方法流程图。\n[0030] 图2为本发明中在移动终端中监控API函数调用的方法流程图。\n[0031] 图3是本发明中在移动终端中监控API函数调用的装置的结构示意图。\n具体实施方式\n[0032] 为使本发明的技术方案及优点更加清楚明白,以下结合附图及具体实施例,对本发明作进一步详细的说明。\n[0033] 一般来说,移动终端中的各种运行的应用程序都是使用相应的编程语言来编写的。例如,在苹果(Apple)公司生产的移动终端(例如,iPhone系列的手机)中,所运行的应用程序一般都是使用objective_c语言来编写的。objective_c语言是一种面向对象的语言,该语言中没有对象调用方法的概念,而是通过向各个对象方法发送相应信息的方法来实现各种功能。其中,所有的向各个对象方法发送相应信息的操作都是通过目标信息发送(objc_msgSend)函数来实现的。因此,只需对objc_msgSend函数进行相应的监听,即可监听到所有的对各个API函数的调用情况,从而可以实现对一个或多个API函数调用同时进行监控。\n[0034] 图2为本发明中在移动终端中监控API函数调用的方法流程图。\n[0035] 如图2所示,该方法包括:\n[0036] 步骤201,预先设置所需监控的一个或多个API函数以及与预设API函数相对应的响应事件。\n[0037] 在本步骤中,可以先通过预先设置的方式确定所需监控的一个或多个API函数,然后再根据各个预设的API函数设置相应的响应事件。\n[0038] 在本发明的具体实施例中,所述预设的API函数可以是(包含但不局限于):删除联系人函数(ABAddressBookRemoveRecord)、访问网络函数(例如,NSMutableURLRequest类的setURL方法)、获取应用程序安装列表函数(MobileInstallationBrowse)、发送短信的函数、读取联系人信息的函数、启动应用程序的函数、访问文件的函数和拨打电话的函数中的任意一个或多个函数。\n[0039] 另外,在本发明的具体实施例中,所述响应事件可以根据实际应用情况进行预先设置。所述响应事件可以是:至少一个正在系统中运行的应用程序调用至少一个预设的API函数。\n[0040] 例如,当预先设置的API函数为访问网络函数和获取应用程序安装列表函数时,所述响应事件可以设置为:\n[0041] 任意一个或多个正在系统中运行的应用程序调用访问网络函数(例如,NSMutableURLRequest类的setURL方法)来连接网络;\n[0042] 或 者 ,任 意 一 个 或 多 个 正 在 系 统 中 运 行 的 应 用 程 序 调 用MobileInstallationBrowse函数获取移动终端中的应用程序安装列表。\n[0043] 步骤202,根据各个预设API函数设置一个监控处理模块。\n[0044] 在步骤201中,虽然可以设置多个所需监控的API函数,但在本步骤中,可以为预设的各个API函数只预先设置一个监控处理模块,用于进行后续的监控处理。其中,所述的监控处理可以是:记录调用了所需监控的API函数的应用程序的信息、中断调用了所需监控的API函数的应用程序和/或向用户发送提醒信息或询问信息并根据用户的指令或预先设置的默认操作进行处理(譬如,允许或阻止相应的应用程序的运行),也还可以是其它预先设置的处理操作等。\n[0045] 步骤203,实时获取objc_msgSend函数监听模块输出的当前监听数据。\n[0046] 在本步骤之前,可以预先设置一个objc_msgSend函数监听模块,用于实时监听objc_msgSend函数的发送操作,并输出相应的当前监听数据,即当前的监听数据。其中所述的当前监听数据可以包括:与objc_msgSend函数的各个发送操作相对应的对象方法。根据该当前监听数据可以获知该objc_msgSend函数向哪些对象方法发送了哪些信息。在本发明的具体实施例中,所述objc_msgSend函数监听模块可以使用本技术领域中常用的objc_msgSend函数监听模块,因此,具体的objc_msgSend函数监听模块的设置方法在此不再赘述。\n[0047] 在设置了上述的objc_msgSend函数监听模块之后,在本步骤中,即可从该objc_msgSend函数监听模块实时获取相应的当前监听数据。\n[0048] 步骤204,记录所获取的当前监听数据。\n[0049] 在本步骤中,当获取到objc_msgSend函数监听模块的当前监听数据时,可以记录所获取的当前监听数据,供技术人员对所记录的监听数据进行分析,从而获知某个具体的应用程序所调用的各个API函数之间的逻辑关系,进而可对该应用程序的各种操作行为进行跟踪和/或分析。\n[0050] 在本发明的具体实施例中,本步骤与后续的步骤205可以同时执行,也可以按照预设的执行顺序执行,例如,可以先执行步骤204,然后再执行步骤205。\n[0051] 另外,如果实际情况中不需要对具体的应用程序所调用的各个API函数之间的逻辑关系进行分析,则该步骤可以省略。\n[0052] 步骤205,当所获取的当前监听数据满足响应事件时,监控处理模块进行相应的后续的监控处理。\n[0053] 在本步骤中,将根据所获取的当前监听数据,判断该当前监听数据是否满足预设的响应事件,例如,根据所获取的当前监听数据,判断是否有至少一个正在系统中运行的应用程序当前对至少一个所需监控的API函数进行了调用,如果是,则表示当前监听数据满足响应事件,因此将由监控处理模块进行相应的后续的监控处理。\n[0054] 较佳的,在本步骤中,所述后续的监控处理可以包括:记录调用了预设API函数的应用程序的信息、中断调用了预设API函数的应用程序和/或向用户发送提醒信息或询问信息并根据用户的指令或预设的默认操作进行处理(譬如,允许或阻止相应的应用程序的运行),也还可以是其它预先设置的处理操作等。\n[0055] 根据上述的描述可知,通过上述的步骤202~205,即可通过对objc_msgSend函数的监听,即可获知应用程序是否调用了被监控的一个或多个API函数,从而实现在一个监控流程中对所有所需监控的API函数调用情况同时进行监控,而不必为每一个API函数调用的监控都执行一个独立的监控流程,因而使得对各个所需监控的API函数调用的监控工作变得更为简单、快捷。而且,进一步的,由于在上述的API函数调用的监控方法中,可以同时对多个API函数调用进行监控,还可记录objc_msgSend函数的监听数据,因此使得技术人员可以根据所记录的监听数据进行相应的分析,从而获知某个具体的应用程序所调用的各个API函数之间的逻辑关系,进而可对该应用程序的各种操作行为进行跟踪和/或分析。\n[0056] 根据本发明提供的上述方法,本发明还提供了相应的用户界面确定装置,具体请参见图3。\n[0057] 图3是本发明中在移动终端中监控API函数的装置的结构示意图。\n[0058] 如图3所示,本发明中的在移动终端中监控API函数调用的装置300包括:设置模块\n301、信息获取模块302和监控处理模块303。其中,\n[0059] 所述设置模块301,用于根据指令预先设置所需监控的一个或多个API函数以及与预设API函数相对应的响应事件,将预设API函数和响应事件发送给监控处理模块303;\n[0060] 所述信息获取模块302,用于实时获取objc_msgSend函数监听模块的当前监听数据,将当前监听数据发送给监控处理模块303;\n[0061] 所述监控处理模块303,用于当所获取的当前监听数据满足响应事件时,监控处理模块进行相应的后续的监控处理。\n[0062] 较佳的,在本发明的具体实施例中,所述在移动终端中监控API函数调用的装置\n300还可进一步包括:存储模块304;\n[0063] 所述存储模块304,用于记录所获取的当前监听数据。\n[0064] 综上所述,在本发明的技术方案中,由于可通过对objc_msgSend函数的监听,即可获知应用程序是否调用了被监控的一个或多个API函数,从而实现在同一个监控流程中对一个或多个指定的API函数调用情况同时进行监控,而不必为每一个API函数调用的监控都执行一个独立的监控流程,使得API函数调用的监控工作变得更为简单、快捷。而且,进一步的,由于在上述的API函数调用的监控方法中,可以同时对多个API函数调用进行监控,还可记录objc_msgSend函数的监听数据,因此使得技术人员可以根据所记录的监听数据进行相应的分析,从而获知某个具体的应用程序所调用的各个API函数之间的逻辑关系,进而可对该应用程序的各种操作行为进行跟踪和/或分析。\n[0065] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
法律信息
- 2016-06-29
- 2014-10-29
实质审查的生效
IPC(主分类): G06F 11/30
专利申请号: 201210200327.4
申请日: 2012.06.18
- 2014-01-15
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2007-07-25
|
2006-11-27
| | |
2
| |
2010-10-06
|
2009-04-02
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |