CN102855138A - 一种api的拦截方法、装置及移动终端 - Google Patents

一种api的拦截方法、装置及移动终端 Download PDF

Info

Publication number
CN102855138A
CN102855138A CN2012102525518A CN201210252551A CN102855138A CN 102855138 A CN102855138 A CN 102855138A CN 2012102525518 A CN2012102525518 A CN 2012102525518A CN 201210252551 A CN201210252551 A CN 201210252551A CN 102855138 A CN102855138 A CN 102855138A
Authority
CN
China
Prior art keywords
api
tackled
virtual machine
code
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.)
Granted
Application number
CN2012102525518A
Other languages
English (en)
Other versions
CN102855138B (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.)
Tencent Technology Shenzhen Co Ltd
Tencent Cloud Computing Beijing Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201210252551.8A priority Critical patent/CN102855138B/zh
Publication of CN102855138A publication Critical patent/CN102855138A/zh
Priority to JP2015521964A priority patent/JP5945074B2/ja
Priority to SG11201500252RA priority patent/SG11201500252RA/en
Priority to PCT/CN2013/079600 priority patent/WO2014012504A1/en
Priority to US14/063,908 priority patent/US8863157B2/en
Application granted granted Critical
Publication of CN102855138B publication Critical patent/CN102855138B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3089Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
    • G06F11/3093Configuration details thereof, e.g. installation, enabling, spatial arrangement of the probes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/006Identification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/815Virtual
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring 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的拦截方法、装置及移动终端
技术领域
本发明涉及移动终端领域,特别涉及一种API(Application ProgrammingInterface,应用程序编程接口)的拦截方法、装置及移动终端。
背景技术
随着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的代码指向地址。
所述第二计算机语言为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。
附图说明
图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为采用第一计算机语言编写的AI,第一计算机语言可以为Java语言。
其中,在本实施例中,技术人员可以事先开发出第二API,第二API可以实现修改后的步骤,然后通过本发明的方法来拦截用于运行该应用的进程调用待拦截的第一API,并使用于运行该应用的进程来调用技术人员开发的第二API,如此实现对该应用的功能进行修改或对该应用的功能进行扩展;其中,第二API为采用第二计算机语言编写的API,第二计算机语言为C语言或C++语言等。
其中,需要说明的是,运行在Android系统中的应用包括的类可以为Java类,以及类包括的API可以Java API。
实施例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
Figure BDA00001913146000071
其中,技术人员事先开发出一个第二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
Figure BDA00001913146000081
当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进程的控制。
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进程的控制。
7.如权利要求6所述的装置,其特征在于,所述监控模块,具体用于监控系统对应的虚拟机开始运行所述API进程的进程标识对应的API进程时,则监控出所述API进程被启动。
8.如权利要求6所述的装置,其特征在于,所述待拦截的API的标识信息至少包括所述待拦截的API所属类的类标识和所述待拦截的API的函数标识。
9.如权利要求8所述的装置,其特征在于,所述拦截模块包括:
第一获取单元,用于根据所述类标识,从所述API进程对应的虚拟机实例中获取所述待拦截的第一API所属的类对应的类结构体;
第二获取单元,用于根据所述待拦截的第一API的函数标识,从所述类结构体中获取所述待拦截的第一API对应的函数结构体;
替换单元,用于将所述函数结构体中存储的所述待拦截的第一API的代码指向地址替换为已存储的第二API的代码指向地址。
10.一种移动终端,其特征在于,包括权利要求6至9任一项权利要求所述的装置。
CN201210252551.8A 2012-07-20 2012-07-20 一种api的拦截方法、装置及移动终端 Active CN102855138B (zh)

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 true CN102855138A (zh) 2013-01-02
CN102855138B 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)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014012504A1 (en) * 2012-07-20 2014-01-23 Tencent Technology (Shenzhen) Company Limited Method, device, and mobile terminal for api interception
CN104462879A (zh) * 2014-11-28 2015-03-25 北京奇虎科技有限公司 应用程序免Root运行控制方法与装置
CN104484176A (zh) * 2014-12-16 2015-04-01 北京奇虎科技有限公司 一种安卓系统窗口对象获取方法和装置
CN105786524A (zh) * 2016-03-23 2016-07-20 福建正孚软件有限公司 软件钩子设置方法及装置
CN105893000A (zh) * 2014-10-28 2016-08-24 北京确安科技股份有限公司 防止测试机系统时间被非法修改的方法
CN103914637B (zh) * 2013-01-07 2017-06-09 北京洋浦伟业科技发展有限公司 一种安卓平台的可执行程序加密方法
WO2017113781A1 (zh) * 2015-12-30 2017-07-06 福建联迪商用设备有限公司 一种虚拟内存数据的保护方法及其系统
CN107408064A (zh) * 2015-03-20 2017-11-28 亚马逊技术股份有限公司 在虚拟机实例内执行命令
CN108027740A (zh) * 2015-09-24 2018-05-11 慧与发展有限责任合伙企业 进程和线程启动特征
CN108959061A (zh) * 2017-05-19 2018-12-07 腾讯科技(深圳)有限公司 应用功能管理方法、终端以及装置
CN109992328A (zh) * 2019-03-14 2019-07-09 北京椒图科技有限公司 一种函数重定向方法及装置

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10387209B2 (en) * 2015-09-28 2019-08-20 International Business Machines Corporation Dynamic transparent provisioning of resources for application specific resources
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 清华大学 一种虚拟机启动进度监控方法及装置
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 (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020029374A1 (en) * 2000-07-14 2002-03-07 Moore Richard John Generalised program hooks
CN1617102A (zh) * 2003-11-13 2005-05-18 华为技术有限公司 一种在Python中实现API钩子测试的方法
CN102147845A (zh) * 2011-04-18 2011-08-10 北京思创银联科技股份有限公司 进程监控方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5974549A (en) * 1997-03-27 1999-10-26 Soliton Ltd. Security monitor
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的拦截方法、装置及移动终端

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020029374A1 (en) * 2000-07-14 2002-03-07 Moore Richard John Generalised program hooks
CN1617102A (zh) * 2003-11-13 2005-05-18 华为技术有限公司 一种在Python中实现API钩子测试的方法
CN102147845A (zh) * 2011-04-18 2011-08-10 北京思创银联科技股份有限公司 进程监控方法

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014012504A1 (en) * 2012-07-20 2014-01-23 Tencent Technology (Shenzhen) Company Limited Method, device, and mobile terminal for api interception
CN103914637B (zh) * 2013-01-07 2017-06-09 北京洋浦伟业科技发展有限公司 一种安卓平台的可执行程序加密方法
CN105893000A (zh) * 2014-10-28 2016-08-24 北京确安科技股份有限公司 防止测试机系统时间被非法修改的方法
CN104462879A (zh) * 2014-11-28 2015-03-25 北京奇虎科技有限公司 应用程序免Root运行控制方法与装置
CN104462879B (zh) * 2014-11-28 2018-04-17 北京奇虎科技有限公司 应用程序免Root运行控制方法与装置
CN104484176B (zh) * 2014-12-16 2018-01-19 北京奇虎科技有限公司 一种安卓系统窗口对象获取方法和装置
CN104484176A (zh) * 2014-12-16 2015-04-01 北京奇虎科技有限公司 一种安卓系统窗口对象获取方法和装置
CN107408064A (zh) * 2015-03-20 2017-11-28 亚马逊技术股份有限公司 在虚拟机实例内执行命令
US10768955B1 (en) 2015-03-20 2020-09-08 Amazon Technologies, Inc. Executing commands within virtual machine instances
CN107408064B (zh) * 2015-03-20 2020-10-30 亚马逊技术股份有限公司 在虚拟机实例内执行命令的方法和用于实施该方法的系统
CN108027740A (zh) * 2015-09-24 2018-05-11 慧与发展有限责任合伙企业 进程和线程启动特征
US11334368B2 (en) 2015-09-24 2022-05-17 Hewlett Packard Enterprise Development Lp Process and thread launch features
WO2017113781A1 (zh) * 2015-12-30 2017-07-06 福建联迪商用设备有限公司 一种虚拟内存数据的保护方法及其系统
CN105786524A (zh) * 2016-03-23 2016-07-20 福建正孚软件有限公司 软件钩子设置方法及装置
CN105786524B (zh) * 2016-03-23 2019-03-12 福建正孚软件有限公司 软件钩子设置方法及装置
CN108959061A (zh) * 2017-05-19 2018-12-07 腾讯科技(深圳)有限公司 应用功能管理方法、终端以及装置
CN109992328A (zh) * 2019-03-14 2019-07-09 北京椒图科技有限公司 一种函数重定向方法及装置

Also Published As

Publication number Publication date
JP5945074B2 (ja) 2016-07-05
SG11201500252RA (en) 2015-02-27
CN102855138B (zh) 2015-12-09
JP2015525931A (ja) 2015-09-07
US8863157B2 (en) 2014-10-14
US20140053167A1 (en) 2014-02-20
WO2014012504A1 (en) 2014-01-23

Similar Documents

Publication Publication Date Title
CN102855138A (zh) 一种api的拦截方法、装置及移动终端
CN109446570B (zh) 业务流程展示方法、装置、计算机设备以及存储介质
CN104636147A (zh) 一种跨平台移动应用的实现方法和系统
CN104281478B (zh) 更新应用程序的方法及装置
CN104267981A (zh) 一种加载桌面上的应用布局的方法及装置
CN115809139A (zh) 内存管理的方法及电子设备
CN103294335A (zh) 用于创建快键菜单的设备和方法
WO2021110133A1 (zh) 一种控件的操作方法及电子设备
CN101645020A (zh) 虚拟操作系统创建方法
KR102586628B1 (ko) 전자 장치 및 전자 장치의 메모리 관리 방법
CN107102853B (zh) 一种定制化移动操作系统兼容Android应用的方法
CN107526605A (zh) 实现应用程序加载服务组件的方法和装置
CN102855648A (zh) 一种图像处理方法及装置
CN102169447B (zh) 一种自定义外壳程序的注册、注销方法及相应的系统
CN102129369A (zh) 在Android手机上整合TinxX图形界面的方法
EP2450791B1 (en) Method for updating media database in portable terminal
CN103902890A (zh) 一种Android程序行为的监控方法及监控系统
CN102883309A (zh) 机器到机器m2m通信方法及装置
KR20160016405A (ko) 데이터 처리 방법 및 그 전자 장치
CN104216839A (zh) 一种信息交互的方法、装置及终端
CN110716914A (zh) 数据库配置方法、系统、计算机可读存储介质及终端设备
CN103077016B (zh) 一种活动对象创建方法、装置及浏览器
CN108009084B (zh) 一种混合移动应用的测试方法、装置及系统
CN108984238A (zh) 应用程序的手势处理方法、装置及电子设备
CN111897726B (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

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.

TR01 Transfer of patent right