CN105164644A - 钩子框架 - Google Patents

钩子框架 Download PDF

Info

Publication number
CN105164644A
CN105164644A CN201380076118.6A CN201380076118A CN105164644A CN 105164644 A CN105164644 A CN 105164644A CN 201380076118 A CN201380076118 A CN 201380076118A CN 105164644 A CN105164644 A CN 105164644A
Authority
CN
China
Prior art keywords
virtual machine
application
hook
instruction
framework
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
CN201380076118.6A
Other languages
English (en)
Other versions
CN105164644B (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.)
Weifosi Co., Ltd
Original Assignee
Hewlett Packard Development Co LP
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 Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of CN105164644A publication Critical patent/CN105164644A/zh
Application granted granted Critical
Publication of CN105164644B publication Critical patent/CN105164644B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/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
    • 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/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • G06F9/4552Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • 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/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons
    • 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/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45529Embedded in an application, e.g. JavaScript in a Web browser
    • 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/45545Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
    • 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/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3013Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is an embedded system, i.e. a combination of hardware and software dedicated to perform a certain function in mobile devices, printers, automotive or aircraft systems
    • 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)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)

Abstract

可以基于初始化指令执行应用进程,其中该应用进程包括与钩子框架相关联的指令。可以启动一虚拟机,该虚拟机被配置为基于包括在该应用进程中的指令在该虚拟机上装载钩子框架,并且可以在虚拟机启动时执行与钩子框架相关联的指令,以在虚拟机上插入钩子。可以基于装载应用的请求而启动被配置为启动附加虚拟机的新生进程,其中该附加虚拟机经由被插入在虚拟机上的钩子被钩住。

Description

