在容器化工作空间环境中修改ANDROID应用生命周期以控制其执行的方法与流程

文档序号:11160867阅读:333来源:国知局
在容器化工作空间环境中修改ANDROID应用生命周期以控制其执行的方法与制造工艺

本申请是于2015年1月12日提交的美国申请No.14/594,377的延续并且要求该美国申请的权益,该美国申请要求于2014年9月24日提交的美国临时申请No.62/054,853的权益,出于所有目的将这两个申请的全部内容通过引用并入本文。

本申请涉及于2013年3月15日提交的美国申请No.13/841,498以及于2014年3月14日提交的美国申请No.14/213,244但不要求这两个申请的优先权,出于所有目的将这两个申请的全部内容通过引用并入本文。

技术领域

一般而言,本申请涉及数据处理。具体而言,本申请涉及用于向移动设备和其它设备上的软件应用提供安全服务的系统、方法和机器可读介质,其中安全服务包括认证、授权、审计、单点登录、安全策略实施、密钥管理和分发、安全通信、安全数据存储和安全数据共享等。



背景技术:

在移动设备上方便地访问企业资源是一个反复出现的问题。一旦移动设备管理(MDM)解决方案被安装在移动设备上,则几乎移动设备上的所有内容成为企业数据。如果移动设备的用户希望将它用于非企业目的,则这可能是次优的。

应用(或它们有时被称为“app”)被频繁地更新和修订。电子邮件应用每隔几个月就打更新补丁并不是罕见的。移动设备和其它计算设备常常具有许多应用,这些应用中的每个应用被频繁更新。这可能使得保护移动设备免受黑客攻击是困难的,因为计算设备的安全一般仅取决于其最薄弱的一环。如果一个应用遭受安全异常,则潜在地可能危及设备上的数据中的所有数据。

由于这些安全漏洞,许多公司不允许通过雇员自己的设备对他们的公司网络的访问(通常被称为自带设备(BYOD)访问)。除非雇员同意上文描述的锁定用户设备上的所有内容的MDM解决方案,否则公司不采纳BYOD的理念。替代方案是雇主为雇员提供用于企业访问的电子设备;然而,这是昂贵的并且需要更新基础设施。

移动设备上的应用的更好安全性、灵活性和集成是所需要的。



技术实现要素:

一般而言,描述了用于在移动应用被安装到计算设备上之前自动将移动应用“容器化(containerize)”以使得应用的网络调用和输入/输出(I/O)调用中的全部网络调用和I/O调用之前都有必要的用户认证、令牌选择和/或加密的系统、设备和方法。在本机应用在构造器调用或网络调用或I/O调用中执行任何代码之前,执行安全代码。

“容器化器(containerizer)”应用以本机的、未修改的应用作为输入并且输出容器化的、经修改的应用。具体而言,从Google应用包(APK)文件提取用于Google计算机应用的ApplicationManifest.XML文件和Google可执行文件(DEX)字节码文件。为应用、内容提供器(Content Provider)和活动创建包装器类和假(dummy)生命周期方法。一个目的是创建假生命周期,以使得在认证完成之前不执行原始代码;一旦认证成功完成,则在执行实际应用代码之前获取和应用策略。

移动设备应用的生命周期可以被修改。方法将APK文件解码并且从APK文件提取Android清单和DEX文件。该方法从清单读取应用类名,然后解析应用类的字节码,重命名方法CLINIT(静态初始化器)、INIT(构造器)、attachBaseContext和onCreate(应用生命周期方法),并且插入具有原始名称(即,CLINIT、INIT、attachBaseContext和onCreate)的空白假方法。在处理应用类之后,该方法从清单获取内容提供器类的名称,并且通过追加后缀常量来修改(清单中的)这些名称。然后,该方法利用字节码操纵来为内容提供器创建充当原始内容提供器之上的包装器/委托类的具有经修改的名称的类。一旦生成了用于内容提供器的包装器,则该方法从清单文件读取活动的名称,它利用字节码解析器来重命名方法CLINIT、INIT和生命周期方法(onCreate、onResume、onStart、onRestart、onPause、onStop、onDestroy、finish)并且在它们的位置中创建假方法。另外,在DEX文件中添加假启动器活动,并且该假启动器活动的名称作为(移除来自原始启动器活动的启动器属性的)启动器活动被添加到清单文件中,这是启动应用时要调用的第一个活动。一旦应用生命周期控制进来,则触发假启动器活动认证并且获取策略。此后,调用(invoke)原始启动器活动。

用假方法/类代替原始生命周期方法/类的目的是使得在完成认证和获取策略之前不执行应用代码。容器化器不仅修改生命周期,而且可以包装文件系统调用和网络调用,以在这些调用中注入安全性。例如,在设备上写入任何数据之前,数据将被加密,并且将在读取操作中被解密。类似地,所有网络调用可以通过安装在企业网络中的网关来代理,以使得可以通过适当的信道来控制和路由所有网络业务。为了执行网络拦截,类似于对写/读操作的加密/解密,从路由业务的网络进行认证可能是重要的;密钥管理器应当被初始化。一旦认证完成,则可以初始化密钥管理器,并且接收认证令牌以通过网络通信。以相同的序列触发被重命名的原始生命周期方法/类。在一些实例中,可以只在控制进入活动生命周期(例如,活动的onCreate/onResume)中时,才调用认证。因此,原始生命周期被假生命周期代替。一旦认证发生,则原始生命周期在认证之后被调用。

