CN102855138B - 一种api的拦截方法、装置及移动终端 - Google Patents
一种api的拦截方法、装置及移动终端 Download PDFInfo
- Publication number
- CN102855138B CN102855138B CN201210252551.8A CN201210252551A CN102855138B CN 102855138 B CN102855138 B CN 102855138B CN 201210252551 A CN201210252551 A CN 201210252551A CN 102855138 B CN102855138 B CN 102855138B
- Authority
- CN
- China
- Prior art keywords
- api
- code
- tackled
- virtual machine
- identification
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3089—Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
- G06F11/3093—Configuration details thereof, e.g. installation, enabling, spatial arrangement of the probes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/006—Identification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/815—Virtual
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
- Telephone Function (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种API的拦截方法、装置及移动终端,属于移动终端领域。所述方法包括:根据API进程的进程标识在系统对应的虚拟机中对所述API进程进行实时监控;当API进程被启动时,根据API进程的进程标识从内存中获取所述API进程对应的虚拟机实例;根据待拦截API的标识信息从所述API进程对应的虚拟机实例中将所述待拦截的采用第一计算机语言编写的第一API的代码指向地址替换为已存储的采用第二计算机语言编写的且与第一API相对应的第二API的代码指向地址,所述第二语言与第一代码相区别;通过第二函数实现对API进程的控制。所述装置包括:监控模块、获取模块和替换模块。本发明能够对应用的功能进行扩展或修改。
Description
技术领域
本发明涉及移动终端领域,特别涉及一种API(ApplicationProgrammingInterface,应用程序编程接口)的拦截方法、装置及移动终端。
背景技术
随着Android(安卓)系统的快速发展,使用Android系统的终端越来越多,Android系统是一个开放源代码系统,可以在使用Android系统终端内安装应用,Android系统为该应用提供运行环境。
目前,厂商在生产使用Android系统的终端时,可以直接在终端内内置应用,用户也可以根据自己的需要在终端内安装其他的应用;这些应用都是由相应的厂商提供,且每个应用在开发完成后,每个应用的功能都固定下来了,不可以对应用的功能进行扩展或进行修改。
发明内容
为了能够对应用的功能进行扩展或修改,本发明提供了一种拦截函数的方法及装置。所述技术方案如下:
一种应用程序编程接口API的拦截方法,所述方法包括:
根据API进程的进程标识在系统对应的虚拟机中对所述API进程进行实时监控;
当API进程被启动时,根据API进程的进程标识从内存中获取所述API进程对应的虚拟机实例;
根据待拦截API的标识信息从所述API进程对应的虚拟机实例中将所述待拦截的采用第一计算机语言编写的第一API的代码指向地址替换为已存储的采用第二计算机语言编写的且与第一API相对应的第二API的代码指向地址,代码指向地址对应一个存储空间,所述存储空间为终端磁盘中的空间,所述第二API用于实现修改后的步骤;
使所述API进程根据所述第二API的代码指向地址调用实现所述第二API的代码并运行实现所述第二API的代码;
通过第二函数实现对API进程的控制。
所述根据API进程的进程标识在系统对应的虚拟机中对所述API进程进行实时监控,包括:
监控系统对应的虚拟机开始运行所述API进程的进程标识对应的API进程时,则监控出所述API进程被启动。
所述待拦截的API的标识信息至少包括所述待拦截的API所属类的类标识和所述待拦截的API的函数标识。
所述根据待拦截API的标识信息从所述API进程对应的虚拟机实例中将所述待拦截的采用第一计算机语言编写的第一API的代码指向地址替换为已存储的采用第二计算机语言编写的且与第一API相对应的第二API的代码指向地址,包括:
根据所述类标识,从所述API进程对应的虚拟机实例中获取所述待拦截的第一API所属的类对应的类结构体;
根据所述待拦截的第一API的函数标识,从所述类结构体中获取所述待拦截的第一API对应的函数结构体;
将所述函数结构体中存储的所述待拦截的第一API的代码指向地址替换为已存储的第二API的代码指向地址。
所述第二计算机语言为C语言或C++语言。
一种应用程序编程接口API的拦截装置,所述装置包括:
监控模块,用于根据API进程的进程标识在系统对应的虚拟机中对所述API进程进行实时监控;
获取模块,用于当API进程被启动时,根据API进程的进程标识从内存中获取所述API进程对应的虚拟机实例;
拦截模块,用于根据待拦截API的标识信息从所述API进程对应的虚拟机实例中将所述待拦截的采用第一计算机语言编写的第一API的代码指向地址替换为已存储的采用第二计算机语言编写的且与第一API相对应的第二API的代码指向地址,其中,代码指向地址对应一个存储空间,所述存储空间为终端磁盘中的空间,所述第二API用于实现修改后的步骤;使所述API进程根据所述第二API的代码指向地址调用实现所述第二API的代码并运行实现所述第二API的代码;
通过第二函数实现对API进程的控制。
所述监控模块,具体用于监控系统对应的虚拟机开始运行所述API进程的进程标识对应的API进程时,则监控出所述API进程被启动。
所述待拦截的API的标识信息至少包括所述待拦截的API所属类的类标识和所述待拦截的API的函数标识。
所述拦截模块包括:
第一获取单元,用于根据所述类标识,从所述API进程对应的虚拟机实例中获取所述待拦截的第一API所属的类对应的类结构体;
第二获取单元,用于根据所述待拦截的第一API的函数标识,从所述类结构体中获取所述待拦截的第一API对应的函数结构体;
替换单元,用于将所述函数结构体中存储的所述待拦截的第一API的代码指向地址替换为已存储的第二API的代码指向地址。
一种移动终端,其特征在于,包括所述的装置。
在本发明实施例中,根据API进程的进程标识在系统对应的虚拟机中对API进程进行实时监控;如果监控出API进程被启动,则根据API进程的进程标识从内存中获取API进程对应的虚拟机实例;根据待拦截第一API的标识信息从API进程对应的虚拟机实例中将待拦截的函数的代码指向地址替换为已存储的第二API对应的代码指向地址,实现拦截API。
附图说明
图1是本发明实施例1提供的一种API的拦截方法流程图;
图2是本发明实施例2提供的一种API的拦截方法流程图;
图3是本发明实施例3提供的第一种API的拦截装置结构示意图;
图4是本发明实施例4提供的第二种API的拦截装置结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
其中,在Android系统中运行的应用包括一个或多个类,每个类包括一个或多个API;该应用实现的功能可以分为多个步骤,每个步骤由一个或多个API来实现。其中,Android系统中的应用都在Android系统对应的虚拟机中运行,当该应用被启动时,Android系统创建用于运行该应用的进程,并在终端的内存中为该进程构建一个虚拟机实例,该虚拟机实例为一个结构体,使用该进程的进程标识来标识该虚拟机实例,该虚拟机实例中至少包括该应用包括的每个类对应的类结构体,还可以包括该应用包括的参数的类型和个数,每个类对应的类结构体分别使用每个类的类标识进行标识,对于任一个类,该类对应的类结构体中至少包括该类包括的每个API对应的函数结构体,每个API对应的函数结构体分别用每个API的函数标识进行标识,对于任一个API,该API对应的函数结构体内至少包括该API对应的代码指向地址,该代码指向地址对应一个存储空间,该存储空间用于存储实现该API的具体代码,且该存储空间为终端磁盘中的空间。
其中,当该进程被启动运行后并需要运行某API时,该进程根据该API所属的类的类标识,从其对应的虚拟机实例中获取该类的对应的类结构体,根据该API的函数标识,从该类对应的类结构中获取该API对应的函数结构体,从该函数结构体中获取该API对应的代码指向地址,根据该代码指向地址调用实现该API的代码,并运行实现该API的代码,如此实现了运行该API。
其中,该应用实现的功能可以分为多个步骤,每个步骤由一个或多个API来实现,当需要对该应用的功能进行修改或需要对该应用的功能进行扩展时,可以通过对该应用包括的某一个或某多个步骤进行修改,来实现对该应用的功能进行修改或扩展;其中,这些步骤都是由相应的API来实现,对实现这些步骤的API进行修改,就可以实现对这些步骤进行修改,为了便于说明将实现这些步骤的API称为待拦截的第一API,第一API为采用第一计算机语言编写的API,第一计算机语言可以为Java语言。
其中,在本实施例中,技术人员可以事先开发出第二API,第二API可以实现修改后的步骤,然后通过本发明的方法来拦截用于运行该应用的进程调用待拦截的第一API,并使用于运行该应用的进程来调用技术人员开发的第二API,如此实现对该应用的功能进行修改或对该应用的功能进行扩展;其中,第二API为采用第二计算机语言编写的API,第二计算机语言为C语言或C++语言等。
其中,需要说明的是,运行在Android系统中的应用包括的类可以为Java类,以及类包括的API可以JavaAPI。
实施例1
如图1所示,本发明实施例提供了一种拦截函数的方法,包括:
步骤101:根据API进程的进程标识在系统对应的虚拟机中对API进程进行实时监控;
步骤102:当API进程被启动时,根据API进程的进程标识从内存中获取API进程对应的虚拟机实例;
步骤103:根据待拦截API的标识信息从API进程对应的虚拟机实例中将待拦截的采用第一计算机语言编写的第一API的代码指向地址替换为已存储的采用第二计算机语言编写的且与第一API相对应的第二API的代码指向地址,第二语言与第一代码相区别;
通过第二函数实现对API进程的控制。
在本发明实施例中,根据API进程的进程标识在系统对应的虚拟机中对API进程进行实时监控;如果监控出API进程被启动,则根据API进程的进程标识从内存中获取API进程对应的虚拟机实例;根据待拦截第一API的标识信息从API进程对应的虚拟机实例中将待拦截的函数的代码指向地址替换为已存储的第二API对应的代码指向地址,实现拦截API。
实施例2
本发明实施例提供了一种拦截函数的方法。
其中,目标应用为需要进行功能扩展或需要进行功能修改的应用,可以通过对目标应用包括的某一个或某多个步骤进行修改来实现对目标应用的功能进行扩展或对目标应用的功能进行修改;其中,用于实现这些步骤的API为待拦截的第一API;且技术人员事先开发出第二API,第二API用于实现修改后的步骤,通过本实施例提供的方法对用于运行目标应用的API进程调用的待拦截的函数进行拦截,使API进程调用技术人员事先开发的第二API,如此实现对目标应用的功能进行扩展或对目标应用的功能进行修改。参见图2,该方法包括:
步骤201:根据API进程的进程标识在Android系统对应的虚拟机中实时对运行目标应用的API进程进行监控,如果监控出API进程被启动时,执行步骤202;
其中,Android系统中的应用都运行在Android系统对应的虚拟机中,当目标应用被启动时,Android系统创建用于运行目标应用的API进程,为API进程构建一个虚拟机实例,该虚拟机实例为一个结构体,且使用API进程的进程标识来标识该虚拟机实例,API进程对应的虚拟机实例中至少包括目标应用包括的每个类对应的类结构体,每类对应的类结构体分别使用每个类的类标识进行标识,对于任一个类,该类对应的类结构体中至少包括该类包括的每个API对应的函数结构体,每个API对应的函数结构体分别用每个API的函数标识进行标识,对于任一个API,该API对应的函数结构体内至少包括该API对应的代码指向地址;然后再启动API进程,将API进程放置在Android系统对应的虚拟机中,由该虚拟机来运行API进程。
其中,技术人员事先配置API进程的进程标识,且API进程的进程标识可以为API进程的名称,API进程的名称可以为目标应用的名称。
其中,本步骤可以具体为:根据事先配置的API进程的进程标识,实时对Android系统对应的虚拟机进行监控,当监控出Android系统对应的虚拟机开始运行API进程的进程标识对应的API进程时,则监控出API进程被启动。
例如,用于通话的应用为Android系统提供的一种应用,用于通话的应用包括两步:第一步,根据被叫号码进行拨号,第二步,连通主叫和被叫;第一步可以由用于实现拨号的API来实现,第二步可以由用于连通通话的API来实现;另外,需要说明的是:用于通话的应用包括一个用于通话的类,用于通话的类包括用于实现拨号的API和用于连通通话的API。
假设在本实施例中,需要对用于通话的应用实现的功能进行扩展,使用户在使用用于通话的应用进行拨打被叫号码时,可以显示被叫所在的地理位置,所以用于通话的应用为目标应用,需要对目标应用中包括的第一步进行修改,以及待拦截的第一API为实现第一步的用于实现拨号的API;其中,技术人员事先开发出一个第二API,第二API用于实现修改后的第一步,即第二API可以实现在拨打被叫号码时,显示被叫所在的地理位置。
其中,在Android系统中当目标应用被启动时,Android系统创建一个用于运行目标应用的API进程,在终端的内存中为该API进程构建一个如表1所示的虚拟机实例,使用API进程的进程标识ProcessID1来标识该虚拟机实例,该虚拟机实例中包括用于通话的类对应的类结构体,使用用于通话的类的类标识ClassID1来标识该类结构体,该类结构体中包括用于实现拨号的API对应的函数结构体和用于连通通话的API对应的函数结构体,使用用于实现拨号的API的函数标识FunctionID1来标识用于实现拨号的API对应的函数结构体,且该函数结构体中包括用于实现拨号的API对应的代码指向地址为Address1,使用用于连通通话的API的函数标识FunctionID2来标识用于连通通话的API对应的函数结构体,且该函数结构体中包括用于连通通话的API对应的代码指向地址为Address2。
表1
其中,技术人员事先开发出一个第二API,第二API的代码指向地址为Address11。相应地,根据API进程的进程标识ProcessID1实时对Android系统对应的虚拟机进行监控,当监控出虚拟机中开始运行API进程时,则判断出API进程被启动运行。
步骤202:根据API进程的进程标识在终端的内存中获取API进程对应的虚拟机实例;
例如,根据API进程的进程标识ProcessID1,从终端的内存中获取如表1所示的API进程对应的虚拟机实例。
步骤203:根据待拦截的第一API的标识信息从API进程对应的虚拟机实例中获取待拦截的第一API对应的代码指向地址,待拦截的第一API的标识信息包括待拦截的第一API所属类的类标识和待拦截的第一API的函数标识;
其中,技术人员事先配置待拦截的第一API的标识信息包括待拦截的第一API所属类的类标识和待拦截的第一API的函数标识。具体地,根据待拦截的第一API所属类的类标识,从API进程对应的虚拟机实例中获取待拦截的第一API所属类对应的类结构体,根据待拦截的第一API的函数标识从获取的类结构体中获取待拦截的第一API对应的函数结构体,从待拦截的第一API对应的函数结构体中获取待拦截的第一API对应的代码指向地址。
例如,在本实施例中,技术人员事先配置待拦截的第一API的标识信息包括待拦截的第一API所属的类的类标识ClassID1,以及待拦截的第一API的函数标识FunctionID1。
根据待拦截的第一API所属的类的类标识ClassID1,从如表1所示的API进程对应的虚拟机实例中获取待拦截的第一API所属的类对应的类结构体,根据待拦截的第一API的函数标识FunctionID1,从待拦截的第一API所属的类对应的类结构体中获取待拦截的第一API对应的函数结构体,从该函数结构体中获取待拦截的第一API对应的代码指向地址为Address1。
步骤204:在API进程对应的虚拟机实例中将待拦截的第一API的代码指向地址替换为已存储的第二API的代码指向地址。
其中,当API进程需要运行待拦截的第一API时,根据待拦截的第一API所属的类的类标识和待拦截的第一API的函数标识,从API进程对应的虚拟机实例中获取的代码指向地址为第二API的代码指向地址,如此使得API进程根据第二API的代码指向地址调用实现第二API的代码并运行实现第二API的代码,如此实现了对目标应用的功能进行修改或对目标应用的功能进行扩展。
例如,在如表1所示的API进程对应的虚拟机实例中,将待拦截的第一API的代码指向地址Address1替换为第二API的代码指向地址Address11,得到如表2所示的API进程对应的虚拟机实例。
表2
当API进程需要运行待拦截的第一API时,根据待拦截的第一API所属的类的类标识ClassID1和待拦截的第一API的函数标识FunctionID1,从如表2所示的虚拟机实例中获取的代码指向地址为Address11,如此使得API进程根据代码指向地址Address11调用实现第二API的代码并运行实现第二API的代码,如此实现了在拨打被叫号码时显示被叫所在地理位置。
在本发明实施例中,根据API进程的进程标识在Android系统对应的虚拟机中对API进程进行实时监控;如果监控出API进程被启动,则根据API进程的进程标识从内存中获取API进程对应的虚拟机实例;根据待拦截第一API的标识信息从API进程对应的虚拟机实例中将待拦截的第一API的代码指向地址替换为已存储的第二API对应的代码指向地址,实现拦截所述待拦截的第一API。如此用于运行目标应用的API进程会根据替换后的代码指向地址调用并运行第二API的实现代码,而第二API用于实现目标应用进行修改或扩展的功能,从而实现对目标应用功能进行修改或扩展。
实施例3
如图3所示,本发明实施例提供了一种API的拦截装置,包括:
监控模块301,用于根据API进程的进程标识在系统对应的虚拟机中对API进程进行实时监控;
获取模块302,用于当API进程被启动时,根据API进程的进程标识从内存中获取API进程对应的虚拟机实例;
拦截模块303,用于根据待拦截API的标识信息从API进程对应的虚拟机实例中将待拦截的采用第一计算机语言编写的第一API的代码指向地址替换为已存储的采用第二计算机语言编写的且与第一API相对应的第二API的代码指向地址,第二语言与第一代码相区别;
通过第二函数实现对API进程的控制。
其中,监控模块301,具体用于监控系统对应的虚拟机开始运行API进程的进程标识对应的API进程时,则监控出API进程被启动。
其中,待拦截的API的标识信息至少包括待拦截的API所属类的类标识和待拦截的API的函数标识。
其中,拦截模块303包括:
第一获取单元3031,用于根据该类标识,从API进程对应的虚拟机实例中获取待拦截的第一API所属的类对应的类结构体;
第二获取单元3032,用于根据待拦截的第一API的函数标识,从该类结构体中获取待拦截的第一API对应的函数结构体;
替换单元3033,用于将该函数结构体中存储的待拦截的第一API的代码指向地址替换为已存储的第二API的代码指向地址。
在本发明实施例中,根据API进程的进程标识在Android系统对应的虚拟机中对API进程进行实时监控;如果监控出API进程被启动,则根据API进程的进程标识从内存中获取API进程对应的虚拟机实例;根据待拦截第一API的标识信息从API进程对应的虚拟机实例中将待拦截的第一API的代码指向地址替换为已存储的第二API对应的代码指向地址,实现拦截所述待拦截的第一API。如此用于运行目标应用的API进程会根据替换后的代码指向地址调用并运行第二API的实现代码,而第二API用于实现目标应用进行修改或扩展的功能,从而实现对目标应用功能进行修改或扩展。
实施例4
本发明实施例提供了一种移动终端,包括实施例3所述的装置。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种应用程序编程接口API的拦截方法,其特征在于,所述方法包括:
根据API进程的进程标识在系统对应的虚拟机中对所述API进程进行实时监控;
当API进程被启动时,根据API进程的进程标识从内存中获取所述API进程对应的虚拟机实例;
根据待拦截API的标识信息从所述API进程对应的虚拟机实例中将所述待拦截的采用第一计算机语言编写的第一API的代码指向地址替换为已存储的采用第二计算机语言编写的且与第一API相对应的第二API的代码指向地址,代码指向地址对应一个存储空间,所述存储空间为终端磁盘中的空间,所述第二API用于实现修改后的步骤;
使所述API进程根据所述第二API的代码指向地址调用实现所述第二API的代码并运行实现所述第二API的代码;
通过第二函数实现对API进程的控制。
2.如权利要求1所述的方法,其特征在于,所述根据API进程的进程标识在系统对应的虚拟机中对所述API进程进行实时监控,包括:
监控系统对应的虚拟机开始运行所述API进程的进程标识对应的API进程时,则监控出所述API进程被启动。
3.如权利要求1所述的方法,其特征在于,所述待拦截的API的标识信息至少包括所述待拦截的API所属类的类标识和所述待拦截的API的函数标识。
4.如权利要求3所述的方法,其特征在于:所述根据待拦截API的标识信息从所述API进程对应的虚拟机实例中将所述待拦截的采用第一计算机语言编写的第一API的代码指向地址替换为已存储的采用第二计算机语言编写的且与第一API相对应的第二API的代码指向地址,包括:
根据所述类标识,从所述API进程对应的虚拟机实例中获取所述待拦截的第一API所属的类对应的类结构体;
根据所述待拦截的第一API的函数标识,从所述类结构体中获取所述待拦截的第一API对应的函数结构体;
将所述函数结构体中存储的所述待拦截的第一API的代码指向地址替换为已存储的第二API的代码指向地址。
5.如权利要求1至4任一项权利要求所述的方法,其特征在于,所述第二计算机语言为C语言或C++语言。
6.一种应用程序编程接口API的拦截装置,其特征在于,所述装置包括:
监控模块,用于根据API进程的进程标识在系统对应的虚拟机中对所述API进程进行实时监控;
获取模块,用于当API进程被启动时,根据API进程的进程标识从内存中获取所述API进程对应的虚拟机实例;
拦截模块,用于根据待拦截API的标识信息从所述API进程对应的虚拟机实例中将所述待拦截的采用第一计算机语言编写的第一API的代码指向地址替换为已存储的采用第二计算机语言编写的且与第一API相对应的第二API的代码指向地址,其中,代码指向地址对应一个存储空间,所述存储空间为终端磁盘中的空间,所述第二API用于实现修改后的步骤;使所述API进程根据所述第二API的代码指向地址调用实现所述第二API的代码并运行实现所述第二API的代码;
通过第二函数实现对API进程的控制。
7.如权利要求6所述的装置,其特征在于,所述监控模块,具体用于监控系统对应的虚拟机开始运行所述API进程的进程标识对应的API进程时,则监控出所述API进程被启动。
8.如权利要求6所述的装置,其特征在于,所述待拦截的API的标识信息至少包括所述待拦截的API所属类的类标识和所述待拦截的API的函数标识。
9.如权利要求8所述的装置,其特征在于,所述拦截模块包括:
第一获取单元,用于根据所述类标识,从所述API进程对应的虚拟机实例中获取所述待拦截的第一API所属的类对应的类结构体;
第二获取单元,用于根据所述待拦截的第一API的函数标识,从所述类结构体中获取所述待拦截的第一API对应的函数结构体;
替换单元,用于将所述函数结构体中存储的所述待拦截的第一API的代码指向地址替换为已存储的第二API的代码指向地址。
10.一种移动终端,其特征在于,包括权利要求6至9任一项权利要求所述的装置。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210252551.8A CN102855138B (zh) | 2012-07-20 | 2012-07-20 | 一种api的拦截方法、装置及移动终端 |
JP2015521964A JP5945074B2 (ja) | 2012-07-20 | 2013-07-18 | Apiインターセプト関連のアプリケーションのための方法、デバイス、およびモバイル端末 |
SG11201500252RA SG11201500252RA (en) | 2012-07-20 | 2013-07-18 | Method, device, and mobile terminal for api interception |
PCT/CN2013/079600 WO2014012504A1 (en) | 2012-07-20 | 2013-07-18 | Method, device, and mobile terminal for api interception |
US14/063,908 US8863157B2 (en) | 2012-07-20 | 2013-10-25 | Method, device, and mobile terminal for API interception |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210252551.8A CN102855138B (zh) | 2012-07-20 | 2012-07-20 | 一种api的拦截方法、装置及移动终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102855138A CN102855138A (zh) | 2013-01-02 |
CN102855138B true CN102855138B (zh) | 2015-12-09 |
Family
ID=47401749
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210252551.8A Active CN102855138B (zh) | 2012-07-20 | 2012-07-20 | 一种api的拦截方法、装置及移动终端 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8863157B2 (zh) |
JP (1) | JP5945074B2 (zh) |
CN (1) | CN102855138B (zh) |
SG (1) | SG11201500252RA (zh) |
WO (1) | WO2014012504A1 (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102855138B (zh) * | 2012-07-20 | 2015-12-09 | 腾讯科技(深圳)有限公司 | 一种api的拦截方法、装置及移动终端 |
CN103914637B (zh) * | 2013-01-07 | 2017-06-09 | 北京洋浦伟业科技发展有限公司 | 一种安卓平台的可执行程序加密方法 |
CN105893000A (zh) * | 2014-10-28 | 2016-08-24 | 北京确安科技股份有限公司 | 防止测试机系统时间被非法修改的方法 |
CN104462879B (zh) * | 2014-11-28 | 2018-04-17 | 北京奇虎科技有限公司 | 应用程序免Root运行控制方法与装置 |
CN104484176B (zh) * | 2014-12-16 | 2018-01-19 | 北京奇虎科技有限公司 | 一种安卓系统窗口对象获取方法和装置 |
US9582298B2 (en) | 2015-03-20 | 2017-02-28 | Amazon Technologies, Inc. | Executing commands within virtual machine instances |
EP3332321B1 (en) * | 2015-09-24 | 2023-06-07 | Hewlett Packard Enterprise Development LP | Process and thread launch features |
US10387209B2 (en) * | 2015-09-28 | 2019-08-20 | International Business Machines Corporation | Dynamic transparent provisioning of resources for application specific resources |
CN105653980B (zh) * | 2015-12-30 | 2019-06-11 | 福建联迪商用设备有限公司 | 一种虚拟内存数据的保护方法及其系统 |
CN105786524B (zh) * | 2016-03-23 | 2019-03-12 | 福建正孚软件有限公司 | 软件钩子设置方法及装置 |
CN106055385B (zh) * | 2016-06-06 | 2019-04-16 | 四川大学 | 监控虚拟机进程的系统和方法、过滤page fault异常的方法 |
US11916994B1 (en) * | 2016-12-15 | 2024-02-27 | Blue Yonder Group, Inc. | Extending RESTful web service resources in a JAVA-component-driven-architecture application |
CN106844148B (zh) * | 2016-12-30 | 2020-01-14 | 清华大学 | 一种虚拟机启动进度监控方法及装置 |
CN108959061B (zh) * | 2017-05-19 | 2023-04-25 | 腾讯科技(深圳)有限公司 | 应用功能管理方法、终端以及装置 |
CN109992328B (zh) * | 2019-03-14 | 2023-05-12 | 北京椒图科技有限公司 | 一种函数重定向方法及装置 |
CN112416470B (zh) * | 2019-08-22 | 2023-08-25 | 腾讯科技(深圳)有限公司 | 命令的执行方法和装置、存储介质及电子装置 |
JP7428973B2 (ja) * | 2020-09-28 | 2024-02-07 | 住友電装株式会社 | コネクタ |
CN114625434B (zh) * | 2020-12-10 | 2024-04-23 | 华为技术有限公司 | 地址获取方法和设备 |
CN113176926B (zh) * | 2021-04-06 | 2023-09-05 | 中国科学院信息工程研究所 | 一种基于虚拟机自省技术的api动态监控方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1617102A (zh) * | 2003-11-13 | 2005-05-18 | 华为技术有限公司 | 一种在Python中实现API钩子测试的方法 |
CN102147845A (zh) * | 2011-04-18 | 2011-08-10 | 北京思创银联科技股份有限公司 | 进程监控方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5974549A (en) * | 1997-03-27 | 1999-10-26 | Soliton Ltd. | Security monitor |
GB0017201D0 (en) * | 2000-07-14 | 2000-08-30 | Ibm | Generalised program hooks |
US7865528B2 (en) * | 2001-01-09 | 2011-01-04 | Nextair Corporation | Software, devices and methods facilitating execution of server-side applications at mobile devices |
US8490070B2 (en) * | 2005-11-16 | 2013-07-16 | Myriad Group Ag | Unified mobile platform |
CN102855138B (zh) * | 2012-07-20 | 2015-12-09 | 腾讯科技(深圳)有限公司 | 一种api的拦截方法、装置及移动终端 |
-
2012
- 2012-07-20 CN CN201210252551.8A patent/CN102855138B/zh active Active
-
2013
- 2013-07-18 JP JP2015521964A patent/JP5945074B2/ja active Active
- 2013-07-18 SG SG11201500252RA patent/SG11201500252RA/en unknown
- 2013-07-18 WO PCT/CN2013/079600 patent/WO2014012504A1/en active Application Filing
- 2013-10-25 US US14/063,908 patent/US8863157B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1617102A (zh) * | 2003-11-13 | 2005-05-18 | 华为技术有限公司 | 一种在Python中实现API钩子测试的方法 |
CN102147845A (zh) * | 2011-04-18 | 2011-08-10 | 北京思创银联科技股份有限公司 | 进程监控方法 |
Also Published As
Publication number | Publication date |
---|---|
JP5945074B2 (ja) | 2016-07-05 |
SG11201500252RA (en) | 2015-02-27 |
JP2015525931A (ja) | 2015-09-07 |
CN102855138A (zh) | 2013-01-02 |
US8863157B2 (en) | 2014-10-14 |
US20140053167A1 (en) | 2014-02-20 |
WO2014012504A1 (en) | 2014-01-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102855138B (zh) | 一种api的拦截方法、装置及移动终端 | |
CN109446570B (zh) | 业务流程展示方法、装置、计算机设备以及存储介质 | |
TW201818242A (zh) | 外掛程式化打包方法、裝置、終端及存儲介質 | |
CN104679532B (zh) | 内核模块加载方法和装置 | |
CN104267981A (zh) | 一种加载桌面上的应用布局的方法及装置 | |
CN101673204A (zh) | 一种基于arm的手机应用程序动态加载方法 | |
CN106326099B (zh) | 一种用于程序跟踪的方法、装置及电子设备 | |
CN105446739A (zh) | Ui界面设置方法及装置 | |
CN104063284B (zh) | 运行应用程序的方法和装置 | |
CN109165332A (zh) | 一种网页信息获取方法、装置以及设备 | |
CN104461621A (zh) | 一种更新属性信息的方法及装置 | |
CN102883309A (zh) | 机器到机器m2m通信方法及装置 | |
CN106980429B (zh) | 桌面图标的处理方法及移动终端 | |
CN105426192A (zh) | 信息修改方法及终端 | |
EP2450791B1 (en) | Method for updating media database in portable terminal | |
CN110362341A (zh) | 基于微服务架构的业务管理方法、装置、设备和存储介质 | |
KR102037556B1 (ko) | 무선 단말의 네트워크 업그레이드에 자가적응한 전화번호 업그레이드 방법 및 장치 | |
CN103516864B (zh) | 在移动终端中监控预设操作的方法和装置 | |
CN108009084B (zh) | 一种混合移动应用的测试方法、装置及系统 | |
CN104216839A (zh) | 一种信息交互的方法、装置及终端 | |
CN107291637A (zh) | 在安卓系统中兼容多型号移动通信模块的方法和装置 | |
CN109753293A (zh) | 一种插件的处理方法及相关设备 | |
CN110716914A (zh) | 数据库配置方法、系统、计算机可读存储介质及终端设备 | |
CN108984238A (zh) | 应用程序的手势处理方法、装置及电子设备 | |
CN112230945B (zh) | 提升设备兼容性的方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20200831 Address after: Shenzhen Futian District City, Guangdong province 518000 Zhenxing Road, SEG Science Park 2 East Room 403 Co-patentee after: TENCENT CLOUD COMPUTING (BEIJING) Co.,Ltd. Patentee after: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. Address before: 518000 Guangdong city of Shenzhen province Futian District SEG Science Park 2 East Room 403 Patentee before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. |