CN104536839B - 进程间进行方法调用的方法及装置 - Google Patents

进程间进行方法调用的方法及装置 Download PDF

Info

Publication number
CN104536839B
CN104536839B CN201410826938.9A CN201410826938A CN104536839B CN 104536839 B CN104536839 B CN 104536839B CN 201410826938 A CN201410826938 A CN 201410826938A CN 104536839 B CN104536839 B CN 104536839B
Authority
CN
China
Prior art keywords
server
call
hook
hook function
injection
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
CN201410826938.9A
Other languages
English (en)
Other versions
CN104536839A (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.)
Beijing Qihoo Technology Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing 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 Beijing Qihoo Technology Co Ltd, Qizhi Software Beijing Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201811618026.7A priority Critical patent/CN109710429B/zh
Priority to CN201410826938.9A priority patent/CN104536839B/zh
Publication of CN104536839A publication Critical patent/CN104536839A/zh
Application granted granted Critical
Publication of CN104536839B publication Critical patent/CN104536839B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Telephonic Communication Services (AREA)
  • Stored Programmes (AREA)

Abstract

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

Description

进程间进行方法调用的方法及装置
技术领域
本发明涉及互联网技术领域,尤其涉及一种进程间进行方法调用的方法及装置。
背景技术
在安卓操作系统中,一个运行的应用程序占用一个进程,当手机用户启动多个应用程序时,操作系统会同时建立并维护多个进程。
通常,进程与进程是相互隔离的,进程之间无法进行通信。但是在一些情况下,我们需要在进程之间进行通信,例如通过进程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函数中包含用于获取第一进程方法的服务端,在获的第一进程的方法后,可以将该方法存放在该服务端中,以便第二进程调用。
需要说明的是,本实施例所述将方法存放在服务端中仅为示意性说明,实际应用中,可以将获取的方法放入内存或缓存中的一段地址空间中,并通过该服务端指向该段地址空间。当第二进程调用服务端时,可以根据服务端的指针访问对应的地址空间,并获得需要调用的方法。当然,应当明确的是,这是本实施例的一种实现方式之一,不应作为对实际应用的限制。
104、通过第二进程调用服务端,以使得第二进程获取第一进程的方法。
通常,在不支持通信协议的情况下,第一进程与第二进程并不能直接进行通信和方法调用。在本实施例中,可以通过Hook函数中携带的服务端获取第一进程中的方法,并由第二进程对该服务端进行调用并获取需要调用的方法,无需第二进程直接访问第一进程。因此本实施例提供的方法能够不受通信协议的制约,自由进行进程间的方法调用。
进一步的,作为对图1所示方法的细化及进一步扩展,本发明的另一实施例还提供了一种进程间进行方法调用的方法,如图2所示,该方法包括:
201、通过进程标识查找第一进程。
在向第一进程注入Hook函数前,首先需要找到第一进程。本实施例即是通过进程标识对第一进程进行查找。实际应用中,进程标识包括但不限于是:进程ID、进程名称、进程句柄或者注册表中进程文件的存储路径(包括绝对存储路径及相对存储路径),本实施例不对进程标识的具体形式进行限制。
本实施例中,第一进程的进程标识写在第二进程中,第二进程需要调用哪个进程的方法就可以写入哪个进程的进程标识。
202、将Hook模块中的Hook函数注入到第一进程中。
在本实施例的一种实现方式中,可以通过Inject注入器向第一进程注入Hook模块中的Hook函数。其中,Hook模块具体可以是一个形如libxHook.so的文件。当第二进程执行到调用第一进程方法的语句时,执行步骤201查找第一进程,并通过本步骤将Hook函数注入到第一进程中。
203、执行Hook函数获取第一进程中的方法。
对于第一进程方法的调用,本实施例将给出几种不同的调用方式:
1、通过静态方法直接调用第一进程中的方法
示例性的,假设需要调用类的方法text1,调用语句可以形如:
public static text1( );
2、通过成员方法调用第一进程中的方法
此种方式需要区分两种情况:
1)不存在类的对象
此情况下需要预先为方法调用创建(New)一个类的对象。假设需要调用类A的方法text2,调用语句可以形如:
A a=new(A);
a.text2( );
2)系统已经创建有类的对象
此情况下,如果能够在系统内存中查找到该类的对象,则可以进行方法调用。假设需要调用A类的方法text3,并且可以在系统内存中查找到类A,则调用语句可以形如:
A.test3( );
204、将获取的第一进程中的方法存放在服务端中。
本步骤的实现方式与图1步骤103的实现方式相同,此处不再赘述。
205、通过第二进程调用服务端,获得服务端获取的第一进程的方法。
图1步骤101中独立注册的服务,除包含一个服务端外,还包含一个独立于第一进程和第二进程的代理端(mclient)。可以通过第二进程调用第一进程之外的该代理端,通过代理端获取服务端中第一进程的方法。
在本实施例服务端和代理端各自的作用分别在于:服务端注入到第一进程中,用于获取第一进程中的方法;代理端位于第一进程之外,与服务端之间存在通信机制,用于为第二进程获取第一进程的方法提供“入口”。服务端可以通过与代理端之间建立的通信机制,将获取的第一进程的方法转递给第一进程之外的代理端,如是,第二进程就可以通过代理端与服务端的组合、在与第一进程不进行通信的前提下获得第一进程中的方法了。
需要说明的是,本实施例中的独立注册的服务属于公用类服务,并非仅为第二进程所生。如系统中还存在第三进程、第四进程需要调用第一进程中的方法,则同样可以通过调用代理端的方式实现。
在本实施例中,代理端与服务端之间的通信机制可以为IBinder通信机制。IBinder是一个子类的接口,该接口属于一个能够进行远程操作对象的基接口。其定义了为:在进程间内或者跨进程间的调用时提供高性能的轻量级远程调用的核心部分。该接口描述了与远程对象进行交互的抽象协议。它的核心API是transact( ),在它的直接子类中是Binder.onTransact( )。这些方法允许分别发送一个呼叫到一个IBinder对象和接收呼叫到一个Binder对象。
此外,在本实施例中,调用代理端的一种实现方式可以是:通过第二进程调用MessageManagerService(信息管理服务),在MessageManagerService中通过GetService调用代理端。值得说明的是,在调用GetService时,需要区分GetService与GetSystemService之间的使用区别。具体的,GetService需要与addService函数配对使用,一般使用在Android的C/C++层,通常会指定一个16字节大小的Service名称,例如:
[java]view plaincopy
IBinder b=ServiceManager.getService(serviceName);
而GetSystemService则只能获取在
Context.java(frameworks/base/core/java/android/Content)下定义的Service,例如:
[java]view plaincopy
FMPlayer mFMPlayer=(FMPlayer)getSystemService("FMPlayer");
进一步的,作为对上述图1或图2所示方法的实现,本发明的另一实施例还提供了一种进程间进行方法调用的装置。如图3所示,该装置包括:注入单元31、获取单元32以及调用单元33,其中,
注入单元31,用于将Hook模块中的Hook函数注入到第一进程中,Hook函数中含有用于调用第一进程方法的服务端;
获取单元32,用于执行注入单元31注入的Hook函数获取第一进程中的方法,并将获取的第一进程中的方法存放在服务端中;
调用单元33,用于通过第二进程调用服务端,以使得第二进程获取获取单元32获取的第一进程的方法。
进一步的,如图4所示,该装置还包括:
查找单元34,用于在注入单元31将Hook模块中的Hook函数注入到第一进程中之前,通过进程标识查找第一进程。
进一步的,注入单元31,用于通过Inject注入器将Hook模块中的Hook函数注入到第一进程中。
进一步的,如图4所示,获取单元32,包括:
第一获取模块321,用于通过静态方法直接调用第一进程中的方法。
进一步的,如图4所示,获取单元32,包括:
第二获取模块322,用于通过成员方法获得类的对象,并调用对象的方法。
进一步的,第二获取模块322用于创建类的对象。
进一步的,第二获取模块322用于在系统内存中查找类的对象。
进一步的,调用单元33用于:通过第二进程调用第一进程之外的代理端,代理端与第一进程中的服务端之间存在通信机制;
通过代理端获取服务端中第一进程的方法。
进一步的,调用单元33用于:
通过第二进程调用MessageManagerService信息管理服务;
在MessageManagerService中通过GetService调用代理端。
进一步的,代理端与服务端之间通过IBinder通信机制进行通信。
本实施例提供的进程间进行方法调用的装置,能够通过向第一进程注入并执行Hook函数的方式,在第一进程中“插入”用于获取第一进程方法的服务端,并通过第二进程对服务端的调用使第二进程获得服务端获取的第一进程的方法。与现有技术相比,本实施例能够通过函数注入的方式打破进程间的“壁垒”,以独立注册的服务(端)作为方法调用的中间媒介,实现第二进程对第一进程的方法调用。由于无需第二进程直接对第一进程进行访问,因此本实施例可以不受通信协议的制约,具有良好的通用性。
进一步的,本发明还公开了如下内容:
A1、一种进程间进行方法调用的方法,所述方法包括:
将Hook模块中的Hook函数注入到第一进程中,所述Hook函数中含有用于调用所述第一进程方法的服务端;
执行所述Hook函数获取所述第一进程中的方法,并将获取的所述第一进程中的方法存放在所述服务端中;
通过第二进程调用所述服务端,以使得所述第二进程获取所述第一进程的方法。
A2、根据A1所述的方法,在所述将Hook模块中的Hook函数注入到第一进程中之前,所述方法进一步包括:
通过进程标识查找所述第一进程。
A3、根据A1所述的方法,所述将Hook模块中的Hook函数注入到第一进程中,包括:
通过Inject注入器将所述Hook模块中的Hook函数注入到所述第一进程中。
A4、根据A1所述的方法,所述执行所述Hook函数获取所述第一进程中的方法,包括:
通过静态方法直接调用所述第一进程中的方法。
A5、根据A1所述的方法,所述执行所述Hook函数获取所述第一进程中的方法,包括:
通过成员方法获得类的对象,并调用所述对象的方法。
A6、根据A5所述的方法,所述通过成员方法获得类的对象,包括:
创建所述类的对象。
A7、根据A5所述的方法,所述通过成员方法获得类的对象,包括:
在系统内存中查找所述类的对象。
A8、根据A1所述的方法,所述通过第二进程调用所述服务端,包括:
通过所述第二进程调用所述第一进程之外的代理端,所述代理端与所述第一进程中的所述服务端之间存在通信机制;
通过所述代理端获取所述服务端中所述第一进程的方法。
A9、根据A8所述的方法,所述通过所述第二进程调用所述第一进程之外的代理端,包括:
通过所述第二进程调用MessageManagerService信息管理服务;
在所述MessageManagerService中通过GetService调用所述代理端。
A10、根据A8或A9所述的方法,所述代理端与所述服务端之间通过IBinder通信机制进行通信。
B11、一种进程间进行方法调用的装置,所述装置包括:
注入单元,用于将Hook模块中的Hook函数注入到第一进程中,所述Hook函数中含有用于调用所述第一进程方法的服务端;
获取单元,用于执行所述注入单元注入的所述Hook函数获取所述第一进程中的方法,并将获取的所述第一进程中的方法存放在所述服务端中;
调用单元,用于通过第二进程调用所述服务端,以使得所述第二进程获取所述获取单元获取的所述第一进程的方法。
B12、根据B11所述的装置,所述装置还包括:
查找单元,用于在所述注入单元将Hook模块中的Hook函数注入到第一进程中之前,通过进程标识查找所述第一进程。
B13、根据B11所述的装置,所述注入单元,用于通过Inject注入器将所述Hook模块中的Hook函数注入到所述第一进程中。
B14、根据B11所述的装置,所述获取单元,包括:
第一获取模块,用于通过静态方法直接调用所述第一进程中的方法。
B15、根据B11所述的装置,所述获取单元,包括:
第二获取模块,用于通过成员方法获得类的对象,并调用所述对象的方法。
B16、根据B15所述的装置,所述第二获取模块用于创建所述类的对象。
B17、根据B15所述的装置,所述第二获取模块用于在系统内存中查找所述类的对象。
B18、根据B11所述的装置,所述调用单元用于:通过所述第二进程调用所述第一进程之外的代理端,所述代理端与所述第一进程中的所述服务端之间存在通信机制;
通过所述代理端获取所述服务端中所述第一进程的方法。
B19、根据B18所述的装置,所述调用单元用于:
通过所述第二进程调用MessageManagerService信息管理服务;
在所述MessageManagerService中通过GetService调用所述代理端。
B20、根据B18或B19所述的装置,所述代理端与所述服务端之间通过IBinder通信机制进行通信。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
可以理解的是,上述方法及装置中的相关特征可以相互参考。另外,上述实施例中的“第一”、“第二”等是用于区分各实施例,而并不代表各实施例的优劣。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的发明名称(如确定网站内链接等级的装置)中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