当启动容器化的应用时,发生的第一件事是应用类的初始化。由于所有的初始化/生命周期方法被重命名,因此该代码都没有被执行。相反,(由容器化器注入的)假方法被执行。在应用类初始化之后,内容提供器被初始化并且用于内容提供器的(由容器化器注入的)包装器类被初始化。

在应用和内容提供器初始化之后,应用生命周期进入假启动器活动,假启动器活动触发认证并且在成功认证之后初始化密钥管理器和网络管理器。在此之后,触发原始生命周期。第一个应用的类(重命名的CLINIT、重命名的INIT和重命名的attachBaseContext)被调用。在执行重命名的生命周期方法之后,应用类原始内容提供器类被初始化并且它们的onCreate被调用。一旦原始内容提供器被初始化,则应用的类的原始onCreate被调用。完成所有这些之后,调用原始启动器活动并且相应地调用剩余的应用功能。

有时候,可以在某些具体活动时触发应用,在这些具体活动中在应用类和内容提供器初始化之后,控制不进入假启动器活动而是直接进入被调用的活动。出于该原因,我们在活动中重命名了静态初始化器(CLINIT)、构造器(INIT)和生命周期方法,并且在所有活动中添加了用于活动生命周期的假方法。这些假方法在调用原始的重命名的生命周期方法之前检查认证。如果未认证,则onCreate/onResume的假方法触发认证。成功认证后,用于应用和内容提供器初始化的原始生命周期被触发。此后,调用活动的原始CLINIT、INIT和onCreate,然后相应地进行剩余的应用流。

本发明的一些实施例涉及一种修改移动设备应用的生命周期的方法。该方法包括:提供应用清单文件和字节码文件,该应用清单文件和字节码文件对应于计算机软件应用;将应用类的原始方法重命名为字节码文件中的重命名的方法;将包装器方法插入字节码文件中的应用类中,该包装器方法具有原始方法的名称,该包装器方法被配置为在调用重命名的方法之前调用认证或加密方法;将原始内容提供器类的名称修改为应用清单文件中的经修改的内容提供器类名称;以及在字节码文件中创建包装器内容提供器类,包装器内容提供器类具有经修改的内容提供器类名称,包装器内容提供器类被配置为在转发对原始内容提供器类的方法的调用之前检查原始内容提供器类是否被实例化。

该方法还可以包括将活动类的原始方法的名称重命名为字节码文件中该活动类的重命名的方法,并且在字节码文件中的该活动类中插入假方法,该假方法具有活动类的原始方法的名称,该假方法被配置为在调用活动类的重命名的方法之前调用认证或加密方法。

应用清单文件中的所有内容提供器类名称可以被重命名。该方法还可以包括由包装器方法读取策略,其中对认证或加密方法的调用基于策略。策略可以从信息技术(IT)部门发送到移动设备应用安装在其上的移动设备。

包装器方法可以包括对移动设备管理器应用的调用。原始方法可以包括静态块初始化。原始方法可以包括构造器。该方法还可以包括重命名应用静态初始化方法、应用构造器方法、应用attachBaseContext()方法、内容提供器静态初始化方法、内容提供器构造器方法、内容提供器onCreate()方法、应用onCreate()方法、启动器活动静态初始化方法、启动器活动构造器方法以及字节码文件中的启动器活动onCreate()、onStart()和onResume()方法。

该方法还可以包括将onCreate()、onStart()、onStop()、onRestart()、onPause()、onResume()或onDestroy()方法插入到包装器类中。原始方法的重命名可以包括将前缀或后缀追加到原始方法,以创建重命名的方法。应用清单文件可以包括可扩展标记语言(XML)代码。字节码文件可以是用于Google计算机应用的Google可执行文件(DEX)字节码文件。该方法还可以包括从Google应用包(APK)文件提取应用清单文件和字节码文件。

其它实施例涉及执行上文引用的方法的系统以及采用或存储用于上文描述的方法的指令的机器可读有形存储介质。

本发明内容既不旨在识别要求保护的主题的关键特征或必要特征,也不旨在单独用来确定要求保护的主题的范围。应当通过参考本专利的整个说明书的适当的部分、任何或全部附图以及每项权利要求来理解主题。

附图说明

图1示出了根据实施例的连接到受保护的公司网络的移动设备。

图2A-2B示出了根据实施例来修订应用清单文件。

图3A-3B示出了根据实施例来修订字节码文件。

图4示出了根据实施例的对应用生命周期的修改。

图5是示出根据实施例的过程的流程图。

图6绘出了用于实现实施例中的一个实施例的联网系统的简化示意图。

图7示出了其中可以实现本发明的各种实施例的示例性计算机系统。

图8示出了可以在其中实现本发明的各种实施例的、用于修改移动设备应用的生命周期的示例性系统的简化结构图。

具体实施方式

在下面的描述中,出于解释的目的,阐述了具体的细节,以便于提供对本发明的实施例的透彻理解。然而,将明显的是,可以在没有这些具体细节的情况下实践各种实施例。附图和描述不旨在是限制性的。

可以以各种配置提供附图中的一些图中绘出的系统。在一些实施例中,系统可以被配置为其中系统的一个或多个组件跨云计算系统中的一个或多个网络分布的分布式系统。

本发明的方面涉及如何在基于Google操作系统(OS)的设备上执行安全容器化。描述了如何在Android平台上实现容器化目标。它定义了如何拦截Android应用生命周期并且执行注入以实现期望目标的过程。

容器化是一种保护移动应用的新方法。容器化可以提供安全的工作空间,并且围绕它集成其它应用,以便这些其它应用与工作空间一起共享容器化环境的生态系统。

现有的行业解决方案只是在移动设备上安装MDM;之后,设备有效地成为企业的财产。甚至个人应用也要遵守企业策略。