钩子框架
背景技术
应用可以是能够促使计算设备执行特定功能的可执行指令的集合。计算设备可以包括移动电话(例如,智能电话),其可以具有能够运行各种应用的各种操作系统(OS)(例如,移动OS)。例如,应用可以包括游戏应用、导航应用、照相机应用,等等。能够针对每个相应OS来开发应用。
附图说明
图1图示出根据本公开、用于实施钩子框架的环境的示例。
图2A图示出根据本公开、用于实施钩子框架的流程图的示例。
图2B图示出根据本公开、用于实施用于特定操作系统的钩子框架的流程图的示例。
图3A图示出根据本公开、用于实施钩子框架的系统的示例的图。
图3B图示出根据本公开、用于实施钩子框架的计算设备的示例的图。
图4图示出根据本公开、用于实施钩子框架的方法的示例的流程图。
具体实施方式
移动式应用(例如,被配置用于移动设备的应用)开发是通过不断增长的数量的移动设备和与那些设备相关联的能力所激励的不断增长的实践。部分地由于与移动设备相关联的能力的增加,依靠设备特征和/或嵌入客户端逻辑(例如,JavaScript),应用已经变得越来越尖端。为了支持此类应用的开发,可能有益的是,提供可以与和移动设备相关联的特定操作系统(OS)集成的开发工具。例如,可能有益的是,与低层级接口中的特定OS集成,使得能够使用诸如测试工具、记录工具、监测工具等等的应用开发工具。也能够在消费者应用软件和/或企业应用软件中使用此类低层级OS交互,以便例如实现诸如根据企业策略保证设备安全的目标。
一些先前的方法通过钩子允许低层级OS交互。钩子可以包括修改应用的行为和/或通过截获在软件组件之间传递的数据来收集与应用相关联的数据。例如,钩子可指监测、改变,和/或以另外方式取得对应用的控制的各种技术。例如,可以通过钩子来截获和/或复制传递到和/或来自于应用的函数调用、消息,和/或网络业务。钩住应用例如可以包括在应用执行之前将包括可执行的钩子指令的库注入到应用中,和/或在OS的运行时间期间和/或在应用的功能的执行期间将可执行的钩子指令注入到应用中。这些先前的方法能够被用于实施虚拟机的OS。例如,这些方法能够被用于LinuxOS和/或用于实施Java虚拟机(JVM)(例如,能够执行Java字节码的机器)的基于Java的OS。
然而,不能使用用于基于Linux和/或基于Java的OS的先前的方法来钩住诸如安卓OS之类的一些移动OS。例如,一些移动OS不包括用于钩住的应用编程接口,并且因为此类移动OS的启动序列不允许只读存储器(ROM)的改变,所以对于LinuxOS进行钩住的先前方法行不通。
此外,不可能使用用于基于Java的OS的先前方法钩住一些移动OS。在一示例中,能够使用类装载器钩住JVM。然而,其他移动OS(例如,安卓OS)以及它们相关联的虚拟机(例如,安卓Dalvik虚拟机(DVM))不支持类装载器的使用,并且因此不能使用该方法被钩住。
此外,能够证明对于钩住一些移动OS,其他先前的方法是不足的。例如,先前的方法能够模拟驱动层。然而,在一些移动OS中,驱动器是ROM相关的,并且在没有更换ROM的全部内核的情况下不能被更换,使该方法不切实际。其他先前的方法改变包装库层。然而,这在其中库文件(例如,“.so”文件)被预链接在ROM编译上的一些移动OS上可能是不实用的。照此,可以不装载原始库。
例如,先前的方法能够修改“.Jar”文件,“.jar”文件能够被定义为用于将Java“.class”文件和/或相关联的元数据聚合到一个文件中以在基于Java的OS上分配应用软件和/或库的档案文件格式。修改“.jar”文件可能牵涉提取“.jar”文件、手工地编辑“.smali”文件(例如,安卓的相当于字节码“.class”文件),并且再装载修改的“.jar”文件。然而,该方法可能较复杂、难维护,并且可能限制处理字节码。此外,该方法可能不支持使用JNI的修改方法,JNI是能够使在JVM中运行的Java指令能够调用以诸如C、C++和/或汇编之类的其他语言编写的本地应用和库和/或被其调用的编程框架。
相比之下,本公开的示例可以包括修改负责启动虚拟机(例如,DVM)、预装载由应用使用的系统类和/或启动其他进程的应用进程。本公开的示例能够修改应用进程以包括钩子框架,该钩子框架在虚拟机启动时能够被执行并且能够在虚拟机上插入钩子以经由钩子访问与应用相关联的数据。
图1图示出根据本公开、用于实施钩子框架的环境的示例。环境100被示为包括实施钩子框架的系统104、移动设备102-1、102-2、......、102-N、用户设备110-1、110-2、......、110-P、数据存贮器108,和链路106。数据存贮器108能够与参考图3A讨论的那些相似。系统104能够包括与参考图3B讨论的计算设备相似的计算设备。在本文所描述的移动设备102-1、......、102-N可以是计算设备(例如,电子设备)。
用户设备110-1、......、110-P可表示如下计算设备,其被配置为访问与在移动设备102-1、......、102-N上已经装载和/或在定义的时间内将装载的应用相关联的数据(例如,电子数据)以传递这样的数据,和/或通过执行指令来改变该应用。用户设备110-1、......、110-P可以包括诸如图形用户界面(GUI)112的数字显示器。类似地,在一些示例中,移动设备102-1、......、102-N可以包括适于显示电子数据的数字显示器(未示出)。
用户接口可以包括硬件组件和/或计算机可读指令组件。例如,硬件组件可以包括输入组件(例如,鼠标、触摸屏,和键盘)和/或输出组件(例如,显示器)。示例性用户接口可以包括GUI112。GUI112例如能够数字地表示与经由钩子收集的应用相关联的数据。也就是说,在一些示例中,能够通过用户设备110-1、......、110-P的用户接口来显示电子表示。此类显示器能够促进用户与计算机之间的交互(例如,允许用户使用图像和/或文本与计算机交互)。
链路106(例如,网络)表示电缆、无线、光纤,或经由远程通信链路的远程连接、红外线链路、射频链路,和/或提供电子通信的其他连接器或系统。也就是说,链路106例如可以包括到内部网、因特网、或者两者的组合的链路,等等其他通信接口。链路106也可以包括中间代理(例如,中间代理服务器(未示出))、路由器、交换机、负载平衡器,等等。
在本文所描述的用于实施钩子框架的系统104能够表示实施钩子框架的硬件和指令的不同组合。用于实施钩子框架的系统104可以包括计算设备,例如,关于图3B所讨论的计算设备348。
图2A图示出根据本公开、用于实施钩子框架的流程图的示例。例如,流程图能够图示出诸如包括移动OS的移动设备之类的移动设备的开启。在开启移动设备时,能够解释初始化指令216。初始化指令216可以是在移动设备的开启期间启动的第一进程,并且能够负责提供启动虚拟机222和新生进程218的指令,如在本文讨论的。
在移动OS的正常(例如,未修改的)开启中,初始化指令216能够启动新生进程218和虚拟机222。新生进程218能够被定义为开始进程。例如,新生进程218可以是在移动OS的开启中启动的第一进程。在一些示例中,新生进程218可以负责预装载可由运行在移动设备上的应用使用的系统类。例如,新生进程218能够负责开始与应用相关联的进程。新生进程218可以在虚拟机222上运行。在一些示例中,新生进程218可以被配置为装载应用。例如,新生进程218可以启动虚拟机222的一个或多个实例,并且新生进程218可以在虚拟机222上运行应用。
在一些示例中,对于所装载的每个应用,可以启动虚拟机222的实例。例如,新生进程218可以复制虚拟机222,以在复制的虚拟机上运行应用。虚拟机222可以访问包含用于在虚拟机222上运行的应用的指令的应用软件(例如,系统库)。
可以修改和/或更换初始化指令216,以包括与钩子框架相关联的指令。可以在虚拟机222启动时执行与钩子框架相关联的指令,以形成钩子框架220。例如,新生进程218可以基于装载应用的请求启动附加虚拟机,如在本文讨论的。在本公开的一些示例中,可以经由插入在虚拟机222上的钩子钩住附加虚拟机。照此,可以利用钩子来监测、改变和/或以另外方式取得对在附加虚拟机上运行的应用的控制。
在附加虚拟机上运行的应用可以访问与传感器服务相关联的传感器数据。例如,与电力管理服务相关联的应用可以访问与包括在传感器服务中的电力管理器传感器(例如,电压传感器)相关联的数据。照此,插入在虚拟机222上的钩子可以收集从包括在传感器服务中的电力管理器传感器传递到在附加虚拟机上运行的应用的数据。在一些示例中,所收集的数据可以用于保证应用如预期那样处理数据和/或调试未正确地处理数据的应用。替换地,可以在将数据传递到应用之前修改数据。
图2B图示出根据本公开、用于实施用于特定OS的钩子框架的流程图的示例。例如,流程图可以图示出诸如包括特定移动OS(诸如安卓OS)的移动设备之类的移动设备的开启。在移动设备开启时,可以解释初始化指令216,在安卓OS中该初始化指令216可以作为“init.rc”被引用。初始化指令216可以是在移动设备的开启期间启动的第一进程,并且可以负责提供执行应用进程224的指令。在一示例中,应用进程224可以是负责启动虚拟机222和新生进程218的主要进程,如在本文讨论的。
在移动OS的正常(例如,未修改的)开启中,在安卓OS中可以作为“app_process”被引用的应用进程224可以启动新生进程218和虚拟机222。新生进程218可以负责预装载可由运行在移动设备上的应用226(例如,App-1、App-2、App-r)使用的系统类。例如,可以在安卓OS中将新生进程218作为“Zygote”来引用,并且新生进程218可以负责开启与应用226相关联的进程和/或与应用226相关联的传感器服务228。新生进程218可以在虚拟机222上运行,其在安卓OS中可以作为DVM被引用。
新生进程218可以被配置为装载应用,在这种情况下,新生进程218被配置为基于装载应用的请求启动附加虚拟机。附加虚拟机可以是虚拟机222的副本。例如,可以由新生进程218启动虚拟机222的一个或多个实例。在一些示例中,对于所装载的每个应用,可以由新生进程218启动虚拟机222的附加实例。
附加虚拟机可以访问包含用于由附加机器装载的应用226的指令的应用软件(例如,系统库)。照此,可以由虚拟机执行与由虚拟机装载的应用226相关联的指令。
可以修改和/或更换应用进程224,以包括与钩子框架220相关联的指令。可以在虚拟机222启动时执行与钩子框架220相关联的指令,以形成钩子框架220。例如,可以在虚拟机222启动时执行与钩子框架220相关联的指令,以在虚拟机222上插入钩子。
新生进程218可以基于装载应用的请求启动附加虚拟机,如在本文讨论的。在本公开的一些示例中,可以经由插入在虚拟机222上的钩子钩住附加虚拟机。照此,可以利用钩子来监测、改变和/或以另外方式取得由附加虚拟机装载的应用226的控制。
应用226可以访问与传感器服务228相关联的传感器数据。例如,与电力管理服务相关联的应用可以访问与包括在传感器服务228中的电力管理器传感器(例如,电压传感器)相关联的数据。照此,插入在虚拟机222上的钩子可以收集从包括在传感器服务228中的电力管理器传感器传递到应用226的数据。
在一些示例中,传感器服务228可以包括网络连接性传感器(例如,与WiFi服务相关联的WiFi传感器、与蓝牙服务相关联的蓝牙传感器)、与电力管理服务相关联的电气传感器(例如,电流传感器),等等。在一些示例中,传感器服务228可以包括加速度计传感器、功率传感器、全球定位系统(GPS)传感器、陀螺传感器,等等。
在一些示例中,所收集的数据可以用于保证应用如预期那样处理数据和/或调试未正确地处理数据的应用。替换地,可以在将数据传递到应用226之前修改数据。
图3A图示出根据本公开、用于实施钩子框架的系统332的示例的图。系统332可以包括数据存贮器308(例如,与关于图1所讨论的数据存贮器108相似)、实施系统334,和/或若干引擎。实施系统334可以与数据存贮器308进行通信。在一些示例中,实施系统334可以包括若干引擎(例如,解释引擎336、执行进程引擎338、启动机器引擎340、执行指令引擎342、启动进程引擎344,等等)。与图示出的执行各种功能的引擎相比,实施系统334可以包括附加的或更少的引擎。
解释引擎334可以包括硬件和/或硬件和编程的组合,用于解释初始化指令。在一示例中,初始化指令可以提供用于应用进程的执行的指令。
执行进程引擎338可以包括硬件和/或硬件和编程的组合,用于基于初始化指令来执行应用进程。在一些示例中,应用进程可以包括与钩子框架相关联的指令。钩子框架可以包括插入钩子的指令。
启动机器引擎340可以包括硬件和/或硬件和编程的组合,用于启动被配置为基于包括在应用进程中的指令装载钩子框架的虚拟机。例如,在安卓OS中,虚拟机作为DVM(其是JVM的实施方式)被引用,并且被设计为在使用安卓OS的移动设备上运行。钩子框架可以包括可被执行以插入钩子的指令。
执行指令引擎342可以包括硬件和/或硬件和编程的组合,用于在虚拟机启动时执行与钩子框架相关联的指令以在虚拟机上插入来自钩子框架的钩子。如在本文讨论的,随着应用被装载,可以复制虚拟机,以启动可运行应用的附加虚拟机。照此,插入在虚拟机上的钩子可以收集与在附加虚拟机上运行的应用相关联的数据。替换地,因为复制虚拟机来创建附加虚拟机,所以附加虚拟机也可以包括能够收集与在附加虚拟机上运行的应用相关联的数据的钩子。
启动进程引擎344可以包括硬件和/或硬件和编程的组合,用于启动被配置为基于装载应用的请求启动附加虚拟机的新生进程。例如,虚拟机可以运行新生进程,并且附加虚拟机可以运行应用。照此,可以由虚拟机上的钩子和/或附加虚拟机上的钩子来访问由应用从软件组件(例如,应用软件)和/或传感器请求的数据。
在一些示例中,可以在虚拟机被启动之后且在新生进程被启动之前,执行钩子框架。照此,钩子框架可以访问与应用相关联的从应用软件和/或传感器传递到在附加虚拟机上执行的应用的数据。
在一些示例中,在导航应用开启时,应用就可以访问应用软件,可以在附加虚拟机上执行该应用软件,以装载导航应用和/或执行与导航应用相关联的功能。另外,导航应用可以访问能够被传递到附加虚拟机的、与GPS传感器相关联的传感器数据。导航应用可以使用传感器数据,以例如确定导航应用所装载在其上的移动设备的位置。另外,导航应用可以访问与WiFi传感器相关联的传感器数据,以下载也可被传递到附加虚拟机的、到目的地的地图、方向,和/或与交通相关联的数据。照此,可以将应用软件、与GPS传感器相关联的传感器数据以及与WiFi传感器相关联的传感器数据都传递到附加虚拟机。
如在本文讨论的,因为在新生进程与虚拟机之间安置钩子,所以钩子可以被提供有对与应用相关联的从应用软件和/或传感器传递到在附加虚拟机上执行的应用的数据的访问。在一示例中,钩子可以被配置为收集与应用相关联的从应用软件和/或传感器传递到在附加虚拟机上执行的应用的数据。例如,钩子可以包括可被注入到与移动设备相关联的OS中的指令,使得能够进行利用钩子对应用进行应用记录、应用拦截、应用中断、应用监测,等等。
在一示例中,可以截获由与传感器相关联的应用进行的库函数调用,以记录传感器向应用发送和/或从应用接收的数据。记录指的是存储数据。可以将记录的数据和与其相关联的信息(例如,元数据)一起存储。这样的信息可以包括传感数据的生成时间、与传感器数据相关联的应用的标识、提示要生成传感器数据的应用功能,和/或捕捉数据的传感器的标识,等等。这样的信息可以被存储在数据存贮器(例如,关于图1所讨论的数据存贮器108)中。对于希望调试应用(例如,现场环境中的应用)的应用开发者而言,此类钩子可能是有用的。
在一示例中,因为钩子提供对传递到和/或来自于应用的数据的访问,所以可以执行应用拦截。应用拦截可以包括控制应用。在一示例中,应用可以基于可从系统库中获取的应用软件执行功能。应用拦截例如可以包括经由钩子旁路系统库和向应用传递指令以提示应用执行特定功能。
在一示例中,应用中断可以被定义为发布使与应用相关联的操作中断的指令。可以通过经由钩子发布指令来执行应用中断,以中断与应用相关联的操作。例如,可以停止运行的应用,其可以允许对应用进行分析和/或调试。
在一些示例中,应用监测可以包括经由钩子提供与应用的操作相关联的详情。例如,可以经由钩子监测与和应用相关联的中央处理单元(CPU)利用率、存储器需求、数据吞吐量,和/或带宽相关联的详情。可以经由用户设备访问和监测与应用的操作相关联的详情,如关于图1所讨论的。
可以收集与已经装载的应用相关联的数据。例如,可以收集与当前运行的应用相关联的数据。替换地,可以经由钩子收集与将在定义的时间内装载的应用相关联的数据。例如,可以收集与当前没有运行但是将在将来运行的应用相关联的数据。
可以将应用装载在虚拟机的其自己的实例上。照此,基于装载附加应用的请求,可以启动附加虚拟机,并且可以经由钩子钩住附加虚拟机,以收集与应用相关联的数据。如在本文讨论的,可以由新生进程复制虚拟机,以创建附加虚拟机。通过利用新生进程复制虚拟机以创建附加虚拟机,钩住附加虚拟机,这是因为钩子已经被插入虚拟机中并且可以访问通过新生进程传递到附加虚拟机的数据。这可以使能够进行与应用相关联的数据的记录、拦截、中断、监测,等等。
图3B图示出根据本公开、用于实施钩子框架的计算设备的示例的图。计算设备348可以利用软件、硬件、固件和/或逻辑来执行在本文描述的若干功能。
计算设备348可以是用于共享信息的硬件和指令的组合。硬件例如可以包括处理资源350和/或存储器资源352(例如,计算机可读介质(CRM)、数据库,等等)。如在本文所使用的,处理资源350可以包括能够执行由存储器资源352存储的指令的若干处理器。可以将处理资源350集成在单个设备中或将其分布在多个设备上。指令(例如,计算机可读指令(CRI))可以包括存储在存储器资源352上并且可由处理资源350执行以实施特定功能(例如,实施钩子框架,等等)的指令。
存储器资源352可以与处理资源350进行通信。如在本文所使用的,存储器资源352可以包括能够存储可由处理资源350执行的指令的若干存储器组件。此类存储器资源352可以是非临时性CRM。可以将存储器资源352集成在单个设备中或将其分布在多个设备上。另外,存储器资源352可以全部地或部分地集成到与处理资源350相同的设备中,或其能够相对该设备和处理资源350是分离的但是可访问的。因而,请注意,可以在用户设备和/或用户设备的集合上、在移动设备和/或移动设备的集合上,和/或在用户设备和移动设备的组合上实施计算设备348。
存储器资源352可以经由通信链路354(例如,路径)与处理资源350进行通信。通信链路354对于与处理资源350相关联的计算设备可以是本地的或远程的。本地通信链路354的示例可以包括计算设备内部的电子总线,其中存储器资源352是经由电子总线与处理资源350进行通信的易失性、非易失性、固定和/或可移动的存贮介质之一。
存储器资源352可以包括若干模块,诸如执行进程模块358、启动机器模块360、执行指令模块362,和启动进程模块364。若干模块358、360、362、364可以包括当由处理资源350执行时能够执行若干功能的CRI。若干模块358、360、362、364可以是其他模块的子模块。例如,执行进程模块358和启动机器模块360可以是子模块和/或被包含在相同的计算设备内。在另一个示例中,若干模块358、360、362、364可以包括位于分离且不同的位置处的单独模块(例如,CRM,等等)。
若干模块358、360、362、364中的每一个可以包括当由处理资源350执行时能够充当在本文所描述的对应引擎的指令。在另一个示例中,启动进程模块364可以包括当由处理资源350执行时能够充当启动进程引擎344的指令。例如,启动进程模块364可以包括CRI,当该CRI由处理资源350执行时能够自动地促使用户设备启动被配置为基于装载应用的请求启动附加虚拟机的新生进程。
图4图示出根据本公开、用于实施钩子框架的方法的示例的流程图。该方法可以包括解释468与移动设备的开启相关联的初始化指令,如在本文讨论的。该方法可以包括基于初始化指令执行470应用进程。例如,应用进程可以包括与钩子框架相关联的指令。例如,与钩子框架相关联的指令可以包括与插入钩子相关联的指令,如在本文讨论的。
该方法可以包括启动472一虚拟机,该虚拟机被配置为基于包括在应用进程中的指令在该虚拟机上装载钩子框架。在一些示例中,虚拟机可以被配置为执行与钩子框架相关联的指令,以在虚拟机上装载钩子框架。
该方法可以包括在虚拟机启动时执行474与钩子框架相关联的指令,以在虚拟机上插入来自钩子框架的钩子。该方法可以包括启动476被配置为基于装载应用的请求而启动附加虚拟机的新生进程。可以经由钩子钩住附加虚拟机,以收集与应用相关联的传感器数据。例如,钩子可以收集与应用相关联的传感器数据。传感器数据例如可以包括与诸如GPS传感器和/或陀螺传感器之类的传感器相关联的数据。
新生进程可以负责预装载能够由在移动设备上运行的应用使用的系统类。例如,新生进程能够基于装载应用的请求而启动附加虚拟机。例如,可以由新生进程对于被装载的每个附加应用启动附加虚拟机。附加虚拟机可以是虚拟机的副本,并且因此也可以被钩住,提供对与在附加虚拟机上运行的应用相关联的数据的访问。
该方法可以包括经由钩子更换与应用相关联的指令。钩子可以位于虚拟机上,创建虚拟机与新生进程之间的通过其可以传递应用软件(例如,指令)的接入点。照此,可以经由钩子截获、改变和/或更换通过新生进程向附加虚拟机传递以供附加虚拟机执行的指令。然后,可以由运行应用的虚拟机执行改变的和/或更换的指令,以例如改变应用的行为。
在一些示例中,可以在虚拟机被启动之后且在新生进程被启动之前,执行与钩子框架相关联的指令。通过以该次序执行指令,可以在新生进程和虚拟机之间安装钩子框架。照此,钩子框架可以截获传递到和/或来自于在附加虚拟机上运行的应用的、与应用软件和/或传感器相关联的数据。
如在本文使用的,“逻辑”是执行在本文描述的动作和/或功能等等的替换或附加的处理资源,其包括硬件(例如,各种形式的晶体管逻辑、专用集成电路(ASIC),等等),与存储在存储器中并且可由处理资源执行的计算机可执行指令(例如,软件、固件,等等)相反。
本文的图遵循编号规定,其中第一数字(一个或多个)对应于绘图图号,并且剩余的数字识别图中的元件或组件。可以通过使用类似的数字来识别不同的图之间的类似的元件或组件。例如,108可以引用图1中的元件“08”,并且在图3中类似的元件可以被引用为308。
说明书示例提供对本公开的系统和方法的应用以及使用的描述。因为可以在不背离本公开的系统和方法的精神和范围的情况下作出许多示例,因此本说明书阐述若干可能的示例配置以及实施方式中的一些。