Claims (16)

1.一种进程间进行方法调用的方法,其特征在于,所述方法包括:
将Hook模块中的Hook函数注入到第一进程中,所述Hook函数中含有用于调用所述第一进程方法的服务端;
执行所述Hook函数获取所述第一进程中的方法,将获取的所述第一进程中的方法存放在内存或缓存中的一段地址空间中,并通过所述服务端指向所述地址空间;
通过第二进程调用所述服务端,以使得所述第二进程获取所述第一进程的方法;
其中,所述第一进程方法是在所述Hook函数中预先定义的、运行第二进程对应的应用程序时需要使用的方法;
所述将Hook模块中的Hook函数注入到第一进程中,包括:
通过Inject注入器将所述Hook模块中的Hook函数注入到所述第一进程中;
所述通过第二进程调用所述服务端,包括:
通过所述第二进程调用所述第一进程之外的代理端,所述代理端与所述第一进程中的所述服务端之间存在通信机制;
通过所述代理端获取所述服务端中所述第一进程的方法。
2.根据权利要求1所述的方法,其特征在于,在所述将Hook模块中的Hook函数注入到第一进程中之前,所述方法进一步包括:
通过进程标识查找所述第一进程。
3.根据权利要求1所述的方法,其特征在于,所述执行所述Hook函数获取所述第一进程中的方法,包括:
通过静态方法直接调用所述第一进程中的方法。
4.根据权利要求1所述的方法,其特征在于,所述执行所述Hook函数获取所述第一进程中的方法,包括:
通过成员方法获得类的对象,并调用所述对象的方法。
5.根据权利要求4所述的方法,其特征在于,所述通过成员方法获得类的对象,包括:
创建所述类的对象。
6.根据权利要求4所述的方法,其特征在于,所述通过成员方法获得类的对象,包括:
在系统内存中查找所述类的对象。
7.根据权利要求1所述的方法,其特征在于,所述通过所述第二进程调用所述第一进程之外的代理端,包括:
通过所述第二进程调用MessageManagerService信息管理服务;
在所述MessageManagerService中通过GetService调用所述代理端。
8.根据权利要求1或7所述的方法,其特征在于,所述代理端与所述服务端之间通过IBinder通信机制进行通信。
9.一种进程间进行方法调用的装置,其特征在于,所述装置包括:
注入单元,用于将Hook模块中的Hook函数注入到第一进程中,所述Hook函数中含有用于调用所述第一进程方法的服务端;
获取单元,用于执行所述注入单元注入的所述Hook函数获取所述第一进程中的方法,将获取的所述第一进程中的方法存放在内存或缓存中的一段地址空间中,并通过所述服务端指向所述地址空间;
调用单元,用于通过第二进程调用所述服务端,以使得所述第二进程获取所述获取单元获取的所述第一进程的方法;
其中,所述第一进程方法是在所述Hook函数中预先定义的、运行第二进程对应的应用程序时需要使用的方法;
所述注入单元,还用于通过Inject注入器将所述Hook模块中的Hook函数注入到所述第一进程中;
所述调用单元,还用于通过所述第二进程调用所述第一进程之外的代理端,所述代理端与所述第一进程中的所述服务端之间存在通信机制;通过所述代理端获取所述服务端中所述第一进程的方法。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:
查找单元,用于在所述注入单元将Hook模块中的Hook函数注入到第一进程中之前,通过进程标识查找所述第一进程。
11.根据权利要求9所述的装置,其特征在于,所述获取单元,包括:
第一获取模块,用于通过静态方法直接调用所述第一进程中的方法。
12.根据权利要求9所述的装置,其特征在于,所述获取单元,包括:
第二获取模块,用于通过成员方法获得类的对象,并调用所述对象的方法。
13.根据权利要求12所述的装置,其特征在于,所述第二获取模块用于创建所述类的对象。
14.根据权利要求12所述的装置,其特征在于,所述第二获取模块用于在系统内存中查找所述类的对象。
15.根据权利要求9所述的装置,其特征在于,所述调用单元用于:
通过所述第二进程调用MessageManagerService信息管理服务;
在所述MessageManagerService中通过GetService调用所述代理端。
16.根据权利要求9或15所述的装置,其特征在于,所述代理端与所述服务端之间通过IBinder通信机制进行通信。
CN201410826938.9A 2014-12-26 2014-12-26 进程间进行方法调用的方法及装置 Active CN104536839B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201811618026.7A CN109710429B (zh) 2014-12-26 2014-12-26 进程间进行方法调用的方法及装置
CN201410826938.9A CN104536839B (zh) 2014-12-26 2014-12-26 进程间进行方法调用的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410826938.9A CN104536839B (zh) 2014-12-26 2014-12-26 进程间进行方法调用的方法及装置

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201811618026.7A Division CN109710429B (zh) 2014-12-26 2014-12-26 进程间进行方法调用的方法及装置

