一种用于拦截应用程序对服务的调用的方法和装置制造方法及图纸

技术编号:7809532 阅读:204 留言:0更新日期:2012-09-27 09:22
本发明专利技术提供了一种用于拦截电子设备的操作系统中应用程序对服务的调用的方法和装置。所述方法包括:将拦截动态库加载到服务所在的进程;将所述进程中的输入输出控制函数的地址替换为所述拦截动态库的第一地址;在应用程序对所述服务进行调用时,基于所述第一地址执行所述拦截动态库,以获得所述应用程序的名称和信息和所述调用的信息,并且将所述调用的信息中包括的要被调用的服务的地址替换为所述拦截动态库的第二地址;以及基于所述第二地址,根据所述应用程序的名称和/或信息来执行处理。本发明专利技术提高了电子设备操作系统的安全性。

【技术实现步骤摘要】

本专利技术涉及电子设备操作系统的系统安全,特别涉及一种用于拦截电子设备的操作系统中应用程序对服务的调用的方法和装置。
技术介绍
近年来,安装有操作系统的电子设备、特别是便携式电子设备(例如,移动电话、平板电脑等)变得越来越普及。与之相应地,运行在这些电子设备的操作系统上的应用程序的数量也有了呈几何级数的爆炸式增长。以iOS系统和Android系统为例,目前这两个系统上的应用程序分别超过了 60万个和40万个。尽管海量的应用程序给用户带来了更多的选择,但随之而来的安全性问题也值得关注。以Android系统为例,系统的部分重要功能通过服务接ロ的形式提供,譬如读取联系 人信息是通过数据源服务(即系统的ー个进程,该进程加载了数据源服务对象,并且提供接ロ)来进行的,任何需要读取联系人信息的程序都需要通过接ロ来向该服务申请读取联系人信息。这种服务的接ロ基于Binder通讯机制,调用接ロ的流程如下应用程序发出对某个服务的接ロ请求,发送服务名称和接ロ序号-〉服务的总路由查询服务,并登记调用者,让其等待_>服务的总路由分配客户的请求到具体服务_>具体服务执行对自己接ロ的调用_>具体服务返回接ロ调用的结果_>服务的总路由拿到结果,并返回给登记过的应用程序-〉客户程序拿到接ロ请求的結果。目前,Android系统本身不具备拦截的机制,只是在恶意程序安装之前告知系统用户此程序可能会访问某些服务,但是对于应用程序是否是恶意程序不做判断。目前,存在一些针对恶意程序进行拦截的方案。例如,通过向系统注册假服务的方式实现拦截,但是这种方式会在进行拦截的系统中留下明显的假服务名称,很容易被恶意程序发现,进而使拦截失效。
技术实现思路
为了至少解决上述技术问题,本专利技术提供了一种用于拦截电子设备的操作系统中应用程序对服务的调用的方法和装置。根据本专利技术第一方面,提供了一种用于拦截电子设备的操作系统中应用程序对服务的调用的方法,包括将拦截动态库加载到服务所在的进程;将所述进程中的输入输出控制函数的地址替换为所述拦截动态库的第一地址;在应用程序对所述服务进行调用时,基于所述第一地址执行所述拦截动态库,以获得所述应用程序的名称和信息和所述调用的信息,并且将所述调用的信息中包括的要被调用的服务的地址替换为所述拦截动态库的第二地址;以及基于所述第二地址,根据所述应用程序的名称和/或信息来执行处理。优选地,根据所述应用程序的名称和/或信息来执行处理的步骤包括通过将所述应用程序的名称和/或信息与预先定义的数据库中的信息进行比较,而(a)根据所述服务的地址执行所述调用,并向所述应用程序返回实际服务结果,或者(b)向所述应用程序返回预先定义的服务結果。优选地,根据所述应用程序的名称来执行处理的步骤包括在所述应用程序的名称包含在预先定义的数据库中的白名单中时,根据所述服务的地址执行所述调用,并向所述应用程序返回实际服务結果;或者,在所述应用程序的名称包含在预先定义的数据库中的黑名单中吋,向所述应用程序返回预先定义的服务结果;或者,在所述应用程序的名称未包含在预先定义的数据库中的白名单和黑名单中时,显示所述应用程序的名称和信息和所述调用的信息,并且根据在电子设备上通过操作系统对于所述调用的选择来执行处理。优选地,根据所述应用程序的信息来执行处理的步骤包括在所述应用程序的信息包含预先定义的数据库中的特征数据时,向所述应用程序返回预先定义的服务结果;或者,在所述应用程序的信息不包含预先定义的数据库中的特征数据时,显示所述应用程序 的名称和信息和所述调用的信息,并且根据在电子设备上通过操作系统对于所述调用的选择来执行处理。优选地,根据在电子设备上通过操作系统的选择来执行处理的步骤包括在选择了允许所述应用程序对所述服务的调用的情况下,根据所述服务的地址执行所述调用,并向所述应用程序返回实际服务结果;或者在选择了不允许所述应用程序对所述服务的调用的情况下,向所述应用程序返回预先定义的服务結果。优选地,所述方法还包括在将拦截动态库加载到服务所在的进程的步骤之前暂停所述进程,以及在将所述进程中的输入输出控制函数的地址替换为所述拦截动态库的第一地址的步骤之后恢复所述进程。优选地,所述调用的信息包括所述调用的接ロ序号以及要被调用的服务的地址。优选地,所述操作系统是Android系统,所述应用程序通过Android系统的Binder机制对所述服务进行调用。优选地,所述输入输出控制函数是Binder机制中的IOCTL函数。优选地,在应用程序对所述服务进行调用吋,基于所述第一地址执行所述拦截动态库,以通过所述IOCTL函数而先于Android系统获得所述应用程序的名称和信息和所述调用的信息。根据本专利技术第二方面,提供了一种用于拦截电子设备的操作系统中应用程序对服务的调用的装置,包括加载模块,用于将拦截动态库加载到服务所在的进程;第一替换模块,用于将所述进程中的输入输出控制函数的地址替换为所述拦截动态库的第一地址;第二替换模块,用于在应用程序对所述服务进行调用时,基于所述第一地址执行所述拦截动态库,以获得所述应用程序的名称和信息和所述调用的信息,并且将所述调用的信息中包括的要被调用的服务的地址替换为所述拦截动态库的第二地址;以及处理模块,用于基于所述第二地址,根据所述应用程序的名称和/或信息来执行处理。优选地,所述处理模块通过将所述应用程序的名称和/或信息与预先定义的数据库中的信息进行比较,而(a)根据所述服务的地址执行所述调用,并向所述应用程序返回实际服务结果,或者(b)向所述应用程序返回预先定义的服务結果。优选地,在所述应用程序的名称包含在预先定义的数据库中的白名单中时,所述处理模块根据所述服务的地址执行所述调用,并向所述应用程序返回实际服务结果;或者,在所述应用程序的名称包含在预先定义的数据库中的黑名单中时,所述处理模块向所述应用程序返回预先定义的服务結果;或者,在所述应用程序的名称未包含在预先定义的数据库中的白名单和黑名单中时,所述处理模块显示所述应用程序的名称和信息和所述调用的信息,并且根据在电子设备上通过操作系统对于所述调用的选择来执行处理。优选地,在所述应用程序的信息包含预先定义的数据库中的特征数据时,所述处理模块向所述应用程序返回预先定义的服务结果;或者,在所述应用程序的信息不包含预先定义的数据库中的特征数据时,所述处理模块显示所述应用程序的名称和信息和所述调用的信息,并且根据在电子设备上通过操作系统对于所述调用的选择来执行处理。 优选地,在所述应用程序对所述服务的调用被选择为允许的情况下,所述处理模块根据所述服务的地址执行所述调用,并向所述应用程序返回实际服务结果;或者在所述应用程序对所述服务的调用被选择为不允许的情况下,所述处理模块向所述应用程序返回预先定义的服务結果。优选地,所述装置还包括用于在所述加载模块将拦截动态库加载到服务所在的进程之前暂停所述进程的暂停模块、以及用于在所述第一替换模块将所述进程中的输入输出控制函数的地址替换为所述拦截动态库的第一地址之后恢复所述进程的恢复模块。 优选地,所述调用的信息包括所述调用的接ロ序号以及要被调用的服务的地址。优选地,所述操作系统是Android系统,所述应用程序通过Android系统的Binde本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用于拦截电子设备的操作系统中应用程序对服务的调用的方法(100),包括 将拦截动态库加载到服务所在的进程(SlOl); 将所述进程中的输入输出控制函数的地址替换为所述拦截动态库的第一地址(S102); 在应用程序对所述服务进行调用时,基于所述第一地址执行所述拦截动态库,以获得所述应用程序的名称和信息和所述调用的信息,并且将所述调用的信息中包括的要被调用的服务的地址替换为所述拦截动态库的第二地址(S103);以及 基于所述第二地址,根据所述应用程序的名称和/或信息来执行处理(S104)。2.如权利要求I所述的方法,其中根据所述应用程序的名称和/或信息来执行处理的步骤包括通过将所述应用程序的名称和/或信息与预先定义的数据库中的信息进行比较,而(a)根据所述服务的地址执行所述调用,并向所述应用程序返回实际服务结果,或者(b)向所述应用程序返回预先定义的服务結果。3.如权利要求I所述的方法,其中根据所述应用程序的名称来执行处理的步骤包括在所述应用程序的名称包含在预先定义的数据库中的白名单中时,根据所述服务的地址执行所述调用,并向所述应用程序返回实际服务結果;或者,在所述应用程序的名称包含在预先定义的数据库中的黑名单中吋,向所述应用程序返回预先定义的服务结果;或者,在所述应用程序的名称未包含在预先定义的数据库中的白名单和黑名单中时,显示所述应用程序的名称和信息和所述调用的信息,并且根据在电子设备上通过操作系统对于所述调用的选择来执行处理。4.如权利要求I所述的方法,其中根据所述应用程序的信息来执行处理的步骤包括在所述应用程序的信息包含预先定义的数据库中的特征数据时,向所述应用程序返回预先定义的服务結果;或者,在所述应用程序的信息不包含预先定义的数据库中的特征数据时,显示所述应用程序的名称和信息和所述调用的信息,并且根据在电子设备上通过操作系统对于所述调用的选择来执行处理。5.如权利要求3或4所述的方法,其中根据在电子设备上通过操作系统的选择来执行处理的步骤包括在选择了允许所述应用程序对所述服务的调用的情况下,根据所述服务的地址执行所述调用,并向所述应用程序返回实际服务结果;或者在选择了不允许所述应 >程序对所述服务的调用的情况下,向所述应用程序返回预先定义的服务結果。6.如权利要求I至4中的任一项所述的方法,还包括在将拦截动态库加载到服务所在的进程(SlOl)的步骤之前暂停所述进程,以及在将所述进程中的输入输出控制函数的地址替换为所述拦截动态库的第一地址(S102)的步骤之后恢复所述进程。7.如权利要求I至4中的任一项所述的方法,其中所述调用的信息包括所述调用的接ロ序号以及要被调用的服务的地址。8.如权利要求I至4中的任一项所述的方法,其中所述操作系统是Android系统,所述应用程序通过Android系统的Binder机制对所述服务进行调用。9.如权利要求8所述的方法,其中所述输入输出控制函数是Binder机制中的IOCTL函数。10.如权利要求9所述的方法,其中在应用程序对所述服务进行调用时,基于所述第一地址执行所述拦截动态库,以通过所述IOCTL函数而先于Android系统获得所述应用程序的名称和信息和所述调用的信息。11.一种用于拦截电子设备的操作系统中应用程序对服务的调用的装置(200),包括 ...

【专利技术属性】
技术研发人员:丁祎李元
申请(专利权)人:奇智软件北京有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1