进程间进行方法调用的方法及装置制造方法及图纸

技术编号:21033826 阅读:23 留言:0更新日期:2019-05-04 05:16
本发明专利技术公开了一种进程间进行方法调用的方法及装置,涉及互联网技术领域,能够在不受通信协议制约的情况下,实现进程间的方法调用。本发明专利技术的方法包括:将Hook模块中的Hook函数注入到第一进程中,Hook函数中含有用于调用第一进程方法的服务端;执行Hook函数获取第一进程中的方法,并将获取的第一进程中的方法存放在服务端中;通过第二进程调用服务端,以使得第二进程获取第一进程的方法。本发明专利技术主要应用于安卓环境下的跨进程方法调用。

Method and Device for Interprocess Method Call

【技术实现步骤摘要】
进程间进行方法调用的方法及装置本申请为基于母案《进程间进行方法调用的方法及装置》的分案申请,母案《进程间进行方法调用的方法及装置》的申请日为2014年12月26日,申请号为201410826938.9,公开号为CN104536839A。
本专利技术涉及互联网
,尤其涉及一种进程间进行方法调用的方法及装置。
技术介绍
在安卓操作系统中,一个运行的应用程序占用一个进程,当手机用户启动多个应用程序时,操作系统会同时建立并维护多个进程。通常,进程与进程是相互隔离的,进程之间无法进行通信。但是在一些情况下,我们需要在进程之间进行通信,例如通过进程A直接调用进程B中的方法。现有技术中,只有在基于共同的通信协议的基础上,两个进程才能够实现相互之间的通信。而当进程不支持通信协议时,则无法实现进程间的方法调用。
技术实现思路
鉴于上述问题,本专利技术提出了一种进程间进行方法调用的方法及装置,能够在不受通信协议制约的情况下,实现进程间的方法调用。一方面,本专利技术提供了一种进程间进行方法调用的方法,该方法包括:将Hook模块中的Hook函数注入到第一进程中,Hook函数中含有用于调用第一进程方法的服务端;执行Hook函数获取第一进程中的方法,并将获取的第一进程中的方法存放在服务端中;通过第二进程调用服务端,以使得第二进程获取第一进程的方法。进一步的,在将Hook模块中的Hook函数注入到第一进程中之前,该方法进一步包括:通过进程标识查找第一进程。进一步的,将Hook模块中的Hook函数注入到第一进程中,包括:通过Inject注入器将Hook模块中的Hook函数注入到第一进程中。进一步的,执行Hook函数获取第一进程中的方法,包括:通过静态方法直接调用第一进程中的方法。进一步的,执行Hook函数获取第一进程中的方法,包括:通过成员方法获得类的对象,并调用对象的方法。进一步的,通过成员方法获得类的对象,包括:创建类的对象。进一步的,通过成员方法获得类的对象,包括:在系统内存中查找类的对象。进一步的,通过第二进程调用服务端,包括:通过第二进程调用第一进程之外的代理端,代理端与第一进程中的服务端之间存在通信机制;通过代理端获取服务端中第一进程的方法。进一步的,通过第二进程调用第一进程之外的代理端,包括:通过第二进程调用MessageManagerService信息管理服务;在MessageManagerService中通过GetService调用代理端。进一步的,代理端与服务端之间通过IBinder通信机制进行通信。第二方面,本专利技术提供了一种进程间进行方法调用的装置,该装置包括:注入单元,用于将Hook模块中的Hook函数注入到第一进程中,Hook函数中含有用于调用第一进程方法的服务端;获取单元,用于执行注入单元注入的Hook函数获取第一进程中的方法,并将获取的第一进程中的方法存放在服务端中;调用单元,用于通过第二进程调用服务端,以使得第二进程获取获取单元获取的第一进程的方法。进一步的,该装置还包括:查找单元,用于在注入单元将Hook模块中的Hook函数注入到第一进程中之前,通过进程标识查找第一进程。进一步的,注入单元,用于通过Inject注入器将Hook模块中的Hook函数注入到第一进程中。进一步的,获取单元,包括:第一获取模块,用于通过静态方法直接调用第一进程中的方法。进一步的,获取单元,包括:第二获取模块,用于通过成员方法获得类的对象,并调用对象的方法。进一步的,第二获取模块用于创建类的对象。进一步的,第二获取模块用于在系统内存中查找类的对象。进一步的,调用单元用于:通过第二进程调用第一进程之外的代理端,代理端与第一进程中的服务端之间存在通信机制;通过代理端获取服务端中第一进程的方法。进一步的,调用单元用于:通过第二进程调用MessageManagerService信息管理服务;在MessageManagerService中通过GetService调用代理端。进一步的,代理端与服务端之间通过IBinder通信机制进行通信。借由上述技术方案,本专利技术提供的进程间进行方法调用的方法及装置,能够通过向第一进程注入并执行Hook函数的方式,在第一进程中“插入”用于获取第一进程方法的服务端,并通过第二进程对服务端的调用使第二进程获得服务端获取的第一进程的方法。与现有技术相比,本专利技术能够通过函数注入的方式打破进程间的“壁垒”,以独立注册的服务(端)作为方法调用的中间媒介,实现第二进程对第一进程的方法调用。由于无需第二进程直接对第一进程进行访问,因此本专利技术提供的调用过程不受通信协议的制约,具有良好的通用性。上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本专利技术的具体实施方式。附图说明通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本专利技术的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:图1示出了本专利技术提供的一种进程间进行方法调用的方法流程图;图2示出了本专利技术提供的另一种进程间进行方法调用的方法流程图;图3示出了本专利技术提供的一种进程间进行方法调用的装置的结构示意图;图4示出了本专利技术提供的另一种进程间进行方法调用的装置的结构示意图。具体实施方式下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。本专利技术的一个实施例提供了一种进程间进行方法调用的方法,如图1所示,该方法包括:101、将Hook模块中的Hook函数注入到第一进程中。本实施例中,Hook函数为预先编写的一段函数,其中含有用于调用第一进程方法的服务端。该服务端属于一个独立注册的服务,用于从第一进程中获取属于第一进程的方法。实际应用中,Hook机制具有不同的功能,包括观察功能、注入功能、替换功能、集权功能、修复功能、破解功能等。本实施例即是使用Hook机制的注入功能将预先编写好的Hook函数注入到第一进程中。102、执行Hook函数获取第一进程中的方法。在将Hook函数注入到第一进程后,截获第一进程的执行并执行该Hook函数,获取第一进程中的方法。在本实施例中,开发人员可以在Hook函数中预先定义好需要获取的方法,在注入到第一进程后,通过对Hook函数的执行,获取第一进程中的部分或全部方法。103、将获取的第一进程中的方法存放在服务端中。如前所述,Hook函数中包含用于获取第一进程方法的服务端,在获的第一进程的方法后,可以将该方法存放在该服务端中,以便第二进程调用。需要说明的是,本实施例所述将方法存放在服务端中仅为示意性说明,实际应用中,可以将获取的方法放入内存或缓存中的一段地址空间中,并通过该服务端指向该段地址空间。当第二进程调用服务端时,可以根据服务端的指针访问对应的地址空间,并获得需要调用的方法。当然,应当明确的是,这是本实施例的一种实现方式之一,本文档来自技高网...