Publications (2)

Publication Number Publication Date
CN104536839A CN104536839A (zh) 2015-04-22
CN104536839B true CN104536839B (zh) 2019-02-01

Family

ID=52852370

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201811618026.7A Active CN109710429B (zh) 2014-12-26 2014-12-26 进程间进行方法调用的方法及装置
CN201410826938.9A Active CN104536839B (zh) 2014-12-26 2014-12-26 进程间进行方法调用的方法及装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201811618026.7A Active CN109710429B (zh) 2014-12-26 2014-12-26 进程间进行方法调用的方法及装置

Country Status (1)

Country Link
CN (2) CN109710429B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107302716B (zh) * 2017-05-15 2019-03-15 武汉斗鱼网络科技有限公司 一种直播游戏的方法、主播端、直播服务器及客户端

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1310385A (zh) * 2000-02-24 2001-08-29 英业达股份有限公司 计算机软件功能的动态扩充方法
CN1470988A (zh) * 2002-07-25 2004-01-28 梁肇新 进程间调用门技术
US7590985B1 (en) * 2002-07-12 2009-09-15 3Par, Inc. Cluster inter-process communication transport
JP2013506902A (ja) * 2009-10-01 2013-02-28 テレフオンアクチーボラゲット エル エム エリクソン(パブル) 持続的リッチ・インターネット・アプリケーションを管理する方法と装置
CN103019840A (zh) * 2012-11-22 2013-04-03 北京奇虎科技有限公司 用于设置桌面的方法和装置
CN103324542A (zh) * 2013-07-17 2013-09-25 天脉聚源(北京)传媒科技有限公司 一种模块间调用的方法及装置
CN103761096A (zh) * 2014-01-22 2014-04-30 广东欧珀移动通信有限公司 基于IBinder机制实现的自动输入方法及装置
CN103995751A (zh) * 2014-05-30 2014-08-20 上海斐讯数据通信技术有限公司 一种跨平台通信系统及方法
CN104077184A (zh) * 2013-03-25 2014-10-01 腾讯科技(深圳)有限公司 一种应用程序的进程控制方法及计算机系统
CN104156662A (zh) * 2014-08-28 2014-11-19 北京奇虎科技有限公司 进程监控的方法、装置和智能终端

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040058030A (ko) * 2002-12-26 2004-07-03 엘지전자 주식회사 링크가 설정된 단말기간의 호 자동 전환 방법
CN103914321B (zh) * 2013-01-05 2018-11-06 腾讯科技(深圳)有限公司 一种调用系统的消息处理能力的方法和移动终端
CN104063284B (zh) * 2013-03-18 2016-07-06 腾讯科技(深圳)有限公司 运行应用程序的方法和装置
CN103631664B (zh) * 2013-12-09 2016-09-28 北京奇虎科技有限公司 一种进程间的通信方法和装置

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1310385A (zh) * 2000-02-24 2001-08-29 英业达股份有限公司 计算机软件功能的动态扩充方法
US7590985B1 (en) * 2002-07-12 2009-09-15 3Par, Inc. Cluster inter-process communication transport
CN1470988A (zh) * 2002-07-25 2004-01-28 梁肇新 进程间调用门技术
JP2013506902A (ja) * 2009-10-01 2013-02-28 テレフオンアクチーボラゲット エル エム エリクソン(パブル) 持続的リッチ・インターネット・アプリケーションを管理する方法と装置
CN103019840A (zh) * 2012-11-22 2013-04-03 北京奇虎科技有限公司 用于设置桌面的方法和装置
CN104077184A (zh) * 2013-03-25 2014-10-01 腾讯科技(深圳)有限公司 一种应用程序的进程控制方法及计算机系统
CN103324542A (zh) * 2013-07-17 2013-09-25 天脉聚源(北京)传媒科技有限公司 一种模块间调用的方法及装置
CN103761096A (zh) * 2014-01-22 2014-04-30 广东欧珀移动通信有限公司 基于IBinder机制实现的自动输入方法及装置
CN103995751A (zh) * 2014-05-30 2014-08-20 上海斐讯数据通信技术有限公司 一种跨平台通信系统及方法
CN104156662A (zh) * 2014-08-28 2014-11-19 北京奇虎科技有限公司 进程监控的方法、装置和智能终端