Claims (15)

1.一种非临时性计算机可读介质,用于存储由处理资源可执行以进行以下操作的指令集:
基于初始化指令执行应用进程,其中所述应用进程包括与钩子框架相关联的指令;
启动一虚拟机,所述虚拟机被配置为基于包括在所述应用进程中的指令在所述虚拟机上装载所述钩子框架;
在所述虚拟机启动时执行与所述钩子框架相关联的指令,以在所述虚拟机上插入钩子;以及
启动被配置为基于装载应用的请求而启动附加虚拟机的新生进程,其中所述附加虚拟机经由被插入在所述虚拟机上的钩子被钩住。
2.根据权利要求1所述的介质,其中指令是可执行的,以促使所述钩子收集与已经装载的应用相关联的数据。
3.根据权利要求1所述的介质,其中指令是可执行的,以促使所述钩子收集与将在定义的时间内装载的应用相关联的数据。
4.根据权利要求3所述的介质,其中指令是可执行的,以截获由所述虚拟机装载的应用所进行的库函数调用。
5.根据权利要求1所述的介质,其中与所述钩子框架相关联的指令在所述虚拟机被启动之后且在所述新生进程被启动之前是可执行的。
6.根据权利要求5所述的介质,其中基于装载应用的附加请求而装载的附加虚拟机经由被插入在所述虚拟机上的钩子被钩住。
7.根据权利要求1所述的介质,其中指令是可执行的,以经由所述钩子监测与所述应用相关联的中央处理单元利用率、存储器需求、数据吞吐量和带宽中的至少一个。
8.根据权利要求1所述的介质,其中指令是可执行的,以经由所述钩子执行应用中断。
9.一种系统,包括与非临时性计算机可读介质进行通信的处理资源,所述非临时性计算机可读介质具有所述处理资源可执行以实施解释引擎、执行进程引擎、启动机器引擎、执行指令引擎以及启动进程引擎的指令,其中:
所述解释引擎用于解释初始化指令;
所述执行进程引擎用于基于所述初始化指令执行所述应用进程,其中所述应用进程包括与钩子框架相关联的指令;
所述启动机器引擎用于启动一虚拟机,所述虚拟机被配置为基于包括在所述应用进程中的指令装载所述钩子框架;
所述执行指令引擎用于在所述虚拟机启动时执行与所述钩子框架相关联的指令,以在所述虚拟机上插入来自所述钩子框架的钩子;并且
所述启动进程引擎用于启动被配置为基于装载应用的请求而启动附加虚拟机的新生进程,其中所述附加虚拟机经由所述钩子被钩住,以收集与所述应用相关联的数据。
10.根据权利要求9所述的系统,其中所述钩子被配置为执行应用记录。
11.根据权利要求9所述的系统,其中所述钩子被配置为收集与所述应用相关联的传感器数据。
12.一种方法,包括:
解释与移动设备的开启相关联的初始化指令;
基于所述初始化指令执行应用进程,其中所述应用进程包括与钩子框架相关联的指令;
启动一虚拟机,所述虚拟机被配置为基于包括在所述应用进程中的指令在所述虚拟机上装载所述钩子框架;
在所述虚拟机启动时执行与所述钩子框架相关联的指令,以在所述虚拟机上插入来自所述钩子框架的钩子;以及
启动被配置为基于装载应用的请求而启动附加虚拟机的新生进程,其中所述附加虚拟机经由所述钩子被钩住,以收集与所述应用相关联的传感器数据,并且其中所述钩子框架在所述虚拟机被启动之后且在所述新生进程被启动之前被执行。
13.根据权利要求12所述的方法,其中所述方法包括经由所述钩子更换与所述应用相关联的指令。
14.根据权利要求13所述的方法,其中所述方法包括执行更换的与所述应用相关联的指令。
15.根据权利要求12所述的方法,其中收集与所述应用相关联的传感器数据包括从网络连接性传感器收集数据。
CN201380076118.6A 2013-06-28 2013-06-28 钩子框架 Active CN105164644B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/048556 WO2014209359A1 (en) 2013-06-28 2013-06-28 Hook framework