通过诸如本文描述的移动工作空间解决方案之类的移动工作空间解决方案,个人数据和企业数据可以保持在分开的控制下。在容器化环境中工作的企业应用及其数据仍然受公司策略的控制。它们的网络访问和文件系统访问在容器化环境中以常见的方式被保护。

这样的移动工作空间解决方案的技术优点是它可以:

-为移动应用增加安全性;

-提供安全的网络和文件访问;

-提供对应用的经认证的访问;

-提供对应用程序的策略控制;

-提供数据泄漏保护;以及

-提供对设备上的容器化环境的控制,该容器化环境可以从管理控制台锁定/擦除/清除,而不影响设备上的个人数据。

方法

Google应用的一般生命周期通常包括以下内容:

-应用类初始化

-静态初始化

-构造器初始化

-attachBaseContext()应用生命周期初始化

-内容提供器

-静态初始化

-构造器初始化

-onCreate()内容提供器生命周期初始化

-onCreate()应用生命周期初始化

-启动器活动初始化

-静态初始化

-构造器初始化

-onCreate()、onStart()、onResume()活动生命周期初始化

人们可以更改这个生命周期,以便于迫使来自应用的每个网络调用和I/O调用预先检查安全策略和/或运行安全检查。

图1示出了根据实施例的连接到受保护的公司网络的移动设备。在系统100中,智能电话102经广域网110与公司网络120通信。

在智能电话102中,在虚拟机(VM)106上运行的应用108被拒绝与外部实体的直接连接。替代地,关键构造器和初始化的包装器迫使网络调用经过移动数据管理器(MDM)104。移动数据管理器104可以检查设备的通信的认证令牌和其它安全相关的方面。应用108有效地通过到广域网110(诸如因特网)的移动数据管理器104与公司网络120通信。

在公司网络120上,所有传入和传出的网络业务由防火墙112检查和调节。移动设备102对企业服务器114的调用可以采取企业web服务116的形式。例如,应用108可以利用(tap into)由企业服务116提供的内部雇员记录。

公司的IT部门可以发布策略118,策略118的副本通过广域网110发送到移动设备102。应用108中的包装器类可以查询可以采取可扩展标记语言(XML)文件的形式的策略的副本,以便确定是否以及何时获取用于某些事务的安全证书等。

图2A-2B示出了根据实施例来修订应用清单文件。在图2A中,原始应用清单文件202具有原始类名称204“oracle.webcenter.content.android.documentsprovider.WCCFilesPr ovider”。在由该类名称命名的元素内的是原始子元素。

在图2B中,经修订的应用清单文件206被示为具有被重命名为带“MyC14N”前缀的重命名的类名称的原始类名称204。即,它被重命名为

“oracle.webcenter.content.android.documentsprovider.MyC14NWC CFilesProvider”。具有与原始类名称相同的类名称(即,“oracle.webcenter.content.android.documentsprovider.WCCFilesPr ovider”)的另一新类定义210被添加。在新类定义下的是新的子元素。新的子元素可以是或者可以不是原始子元素的副本。一些子元素可以被删除。

图3A-3B示出了根据实施例来修订字节码文件。

在图3A中,原始字节码文件302具有原始类304“ContentProvider”。在该类内的是原始代码。

在图3B中,经修订的类型代码文件306被示为具有被重命名为带“MyC14N”前缀的重命名的类的原始类名称。即,它被重命名为“MyC14NContentProvider”。它的原始代码保持不变。

具有与原始类“ContentProvider”相同的名称的新类310被添加。这个新类定义检查它是否已经被实例化和初始化的变量。它还创建诸如onCreate()之类的包装器方法,这些包装器方法读取策略,基于策略认证、加密/解密或执行其它安全功能,然后调用原始类的原始onCreate()函数。

图4示出了用于拦截可以被采用的应用代码的执行的字节码操纵/注入。对于每个可能的网络和文件系统操作,可以创建被注入到现有应用中的包装器类。可以在现有代码中实现实际的字节码修改,从而用包装器类代替原始类。例如:

-一旦可以用定制的包装器类代替FileInputStream和FileOutputStream。

由于可能希望控制应用生命周期,因此可以使用用于注入/修改现有生命周期代码的字节码操纵方法。

使用该方法的一个目的是在用户被允许执行应用之前使用户通过认证,并且在认证之后从安全工作空间获取会话数据和加密密钥。因此,网络调用和文件系统调用实际上可以工作。一些包装器需要主加密密钥来解码用来在每个文件操作中加密/解密数据的加密密钥。同样,对于网络调用,可以要求会话令牌,以确立对任何网络资源进行的调用的真实性,所述对任何网络资源进行的调用可以经由Oracle移动安全网关或其它基于云的网关来路由。

为了实现上面的用例,可以延迟整个应用生命周期并且引入假生命周期,以使得可以首先认证用户,然后获取主加密密钥和会话令牌。

这里是根据实施例的应用生命周期中的分步列表。

-在操作402中应用类初始化发生。

-对于静态初始化404,在容器化步骤430中它被重命名为定制定义的、带常量前缀/后缀的名称,以使得它可以稍后被调用并且被注入空的类初始化器。

-对于构造器初始化406,在容器化步骤432中它被重命名为定制定义的、带常量前缀/后缀的名称,以使得它可以稍后被调用并且被注入空的类构造器。这可以对所有可用的构造器进行。它可以对超类的所有构造器进行,并且它们相应的super()调用也可以被改变为上面提到的定制名称。