【技术保护点】
1.一种进程间进行方法调用的方法,其特征在于,所述方法包括:将Hook模块中的Hook函数注入到第一进程中,所述Hook函数中含有用于调用所述第一进程方法的服务端;执行所述Hook函数获取所述第一进程中的方法,并将获取的所述第一进程中的方法存放在所述服务端中;通过第二进程调用所述服务端,以使得所述第二进程获取所述第一进程的方法。

【技术特征摘要】
1.一种进程间进行方法调用的方法,其特征在于,所述方法包括:将Hook模块中的Hook函数注入到第一进程中,所述Hook函数中含有用于调用所述第一进程方法的服务端;执行所述Hook函数获取所述第一进程中的方法,并将获取的所述第一进程中的方法存放在所述服务端中;通过第二进程调用所述服务端,以使得所述第二进程获取所述第一进程的方法。2.根据权利要求1所述的方法,其特征在于,在所述将Hook模块中的Hook函数注入到第一进程中之前,所述方法进一步包括:通过进程标识查找所述第一进程。3.根据权利要求1所述的方法,其特征在于,所述将Hook模块中的Hook函数注入到第一进程中,包括:通过Inject注入器将所述Hook模块中的Hook函数注入到所述第一进程中。4.根据权利要求1所述的方法,其特征在于,所述执行所述Hook函数获取所述第一进程中的方法,包括:通过静态方法直接调用所述第一进程中的方法。5.根据权利要求1所述的方法,其特征在于,所述执行所述Hook函数获取所述第一进程中的方法,包括:通过成员方法获得类的对象,并调用所述对象的方法。6.根据权利要求5所述的方法,其特征在于,所述通过成员方法获得类的对象,包括:创建...

【专利技术属性】
技术研发人员:张辉
申请(专利权)人:北京奇虎科技有限公司奇智软件北京有限公司
类型:发明
国别省市:北京,11

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

1