Publications (2)

Publication Number Publication Date
CN105164644A true CN105164644A (zh) 2015-12-16
CN105164644B CN105164644B (zh) 2018-10-16

Family

ID=52142482

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380076118.6A Active CN105164644B (zh) 2013-06-28 2013-06-28 钩子框架

Country Status (4)

Country Link
US (1) US10545775B2 (zh)
EP (1) EP3014435A4 (zh)
CN (1) CN105164644B (zh)
WO (1) WO2014209359A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106657358A (zh) * 2016-12-29 2017-05-10 北京奇虎科技有限公司 一种安卓应用的服务代理方法和装置
CN109871285A (zh) * 2017-12-05 2019-06-11 北京嘀嘀无限科技发展有限公司 动态调整方法、装置、服务器、移动终端和可读存储介质

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105339974B (zh) * 2013-06-28 2019-12-31 安提特软件有限责任公司 模拟传感器
US10693946B2 (en) * 2014-09-16 2020-06-23 Amazon Technologies, Inc. Instance backed mobile devices
US10977128B1 (en) 2015-06-16 2021-04-13 Amazon Technologies, Inc. Adaptive data loss mitigation for redundancy coding systems
US10298259B1 (en) 2015-06-16 2019-05-21 Amazon Technologies, Inc. Multi-layered data redundancy coding techniques
US10270476B1 (en) 2015-06-16 2019-04-23 Amazon Technologies, Inc. Failure mode-sensitive layered redundancy coding techniques
US9998150B1 (en) 2015-06-16 2018-06-12 Amazon Technologies, Inc. Layered data redundancy coding techniques for layer-local data recovery
US10270475B1 (en) 2015-06-16 2019-04-23 Amazon Technologies, Inc. Layered redundancy coding for encoded parity data
US11061969B1 (en) 2015-06-29 2021-07-13 Amazon Technologies, Inc. Instance backed mobile devices with multiple instances
US10609122B1 (en) 2015-06-29 2020-03-31 Amazon Technologies, Inc. Instance backed building or place
US9959167B1 (en) 2015-07-01 2018-05-01 Amazon Technologies, Inc. Rebundling grid encoded data storage systems
US10162704B1 (en) 2015-07-01 2018-12-25 Amazon Technologies, Inc. Grid encoded data storage systems for efficient data repair
US9998539B1 (en) 2015-07-01 2018-06-12 Amazon Technologies, Inc. Non-parity in grid encoded data storage systems
US10394762B1 (en) 2015-07-01 2019-08-27 Amazon Technologies, Inc. Determining data redundancy in grid encoded data storage systems
US10108819B1 (en) 2015-07-01 2018-10-23 Amazon Technologies, Inc. Cross-datacenter extension of grid encoded data storage systems
US10198311B1 (en) 2015-07-01 2019-02-05 Amazon Technologies, Inc. Cross-datacenter validation of grid encoded data storage systems
US10089176B1 (en) 2015-07-01 2018-10-02 Amazon Technologies, Inc. Incremental updates of grid encoded data storage systems
US9690622B1 (en) 2015-08-24 2017-06-27 Amazon Technologies, Inc. Stateless instance backed mobile devices
US10911404B1 (en) 2015-08-24 2021-02-02 Amazon Technologies, Inc. Attribute based authorization
US9928141B1 (en) 2015-09-21 2018-03-27 Amazon Technologies, Inc. Exploiting variable media size in grid encoded data storage systems
US11386060B1 (en) 2015-09-23 2022-07-12 Amazon Technologies, Inc. Techniques for verifiably processing data in distributed computing systems
US9940474B1 (en) 2015-09-29 2018-04-10 Amazon Technologies, Inc. Techniques and systems for data segregation in data storage systems
US10394789B1 (en) 2015-12-07 2019-08-27 Amazon Technologies, Inc. Techniques and systems for scalable request handling in data processing systems
US10642813B1 (en) 2015-12-14 2020-05-05 Amazon Technologies, Inc. Techniques and systems for storage and processing of operational data
US10248793B1 (en) 2015-12-16 2019-04-02 Amazon Technologies, Inc. Techniques and systems for durable encryption and deletion in data storage systems
US10180912B1 (en) 2015-12-17 2019-01-15 Amazon Technologies, Inc. Techniques and systems for data segregation in redundancy coded data storage systems
US10127105B1 (en) 2015-12-17 2018-11-13 Amazon Technologies, Inc. Techniques for extending grids in data storage systems
US10235402B1 (en) 2015-12-17 2019-03-19 Amazon Technologies, Inc. Techniques for combining grid-encoded data storage systems
US10324790B1 (en) 2015-12-17 2019-06-18 Amazon Technologies, Inc. Flexible data storage device mapping for data storage systems
US10102065B1 (en) 2015-12-17 2018-10-16 Amazon Technologies, Inc. Localized failure mode decorrelation in redundancy encoded data storage systems
CN107102937B (zh) * 2016-02-19 2021-03-02 腾讯科技(深圳)有限公司 一种用户界面测试方法和装置
US10592336B1 (en) 2016-03-24 2020-03-17 Amazon Technologies, Inc. Layered indexing for asynchronous retrieval of redundancy coded data
US10366062B1 (en) 2016-03-28 2019-07-30 Amazon Technologies, Inc. Cycled clustering for redundancy coded data storage systems
US10678664B1 (en) 2016-03-28 2020-06-09 Amazon Technologies, Inc. Hybridized storage operation for redundancy coded data storage systems
US10061668B1 (en) 2016-03-28 2018-08-28 Amazon Technologies, Inc. Local storage clustering for redundancy coded data storage system
US11137980B1 (en) 2016-09-27 2021-10-05 Amazon Technologies, Inc. Monotonic time-based data storage
US10810157B1 (en) 2016-09-28 2020-10-20 Amazon Technologies, Inc. Command aggregation for data storage operations
US11204895B1 (en) 2016-09-28 2021-12-21 Amazon Technologies, Inc. Data payload clustering for data storage systems
US11281624B1 (en) 2016-09-28 2022-03-22 Amazon Technologies, Inc. Client-based batching of data payload
US10496327B1 (en) 2016-09-28 2019-12-03 Amazon Technologies, Inc. Command parallelization for data storage systems
US10657097B1 (en) 2016-09-28 2020-05-19 Amazon Technologies, Inc. Data payload aggregation for data storage systems
US10437790B1 (en) 2016-09-28 2019-10-08 Amazon Technologies, Inc. Contextual optimization for data storage systems
US10614239B2 (en) 2016-09-30 2020-04-07 Amazon Technologies, Inc. Immutable cryptographically secured ledger-backed databases
US10419486B1 (en) * 2016-10-11 2019-09-17 The Mitre Corporation Enhancing enterprise security on mobile platforms
US10296764B1 (en) 2016-11-18 2019-05-21 Amazon Technologies, Inc. Verifiable cryptographically secured ledgers for human resource systems
US11269888B1 (en) 2016-11-28 2022-03-08 Amazon Technologies, Inc. Archival data storage for structured data

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101151617A (zh) * 2005-04-07 2008-03-26 皇家飞利浦电子股份有限公司 软件保护
CN101266563A (zh) * 2007-03-16 2008-09-17 赛门铁克公司 故障防护计算机支持助理
CN102150105A (zh) * 2008-09-09 2011-08-10 凯思网络公司 虚拟容器的部署和管理
US20130036470A1 (en) * 2011-08-03 2013-02-07 Zhu Minghang Cross-vm network filtering
US20130155083A1 (en) * 2011-11-29 2013-06-20 James McKenzie Methods and systems for maintaining state in a virtual machine when disconnected from graphics hardware

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU3726599A (en) 1999-05-06 2000-11-21 Reality Bytes R&D Ltd. An operating system interface method
IL132916A (en) 1999-11-14 2004-02-08 Mcafee Inc Method and system for intercepting an application program interface
US7904886B2 (en) 2006-03-13 2011-03-08 International Business Machines Corporation Method for executing an application in a virtual container forming a virtualized environment session
US9405585B2 (en) * 2007-04-30 2016-08-02 International Business Machines Corporation Management of heterogeneous workloads
US20090089809A1 (en) 2007-09-27 2009-04-02 Amod Dattatray Deshpande Automatic generation of parallelizable application units system and method
US8255931B2 (en) * 2008-02-11 2012-08-28 Blue Coat Systems, Inc. Method for implementing ejection-safe API interception
US8856783B2 (en) * 2010-10-12 2014-10-07 Citrix Systems, Inc. Allocating virtual machines according to user-specific virtual machine metrics
WO2011047069A1 (en) 2009-10-13 2011-04-21 Tiger's Lair Inc. Method and apparatus for ensuring consistent system configuration in secure applications

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101151617A (zh) * 2005-04-07 2008-03-26 皇家飞利浦电子股份有限公司 软件保护
CN101266563A (zh) * 2007-03-16 2008-09-17 赛门铁克公司 故障防护计算机支持助理
CN102150105A (zh) * 2008-09-09 2011-08-10 凯思网络公司 虚拟容器的部署和管理
US20130036470A1 (en) * 2011-08-03 2013-02-07 Zhu Minghang Cross-vm network filtering
US20130155083A1 (en) * 2011-11-29 2013-06-20 James McKenzie Methods and systems for maintaining state in a virtual machine when disconnected from graphics hardware

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106657358A (zh) * 2016-12-29 2017-05-10 北京奇虎科技有限公司 一种安卓应用的服务代理方法和装置
CN109871285A (zh) * 2017-12-05 2019-06-11 北京嘀嘀无限科技发展有限公司 动态调整方法、装置、服务器、移动终端和可读存储介质