-在操作434中方法attachBaseContext()408可以被重命名为定制定义的、带常量前缀/后缀的名称,以使得它可以稍后被调用并且被注入用于它的空方法。

-对于内容提供器初始化410,可以在操作436中为在应用中定义的每个内容提供器注入假内容提供器并且还可以改变相关联的清单XML(可扩展标记语言)中的引用。这些假内容提供器又包含对原始内容提供器的引用,并且对该假内容提供器的所有方法调用都被委托给原始内容提供器。在对任何接口方法进行第一次调用之前,内容提供器通常不被正常地初始化。或者可以简单地称为,它是懒惰的初始化。例如,如果内容提供器是MyContentProvider,则可以实现以下内容:

-将清单中的条目

<provider android:name=”MyContentProvider”>改成

<provider android:name=”MyC14NContentProvider”>

-将静态init 412和构造器init 414注入名为MyC14NContentProvider的类。

以这种方式,通过引入假内容提供者并且将它们的接口方法委托给原始类的原始方法来延迟内容提供器的初始化。

-对于应用onCreate()初始化416,容器化器可以执行以下操作。

-诸如对于生命周期初始化418,可以在操作438中将onCreate()方法重命名为定制定义的、带常量前缀/后缀的名称,以使得它可以稍后被调用并且继而被注入onCreate()的假方法。这对所有超类进行,并且super.onCreate()的调用可以委托给上面提到的重命名的onCreate()方法。

-对于活动生命周期初始化,诸如对于启动器活动初始化420,可以在操作440中注入假活动,使其成为启动器活动,并且从原始活动中移除启动器动作。一旦在假活动中获取控制,则可以调用工作空间以供认证,工作空间将返回会话令牌和主加密密钥。一旦获取了密钥,则可以通过调用被重命名的原始方法来重新初始化整个周期。

-原始应用类静态初始化器422可以被调用。

-然后原始应用类构造器424可以被调用。

-原始应用类attachBaseContext()可以被调用。

-可以对假内容提供器调用Init(),Init()将初始化原始内容提供器。

-原始应用类onCreate()可以被调用。

-类似地,可以注入/修改原始现有活动的生命周期。

-可以在操作442中重命名426的onCreate()、onRestart()、onResume()方法,并且注入定制定义的生命周期方法,在该定制定义的生命周期方法中将进行策略实现的任务,然后调用原始的重命名的方法。例如:

-onCreate()重命名为onCreate_C14N()

-注入我们自己的onCreate()

-类似地,这可以对其它生命周期方法onStart()、onResume()、onPause()、onStop()、onDestroy()执行。

-使用字节码修改/注入的相同方法,可以用自己定制的调用代替共享偏好的系统调用和startActivity(),在该自己定制的调用中可以执行所有加密/解密和策略检查,然后调用原始的操作。

图5是示出根据实施例的过程500的流程图。该过程可以由计算机通过执行处理器中的指令或以其它方式来实现。在操作501中,提供应用清单文件和字节码文件,应用清单文件和字节码文件对应于计算机软件应用。在操作502中,将应用类的原始方法重命名为字节码文件中的重命名的方法。在操作503中,包装器方法被插入到字节码文件中的应用类中,该包装器方法具有原始方法的名称,该包装器方法被配置为在调用重命名的方法之前调用认证或加密方法。在操作504中,原始内容提供器类的名称被修改为应用清单文件中的经修改的内容提供器类名称。在操作505中,在字节码文件中创建包装器内容提供器类,该包装器内容提供器类具有经修改的内容提供器类名称,该包装器内容提供器类被配置为在转发对原始提供器类的方法的调用之前检查原始内容提供器类是否被实例化。

在操作506中,活动类的原始方法的名称被重命名为字节码文件中该活动类的重命名的方法。在操作507中,假方法被插入到字节码文件中的该活动类中,该假方法具有活动类的原始方法的名称,该假方法被配置为在调用活动类的重命名的方法之前调用认证或加密方法。

计算机系统基础设施

图6绘出了用于实现实施例中的一个实施例的分布式系统600的简化示意图。在所示的实施例中,分布式系统600包括一个或多个客户机计算设备602、604、606和608,该一个或多个客户机计算设备被配置为经一个或多个网络610执行和操作客户机应用,诸如web浏览器、专有客户机(例如,Oracle Forms)等。服务器612可以经由网络610与远程客户机计算设备602、604、606和608可通信地耦接。

在各种实施例中,服务器612可以适于运行由系统的组件中的一个或多个组件提供的一个或多个服务或软件应用。在一些实施例中,这些服务可以作为基于web的服务或云服务向客户机计算设备602、604、606和/或608的用户提供,或者在软件即服务(SaaS)模型下向客户机计算设备602、604、606和/或608的用户提供。操作客户机计算设备602、604、606和/或608的用户进而可以利用一个或多个客户机应用与服务器612交互,以利用由这些组件提供的服务。

在图中所绘出的配置中,系统600的软件组件618、620和622被示为在服务器612上实现。在其它实施例中,系统600的组件中的一个或多个组件和/或由这些组件提供的服务还可以由客户机计算设备602、604、606和/或608中的一个或多个实现。然后,操作客户机计算设备的用户可以利用一个或多个客户机应用来使用由这些组件提供的服务。这些组件可以在硬件、固件、软件或其组合中实现。应当理解的是,各种不同的系统配置是可能的,这些系统配置可以不同于分布式系统600。因此,图中所示的实施例是用于实现实施例系统的分布式系统的一个示例,并且不旨在是限制性的。