Also Published As

Publication number Publication date
CN104536839A (zh) 2015-04-22
CN109710429B (zh) 2021-08-31
CN109710429A (zh) 2019-05-03

Similar Documents

Publication Publication Date Title
CN104375861B (zh) 基于安卓平台的应用程序免安装运行的方法、装置及终端
CN106294372B (zh) 应用程序页面快速访问方法及应用其的移动终端
CN104915224B (zh) 一种关联应用程序的处理方法及装置
CN102855138B (zh) 一种api的拦截方法、装置及移动终端
CN106569856B (zh) 一种应用视图资源文件的加载方法和装置
US9858094B2 (en) Monitoring and actuation of view controller parameters to reach deep states without manual developer intervention
CN103716295B (zh) 一种网络系统
CN104991921B (zh) 一种数据查询方法、客户端和服务器
CN105450772B (zh) 免流量下载方法及装置
CN103778012B (zh) 更改终端运营商信息的方法及装置
CN106201610A (zh) Web应用访问终端原生功能的方法及装置
CN107463422A (zh) 代码部署方法及装置、电子设备
CN104679900A (zh) 一种应用程序搜索方法及装置
CN105528251A (zh) 应用通知信息的处理方法、装置及移动终端
CN106354622B (zh) 测试网页的展示方法和装置
CN106033433B (zh) 一种信息搜索方法和装置
CN106598662B (zh) 基于android的应用加载方法及装置
CN103647844B (zh) 一种内网中程序升级的方法及装置
CN104536839B (zh) 进程间进行方法调用的方法及装置
CN109190367A (zh) 利用沙箱运行应用程序安装包的方法及装置
CN105404827B (zh) 控制应用程序之间通信的方法、装置及系统
CN108664811A (zh) 一种权限管理方法及装置
CN104391880A (zh) 拦截业务对象的方法及客户端
ES2728921T3 (es) Método, aparato y sistema para transmitir o recibir simultáneamente múltiples objetos gestionados
CN111385661B (zh) 语音控制全屏播放的方法、装置、终端及存储介质

Legal Events

Date Code Title Description
PB01 Publication
C10 Entry into 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: 20220725

Address after: Room 801, 8th floor, No. 104, floors 1-19, building 2, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing 100015

Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Qizhi software (Beijing) Co.,Ltd.

TR01 Transfer of patent right