Also Published As

Publication number Publication date
US20160092248A1 (en) 2016-03-31
EP3014435A1 (en) 2016-05-04
CN105164644B (zh) 2018-10-16
WO2014209359A1 (en) 2014-12-31
EP3014435A4 (en) 2017-01-04
US10545775B2 (en) 2020-01-28

Similar Documents

Publication Publication Date Title
CN105164644A (zh) 钩子框架
US9983892B2 (en) Deep linking to mobile application states through programmatic replay of user interface events
CN112162753B (zh) 软件部署方法、装置、计算机设备和存储介质
CN106844136B (zh) 一种程序崩溃信息的收集方法及系统
Bierma et al. Andlantis: Large-scale Android dynamic analysis
CN110096424B (zh) 测试的处理方法、装置、电子设备及存储介质
CN107733985B (zh) 一种云计算系统功能组件部署方法及装置
US10084637B2 (en) Automatic task tracking
CN111527474A (zh) 软件功能的动态交付
US9760472B2 (en) Tenant code debugging in multi-tenant systems
CN108733553A (zh) 基于docker的测试装置的配置方法、装置和系统
Hossny et al. A case study for deploying applications on heterogeneous PaaS platforms
CN111880987A (zh) 应用程序的动态监测方法、装置、存储介质以及电子装置
CN112527459B (zh) 一种基于Kubernetes集群的日志分析方法及装置
CN112988185A (zh) 云应用更新方法、装置、系统、电子设备及存储介质
CN106095415A (zh) 开发文件打包方法、装置及系统
CN110968331A (zh) 应用程序运行的方法和装置
CN113867600A (zh) 处理流式数据的开发方法、装置和计算机设备
US20170060577A1 (en) Documentation notification
CN110083366B (zh) 应用运行环境的生成方法、装置、计算设备及存储介质
US10073689B2 (en) Managing application lifecycles within a federation of distributed software applications
US10853215B2 (en) Intelligent configuration management of user devices
CN111722850B (zh) 多系统间应用的处理方法、装置及系统
KR20130020135A (ko) 통합 개발 환경에서의 코드 동시 개발자 리스트 제공 시스템 및 방법
CN112306843A (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
C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20161019

Address after: American Texas

Applicant after: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP

Address before: American Texas

Applicant before: Hewlett-Packard Development Company, Limited Liability Partnership

TA01 Transfer of patent application right

Effective date of registration: 20180611

Address after: American California

Applicant after: Antite Software Co., Ltd.

Address before: American Texas

Applicant before: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address

Address after: Utah, USA

Patentee after: Weifosi Co., Ltd

Address before: California, USA

Patentee before: Antiy Software Co.,Ltd.

CP03 Change of name, title or address