客户机计算设备602、604、606和/或608可以是运行诸如Microsoft Windows之类的软件和/或诸如iOS、Windows Phone、Android、BlackBerry 10、Palm OS等之类的各种移动操作系统并且启用因特网、电子邮件、短消息服务(SMS)、或其它通信协议的便携式手持设备(例如,蜂窝电话、计算平板、个人数字助理(PDA))或可穿戴设备(例如,Google头戴式显示器)。客户机计算设备可以是通用个人计算机,举例来说,包括运行各种版本的MicrosoftApple和/或Linux操作系统的个人计算机和/或膝上型计算机。客户机计算设备可以是运行包括但不限于各种GNU/Linux操作系统(诸如像Google Chrome OS)的各种商用的或类UNIX操作系统中的任何操作系统的工作站计算机。可替代地或附加地,客户机计算设备602、604、606和608可以是能够经(一个或多个)网络610通信的任何其它电子设备,诸如瘦客户机计算机、启用因特网的游戏系统(例如,具有或不具有姿势输入设备的Microsoft Xbox游戏机)和/或个人消息传送设备。

虽然示例性分布式系统600被示为具有四个客户机计算设备,但是任何数量的客户机计算设备可以被支持。诸如具有传感器的设备等之类的其它设备可以与服务器612交互。

分布式系统600中的(一个或多个)网络610可以是本领域技术人员熟悉的可以利用各种商用协议中的任何商用协议支持数据通信的任何类型的网络,所述各种商用协议包括但不限于TCP/IP(传输控制协议/因特网协议)、SNA(系统网络架构)、IPX(互联网分组交换)、AppleTalk等。仅仅作为示例,(一个或多个)网络610可以是局域网(LAN),诸如基于以太网、令牌环和/或其它网络的LAN。(一个或多个)网络610可以是广域网和因特网。它可以包括虚拟网络,该虚拟网络包括但不限于虚拟专用网络(VPN)、内联网、外联网、公共交换电话网络(PSTN)、红外网络、无线网络(例如,在电气和电子协会(IEEE)802.11协议族中的任何协议、和/或任何其它无线协议下操作的网络);和/或这些网络和/或其它网络的任何组合。

服务器612可以包括一个或多个通用计算机、专用服务器计算机(举例来说,包括PC(个人计算机)服务器、服务器、中型服务器、大型计算机、机架式服务器等)、服务器场、服务器集群或任何其它适当的布置和/或组合。在各种实施例中,服务器612可以适于运行在前述公开内容中描述的一个或多个服务或软件应用。例如,服务器612可以对应于用于执行根据本公开的实施例的上文描述的处理的服务器。

服务器612可以运行包括上面讨论的操作系统中的任何操作系统以及任何商用的服务器操作系统的操作系统。服务器612还可以运行各种附加的服务器应用和/或中间层应用中的任何服务器应用和/或中间层应用,包括HTTP(超文本传输协议)服务器、FTP(文件传输协议)服务器、CGI(公共网关接口)服务器、服务器、数据库服务器等。示例性数据库服务器包括但不限于来自Oracle、Microsoft、Sybase、IBM(国际商业机器)等的商用数据库服务器。

在一些实施方式中,服务器612可以包括一个或多个应用,以分析和整合从客户机计算设备602、604、606和608的用户接收到的数据馈送和/或事件更新。作为示例,数据馈送和/或事件更新可以包括但不限于从一个或多个第三方信息源和持续数据流接收到的馈送、更新或实时更新,该一个或多个第三方信息源和持续数据流可以包括与传感器数据应用、金融收报机(ticker)、网络性能测量工具(例如,网络监视和业务管理应用)、点击流分析工具、汽车交通监视等相关的实时事件。服务器612还可以包括经由客户机计算设备602、604、606和608的一个或多个显示设备显示数据馈送和/或实时事件的一个或多个应用。

分布式系统600还可以包括一个或多个数据库614和616。数据库614和616可以驻留在各种位置中。作为示例,数据库614和616中的一个或多个可以驻留在服务器612本地(和/或驻留在服务器612中)的非暂态存储介质上。可替代地,数据库614和616可以远离服务器612,并且经由基于网络的或专用的连接与服务器612通信。在一组实施例中,数据库614和616可以驻留在存储区域网络(SAN)中。类似地,用于执行属于服务器612的功能的任何必要的文件可以适当地在服务器612本地存储和/或远程存储。在一组实施例中,数据库614和616可以包括适于响应于SQL格式的命令来存储、更新和检索数据的关系数据库,诸如由Oracle提供的数据库。

图7示出了其中可以实现本发明的各种实施例的示例性计算机系统700。计算机系统700可以被用来实现上文描述的计算机系统中的任何计算机系统。如图中所示,计算机系统700包括经由总线子系统702与若干外围子系统通信的处理单元704。这些外围子系统可以包括处理加速单元706、I/O子系统708、存储子系统718和通信子系统724。存储子系统718包括有形的计算机可读存储介质722和系统存储器710。

总线子系统702提供用于使计算机系统700的各种组件和子系统按照预期彼此通信的机制。虽然总线子系统702被示意性地示为单条总线,但是总线子系统的替代实施例可以利用多条总线。总线子系统702可以是若干类型的总线结构中的任何总线结构,包括利用各种总线架构中的任何总线架构的存储器总线或存储器控制器、外围总线和局部总线。例如,这样的总线架构可以包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线以及可以被实现为根据IEEE P1386.1标准制造的夹层(Mezzanine)总线的外围组件互连(PCI)总线。

可以被实现为一个或多个集成电路(例如,常规的微处理器或微控制器)的处理单元704控制计算机系统700的操作。处理单元704中可以包括一个或多个处理器。这些处理器可以包括单核或多核处理器。在某些实施例中,处理单元704可以被实现为具有包括在每个处理单元中的单个或多核处理器的一个或多个独立处理单元732和/或734。在其它实施例中,处理单元704还可以被实现为通过将两个双核处理器集成到单个芯片中而形成的四核处理单元。

在各种实施例中,处理单元704可以响应于程序代码而执行各种程序,并且可以维护多个并发执行的程序或过程。在任何给定的时间,要执行的程序代码中的一些或全部可以驻留在(一个或多个)处理器704和/或存储子系统718中。通过适当的编程,(一个或多个)处理器704可以提供上文描述的各种功能。计算机系统700可以附加地包括处理加速单元706,处理加速单元706可以包括数字信号处理器(DSP)、专用处理器和/或其它处理器。

I/O子系统708可以包括用户接口输入设备和用户接口输出设备。用户接口输入设备可以包括键盘、诸如鼠标或轨迹球之类的指示设备、结合到显示器中的触摸板或触摸屏、滚轮、点拨轮、拨盘、按钮、开关、键板、具有语音命令识别系统的音频输入设备、麦克风以及其它类型的输入设备。用户接口输入设备可以包括例如使得用户能够利用姿势和口头命令通过自然用户接口来控制输入设备(诸如Microsoft360游戏控制器)并与其交互的诸如Microsoft运动传感器之类的运动感测和/或姿势识别设备。用户接口输入设备还可以包括眼部姿势识别设备,诸如检测来自用户的眼睛活动(例如,当拍摄图片和/或进行菜单选择时的“眨眼”)并且将眼部姿势变换为到输入设备(例如,Google)中的输入的Google眨眼检测器。附加地,用户接口输入设备可以包括使得用户能够通过语音命令与语音识别系统(例如,导航器)交互的语音识别感测设备。

用户接口输入设备还可以包括但不限于三维(3D)鼠标、操纵杆或指示杆、游戏板和图形平板、以及音频/视觉设备,诸如扬声器、数码照相机、数字摄像机、便携式媒体播放器、网络摄像机、图像扫描仪、指纹扫描仪、条形码读取器3D扫描仪、3D打印机、激光测距仪、以及视线跟踪设备。附加地,用户接口输入设备可以包括例如医疗成像输入设备,诸如计算机断层扫描、磁共振成像、正电子发射断层扫描、医疗超声检查设备。用户接口输入设备还可以包括例如音频输入设备,诸如MIDI键盘、数字乐器等。

用户接口输出设备可以包括显示子系统、指示器灯或者诸如音频输出设备之类的非视觉显示器等。显示子系统可以是阴极射线管(CRT)、诸如利用液晶显示器(LCD)或等离子体显示器的平板设备之类的平板设备、投影设备、触摸屏等。一般而言,术语“输出设备”的使用旨在包括用于向用户或其它计算机输出来自计算机系统700的信息的所有可能类型的设备和机构。例如,用户接口输出设备可以包括但不限于可视地传达文本、图形和音频/视频信息的各种显示设备,诸如监视器、打印机、扬声器、耳机、汽车导航系统、绘图仪、语音输出设备和调制解调器。

计算机系统700可以包括存储子系统718,存储子系统718包括被示为当前位于系统存储器710内的软件元件。系统存储器710可以存储可在处理单元704上加载和执行的程序指令以及在这些程序的执行期间生成的数据。

取决于计算机系统700的配置和类型,系统存储器710可以是易失性的(诸如随机存取存储器(RAM))和/或非易失性的(诸如只读存储器(ROM)、闪存存储器,等等)。RAM通常包含可由处理单元704立即访问和/或当前操作和执行的数据和/或程序模块。在一些实施方式中,系统存储器710可以包括多种不同类型的存储器,诸如静态随机存取存储器(SRAM)或动态随机存取存储器(DRAM)。在一些实施方式中,包含有助于诸如在启动期间在计算机系统700内的元件之间传送信息的基本例程的基本输入/输出系统(BIOS)通常可以存储在ROM中。作为示例而非限制,系统存储器710还示出了应用程序712、程序数据714以及操作系统716,应用程序712可以包括客户机应用、Web浏览器、中间层应用、关系数据库管理系统(RDBMS)等。作为示例,操作系统716可以包括各种版本的MicrosoftApple和/或Linux操作系统、各种商用的或类UNIX操作系统(包括但不限于各种GNU/Linux操作系统、GoogleOS等)和/或移动操作系统(诸如iOS、Phone、OS、10OS和OS操作系统)。

存储子系统718还可以提供用于存储提供一些实施例的功能的基本编程和数据构造的有形的计算机可读存储介质。当由处理器执行时提供上文描述的功能的软件(程序、代码模块、指令)可以被存储在存储子系统718中。这些软件模块或指令可以由处理单元704执行。存储子系统718还可以提供用于存储根据本发明使用的数据的存储库。

存储子系统700还可以包括可以被进一步连接到计算机可读存储介质722的计算机可读存储介质读取器720。与系统存储器710一起并且可选地与系统存储器710组合,计算机可读存储介质722可以全面地表示远程存储设备、本地存储设备、固定存储设备和/或可移动存储设备加上用于临时和/或较永久地包含、存储、传输和检索计算机可读信息的存储介质。

包含代码或代码的部分的计算机可读存储介质722还可以包括本领域已知或使用的任何适当的介质,包括存储介质和通信介质,诸如但不限于以用于信息的存储和/或传输的任何方法或技术实现的易失性和非易失性介质、可移动和不可移动介质。这可以包括有形的计算机可读存储介质,诸如RAM、ROM、电可擦除可编程ROM(EEPROM)、闪存存储器或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光学存储装置、盒式磁带、磁带、磁盘存储设备或其它磁性存储设备、或者其它有形的计算机可读介质。这还可以包括非有形的计算机可读介质,诸如可以被用来传输期望的信息并且可以由计算系统700访问的数据信号、数据传输或任何其它介质。

作为示例,计算机可读存储介质722可以包括从不可移动、非易失性磁介质读取或向其写入的硬盘驱动器,从可移动、非易失性磁盘读取或向其写入的磁盘驱动器,以及从可移动、非易失性光盘(诸如CD-ROM、DVD和盘)或其它光学介质读取或向其写入的光盘驱动器。计算机可读存储介质722可以包括但不限于驱动器、闪存存储器卡、通用串行总线(USB)闪存驱动器、安全数字(SD)卡、DVD盘、数字视频带等。计算机可读存储介质722还可以包括基于非易失性存储器的固态驱动器(SSD)(诸如基于闪存存储器的SSD、企业闪存驱动器、固态ROM等)、基于易失性存储器的SSD(诸如基于固态RAM的SSD、基于动态RAM的SSD、基于静态RAM的SSD、基于DRAM的SSD、磁阻RAM(MRAM)SSD),以及使用基于DRAM的SSD和基于闪存存储器的SSD的组合的混合SSD。盘驱动器及其相关联的计算机可读介质可以为计算机系统700提供计算机可读指令、数据结构、程序模块和其它数据的非易失性存储。

通信子系统724提供到其它计算机系统和网络的接口。通信子系统724充当用于从来自计算机系统700的其它系统接收数据以及向来自计算机系统700的其它系统传输数据的接口。例如,通信子系统724可以使得计算机系统700能够经由因特网连接到一个或多个设备。在一些实施例中,通信子系统724可以包括用于(例如,利用蜂窝电话技术、增强的数据网络技术(诸如3G、4G或EDGE(用于全球演进的增强的数据率))、WiFi(IEEE 802.11族标准)、或其它移动通信技术、或者其任何组合)访问无线语音网络和/或数据网络的射频(RF)收发器组件、全球定位系统(GPS)接收器组件和/或其它组件。在一些实施例中,除了无线接口之外或作为无线接口的代替,通信子系统724可以提供有线网络连接(例如,以太网)。

在一些实施例中,通信子系统724还可以代表可以使用计算机系统700的一个或多个用户接收以结构化和/或非结构化数据馈送726、事件流728、事件更新730等形式的输入通信。

作为示例,通信子系统724可以被配置为实时地接收来自社交网络的用户和/或诸如馈送、更新、web馈送(诸如丰富站点摘要(RSS)馈送)之类的其它通信服务的数据馈送726,和/或来自一个或多个第三方信息源的实时更新。

此外,通信子系统724还可以被配置为接收没有明确结束的本质上可以是连续的或无界的连续数据流形式的数据,其中连续数据流可以包括实时事件的事件流728和/或事件更新730。生成连续数据的应用的示例可以包括例如传感器数据应用、金融收报机、网络性能测量工具(例如,网络监视和业务管理应用)、点击流分析工具、汽车交通监视等。

通信子系统724还可以被配置为向可以与耦接到计算机系统700的一个或多个流数据源计算机通信的一个或多个数据库输出结构化和/或非结构化数据馈送726、事件流728、事件更新730等。

计算机系统700可以是包括手持便携式设备(例如,蜂窝电话、计算平板、PDA)、可穿戴设备(例如,Google头戴式显示器)、PC、工作站、大型机、信息亭(kiosk)、服务器机架或任何其它数据处理系统的各种类型中的一种类型。

由于计算机和网络的不断变化的本质,图中绘出的计算机系统700的描述仅旨在作为具体示例。具有比图中绘出的系统更多或更少的组件的许多其它配置是可能的。例如,定制的硬件还可以被使用和/或特定的元件可以在硬件、固件、软件(包括小程序)或其组合中实现。此外,可以采用到其它计算设备(诸如网络输入/输出设备)的连接。基于本文提供的公开内容和教导,本领域普通技术人员将理解实现各种实施例的其它方式和/或方法。

图8示出了其中可以实现本发明的各种实施例的、用于修改移动设备应用的生命周期的示例性系统800的简化结构图。

如图8中所示,示例性系统800可以包括第一提供单元801、第一重命名单元802、第一插入单元803、第一修改单元804和第一创建单元805。第一提供单元801可以被配置为提供相关联的应用清单文件和字节码文件,该应用清单文件和该字节码文件对应于计算机软件应用。第一重命名单元802可以被配置为将应用类的原始方法重命名为字节码文件中的重命名的方法。第一插入单元803可以被配置为在字节码文件中的应用类中插入包装器方法,该包装器方法具有原始方法的名称,该包装器方法被配置为在调用重命名的方法之前调用认证或加密方法。第一修改单元804可以被配置为将原始内容提供器类的名称修改为应用清单文件中的经修改的内容提供器类名称。第一创建单元805可以被配置为在字节码文件中创建包装器内容提供器类,该包装器内容提供器类具有经修改的内容提供器类名称,该包装器内容提供器类被配置为在转发对原始内容提供器类的方法的调用之前检查原始内容提供器类是否被实例化。

第二重命名单元806可以被配置为将活动类的原始方法的名称重命名为字节码文件中该活动类的重命名的方法。第二插入单元807可以被配置为在字节码文件中的该活动类中插入假方法,该假方法具有活动类的原始方法的名称,该假方法被配置为在调用活动类的重命名方法之前调用认证或加密方法。

在一个实施例中,应用清单文件中的所有内容提供器类名称被重命名。

在一个实施例中,系统还可以包括:第一读取单元808,其被配置为通过包装器方法读取策略,其中对认证或加密方法的调用基于策略。

在一个实施例中,策略从信息技术(IT)部门被发送到其上安装移动设备应用的移动设备。

在一个实施例中,假类包括对移动设备管理器应用的调用。

在一个实施例中,类包括静态块初始化。

在一个实施例中,类包括构造器。

在一个实施例中,系统还可以包括第三重命名单元809,其被配置为重命名应用静态初始化方法、应用构造器方法、应用attachBaseContext()方法、内容提供器静态初始化方法、内容提供器构造器方法、内容提供器onCreate()方法、应用onCreate()方法、启动器活动静态初始化方法、启动器活动构造器方法以及字节码文件中的启动器活动onCreate()、onStart()和onResume()方法。

在一个实施例中,系统还可以包括第三插入单元810,其被配置为将onCreate()、onStart()、onStop()、onRestart()、onPause()、onResume()或onDestroy()方法插入到包装器类中。

在一个实施例中,第一重命名单元可以包括追加单元,其被配置为将前缀或后缀追加到原始方法,以创建重命名的方法。

在一个实施例中,应用清单文件包括可扩展标记语言(XML)代码。

在一个实施例中,字节码文件是用于Google计算机应用的Google可执行(DEX)字节码文件。

在一个实施例中,系统还可以包括提取单元811,其被配置为从Google应用包(APK)文件提取应用清单文件和字节码文件。

系统800的单元可以由硬件(诸如现场可编程门阵列(FPGA)、集成电路(IC)或专用集成电路(ASIC)等)、软件、固件或它们的任何组合来实现以实行本发明的原理。本领域技术人员应当理解,图8中描述的单元可以被组合或分成子单元,以实现如上文描述的本发明的原理。因此,图8中描述的单元可以根据实际需要根据如上面的实施例中描述的本发明的原理来进行各种操作。

根据本发明的一些示例性实施例可以如下。

(1)一种用于修改移动设备应用的生命周期的计算机系统,该系统包括:

处理器,以及

与处理器可操作地耦接的存储器,该处理器执行来自存储器的指令,

其中该处理器被配置为:

提供应用清单文件和字节码文件,应用清单文件和字节码文件对应于计算机软件应用;

将应用类的原始方法重命名为字节码文件中的重命名的方法;

在字节码文件中的应用类中插入包装器方法,该包装器方法具有原始方法的名称,该包装器方法被配置为在调用重命名的方法之前调用认证或加密方法;

将原始内容提供器类的名称修改为应用清单文件中的经修改的内容提供器类名称;以及

在字节码文件中创建包装器内容提供器类,该包装器内容提供器类具有经修改的内容提供器类名称,该包装器内容提供器类被配置为在转发对原始内容提供器类的方法的调用之前检查原始内容提供器类是否被实例化。

(2)根据(1)所述的计算机系统,其中处理器还被配置为:

将活动类的原始方法的名称重命名为字节码文件中该活动类的重命名的方法;以及

在字节码文件中的该活动类中插入假方法,该假方法具有活动类的原始方法的名称,该假方法被配置为在调用活动类的重命名的方法之前调用认证或加密方法。

(3)根据(1)所述的计算机系统,其中应用清单文件中的所有内容提供器类名称被重命名。

(4)根据(1)所述的计算机系统,其中处理器还被配置为:

通过包装器方法读取策略,其中对认证或加密方法的调用基于策略。

(5)根据(4)所述的计算机系统,其中策略从信息技术(IT)部门被发送到其上安装移动设备应用的移动设备。

(6)根据(1)所述的计算机系统,其中包装器方法包括对移动设备管理器应用的调用。

(7)根据(1)所述的计算机系统,其中原始方法包括静态块初始化。

(8)根据(1)所述的计算机系统,其中原始方法包括构造器。

(9)根据(8)所述的计算机系统,其中处理器还被配置为:

重命名应用静态初始化方法、应用构造器方法、应用attachBaseContext()方法、内容提供器静态初始化方法、内容提供器构造器方法、内容提供器onCreate()方法、应用onCreate()方法、启动器活动静态初始化方法、启动器活动构造器方法,以及字节码文件中的启动器活动onCreate()、onStart()和onResume()方法。

(10)根据(1)所述的计算机系统,其中处理器还被配置为:

将onCreate()、onStart()、onStop()、onRestart()、onPause()、onResume()或onDestroy()方法插入到包装器类中。

(11)根据(1)所述的计算机系统,其中处理器被配置为重命名原始类名称包括处理器被配置为将前缀或后缀追加到方法名称,以创建重命名的方法。

(12)根据(1)所述的计算机系统,其中应用清单文件包括可扩展标记语言(XML)代码。

(13)根据(1)所述的计算机系统,其中字节码文件是用于Google计算机应用的Google可执行(DEX)字节码文件。

(14)根据(1)所述的计算机系统,其中处理器还被配置为:

从Google应用包(APK)文件提取应用清单文件和字节码文件。

在前述说明书中,参考其具体实施例描述了本发明的方面,但本领域技术人员将认识到本发明不限于此。上文描述的发明的各个特征和方面可以单独使用或联合使用。此外,在不背离本说明书的更广泛的精神和范围的情况下,可以在超出本文所描述的环境和应用的任何数量的环境和应用中利用实施例。相应地,说明书和附图将被认为是说明性的而不是限制性的。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1