一种用于在经编译软件内修改机器指令的方法和系统与流程

文档序号:14203668阅读:317来源:国知局
一种用于在经编译软件内修改机器指令的方法和系统与流程

本发明涉及用于在经编译软件内修改机器指令的系统和方法。



背景技术:

web和移动应用公司经常依赖于第三方服务来为其产品添加功能。这些第三方服务通常需要以软件开发工具包(sdk)、应用程序编程接口(api)、软件库或其他软件代码的形式来实现软件代码。虽然这些第三方服务可以显著地增强用户对web或移动应用的享受,并且为实施第三方服务的公司创造重大价值(即,广告收益、经改进的用户功能、增强的客户支持),但是安装第三方代码的负担落在了web和移动应用公司自己身上。公司人员(通常是内部开发人员)可能需要几个小时或者甚至几天才能正确执行单个第三方sdk的手动实施。内部开发人员必须首先从无数选择中识别他想使用的适当的第三方服务(例如,来自数十个竞争的移动广告网络),阅读提供了安装说明的相关联支持手册以便使用不熟悉的第三方sdk,并且然后将sdk直接安装到web或移动应用源代码中。这个过程在管理上是繁琐的,并且需要冗长的质量保证和测试程序来确保安装过程正确完成,并且不会无意间损坏web或移动应用。例如,想要通过在线广告创造收益并且不具有资源或时间来建立其自己的广告网络系统的web或移动公司将必须将第三方广告网络sdk安装到公司的web或移动app中。这个sdk将在web或移动应用中运行广告并且为公司提供广告收益。

第三方服务提供方定期地更新它们的sdk。如果公司希望使用第三方服务的最新特征和功能,则必须将升级的sdk实施到公司的web或移动应用中。这不是简单且快速的过程。web或移动应用必须由熟练的开发人员来进行,这有可能破坏业务运营。必须移除旧的sdk,并且由具有所需技能和经验的人员来安装和测试已升级的sdk。具有多个第三方sdk的成功公司可能必须雇佣一个全职内部开发人员团队来管理这个过程。由于这个原因,许多web和移动应用开发人员简单地避免使用将在其他方面满足需要的第三方服务。识别最佳第三方服务、管理各种首次sdk安装、跟踪sdk更新何时可用并且然后重新执行繁琐的安装、以及测试过程的负担对于小企业来说可能是难以承受的。事实上,已经创造出用于管理新sdk和已更新sdk泛滥的新术语:‘sdk疲劳(sdkfatigue)’。

对于开发人员来说,与实施第三方系统相关联的成本可能过高,尤其是当考虑所述多个第三方服务时,开发人员将必须在选择适合其需求的一个第三方服务之前对其进行评估。例如,在找到最适合他的特定应用(比如,休闲游戏或社交网络应用)的广告网络之前,开发人员可能需要测试十几个第三方广告网络。对于许多web和移动应用公司来说,sdk实施和持续管理过程如此耗时且困难以至于他们仅限制对这些有价值的第三方服务的使用。结果是,这些公司错过了有价值的增量收益机会以及他们可以提供给其客户的创新性新服务。

因此,需要一种方法:利用经编译软件应用并在无需开发人员评估最适合其web或移动应用的最佳第三方服务的情况下对该经编译软件应用进行修改,并且这样做没有手动地将第三方软件代码(sdk、api)插入到其web或移动应用的源代码中的负担。还需要一种方法,该方法将允许开发人员在没有通常与针对每个服务手动实施sdk相关联的挑战和业务中断的情况下毫不费力地测试大量具有潜在价值的第三方服务,从而使web和移动应用公司能够快速评估和实施多个第三方服务以便在诸如广告、分析、用户调研、死机报告、开发者工具、库、app评级提示、创新推广活动、app购买等领域增强其产品和服务功能,并且对应用进行修改从而使得其可以恰当地使用客户端设备上的硬件。此外,需要一种方法来允许由之前安装在web或移动应用中的sdk执行的现有功能被重新定向到新的或更优化的目的。此外,需要一种方法,所述方法可以在各种格式、操作系统和编程语言(诸如,ios、android、html5、c和c+以及flash)中执行这些修改。



技术实现要素:

本发明涉及一种用于修改经编译软件应用以便实现附加软件代码从而增强软件应用的功能的系统和方法。所述系统和方法包括:接收软件应用二进制和修改选项、基于所述修改选项来修改所述软件应用二进制、编译所述软件应用二进制、以及以可用格式返回经修改的软件应用二进制。

本发明的目的是:对软件应用二进制、修改选项和元数据进行分析以判定是否需要在二进制级别、汇编级别和/或源代码级别对机器指令进行修改,并且在所需级别自动地执行所述修改以简化所述修改过程。

附图说明

图1是根据本公开实施例的包括web服务和修改服务的软件修改系统的调用图;

图2示出了在被软件修改系统的实施例修改之前在计算设备上运行的软件应用;

图3示出了在被软件修改系统的实施例修改之后在计算设备上运行的软件应用;

图4示出了根据本公开实施例的web服务的示例计算机实现方式;

图5示出了根据本公开实施例的web服务上提供的修改选项的示例计算机实现方式;

图6示出了根据本公开实施例的软件修改服务过程的示例性流程图;

图7示出了根据本公开实施例的软件修改系统过程的示例性流程图;

图8示出了根据本公开实施例的软件修改系统过程的示例性流程图;

图9示出了根据本公开实施例的软件修改系统过程的示例性流程图;并且

图10示出了在某些实施例中可以用于实施本公开各个方面的计算机的高级图。

具体实施方式

以下结合附图阐述的详细描述旨在作为对本发明的目前优选实施例的描述并且不旨在代表本发明可以被构造或利用的仅有形式。所述描述结合所展示的实施例阐述了用于构造和操作本发明的步骤的功能和顺序。然而,应当理解,可以通过不同的实施例来实现相同的或等效的功能和顺序,所述不同的实施例同样旨在被包含在本发明的精神和范围内。

将理解的是,尽管此处可以使用术语“第一”、“第二”等来描述各个元件,但是这些元件不应被这些术语限制。这些术语仅用于将一个元件与另一个元件进行区分。例如,在不偏离本发明范围的情况下,第一姿势可以称为第二姿势,并且类似地,第二姿势可以称为第一姿势。

在此对本发明的描述中所使用的术语仅用于描述特定实施例的目的,并且不旨在限制本发明。如在对本发明的描述和所附权利要求书中所使用的,除非上下文另有明示,否则单数形式“一个(a)”、“一个(an)”和“所述(the)”旨在同样包括复数形式。还将理解的是,如本文使用的术语“和/或”指代并且包括相关联列举项的一个或多个项的任何和所有可能组合。将进一步理解的是,当在本说明书中使用术语“包括(comprises)”和/或“包括(comprising)”时,其指定陈述的特征、整体、步骤、操作、元件和/或部件的存在,但不排除一个或多个其他特征、整体、步骤、操作、元件、部件和/或它们的组的存在或添加。

术语软件应用二进制意指采用二进制格式的计算机应用。软件应用二进制可以使用适当的程序来读取,或者可以被提取用于揭示资产(revealassets)。应当理解,软件应用二进制、软件应用、经编译的软件应用、和计算机应用可被互换地使用。

一种用于在经编译软件内修改机器指令的方法和系统包括软件模块,该软件模块用于:接收具有所期望的修改选项的计算机应用、分析该计算机应用以判定在哪个(哪些)级别处修改该计算机应用、在所确定的(多个)级别处修改该计算机应用、以及返回经修改的计算机应用。与直接将修改嵌入源代码内的编程器相反,此方法通过在二进制级别处开始并且仅当必要时才在汇编代码或源代码中执行修改来简化修改过程。

附图描绘了一种用于在经编译软件内修改机器指令的方法和系统的实施例。虽然所描绘的实施例包括web服务100和修改服务101以便解释本发明的各种功能,但是应当理解,可以以任何数量的配置来实施本发明,比如在公共网络和/或私有网络上的单个计算设备或多个计算设备。在示例实施例中,用户界面(比如,web服务100)用于收集并存储软件应用二进制102、收集并存储请求信息103(比如,与修改和元数据有关的信息)、存储经修改的应用和元数据107、以及将经修改的应用返回至用户108。修改服务101对应用进行修改,包括分析软件应用104、对软件应用执行修改105、以及签名/最终确定应用106。

在一些实施例中,用户界面(比如,web服务100)可以存储在充当客户端与系统进行交互的网关的一个或多个可公开访问的web服务器上。该一个或多个可公开访问的web服务器可以包括虚拟的计算资源和/或存储资源,并且可以提供多种服务。例如,该一个或多个服务器可以提供安全功能以供用户注册/访问系统从而修改计算机应用。在一些实施例中,用户还可以被要求提交附加安全凭证以用于向系统提交计算机应用或者访问市场(诸如,store或appstore)以供系统来访问和/或替换计算机应用。该一个或多个服务器还可以经由网络连接为web浏览器和/或为在客户端计算机(诸如,智能电话、平板计算机、膝上型计算机或台式计算机)上的应用提供用户界面和/或扩展。

如在步骤102中所示出的,web服务可以提示用户向系统提交软件应用。使用web服务100的用户可以以一种或多种方式来指导web服务收集并存储计算机应用。在一些实施例中,web服务100提供用户界面,在用户界面中,用户可以将软件应用二进制上传至web服务100。在一些实施例中,在用户界面中,软件应用二进制已被上传至app商店、市场或其他位置,用户可以向web服务100提供web服务可以访问并下载软件应用的位置。在一些实施例中,web服务要求用户提供允许web服务访问软件应用市场的安全凭证。

在步骤103中,web服务100还收集并存储来自用户的请求信息。在一些实施例中,web服务100提供用于用户选择的选项以便确定用户将向web服务100提供什么类型的修改和什么类型的信息。例如,请求信息可以包括用户正从该服务请求的修改细节、描述应用的元数据、以及应用签名信息。

元数据可以有用于辅助修改服务101来判定做出什么修改,比如,通过提供应用的操作平台和代码结构。元数据还可以用于被包括到经编译的应用中以供配置或其他用途,比如通过提供应用的版本号或类别。在一些实施例中,不需要并且不收集元数据。例如,在一些实施例中,系统代表用户自动地选择修改,因此元数据是不相关或不需要的并且不被收集。在一些实施例中,可以由用户提供或者从软件应用中自动地提取元数据。元数据可以包括但不限于:二进制的目标操作平台、应用的标题、版本号、版本代码、视觉图标、标识符字符串(例如,程序包名称、包标识符等)、取向设置、计算机设备兼容性、当前代码结构、现有代码类别表、代码结构、方法、字符串、常量、导入或在应用内使用的其他构造、应用类别、应用子类别、类型(genre)、内容(成熟度)评级、对应用的描述、与应用相关联的描述性标签、应用标识符、sdk、api或库元数据设置、图标、二进制资产、图像、文本资产、xml以及其他这样的信息。另外,指定如何在应用内修改机器指令的信息可以包括但不限于:是否包括、连接、移除、禁用或修改特定的sdk、库、代码片段、文本或api。

在一些实施例中,web服务100进一步接受指定应用应当如何被数字签名的信息。将数字签名添加至软件应用的能力可以帮助用户提供应用所有权的证明,该证明可能是其他服务或系统起作用所需的。在启用数字签名的实施例中,用户可以上传签名“密钥”或“证书”,一旦已经完成修改,该签名“密钥”或“证书”然后就可以用于对应用进行签名。在一些实施例中,web服务100允许用户选择之前使用的密钥或证书来进行签名。在一些实施例中,web服务100允许用户选择使用预生成的证书,尤其是用于调试目的。在一些实施例中,web服务100提供未签名的应用。在一些实施例中,web服务100可以允许用户生成新的证书或密钥来对他们的应用进行签名。新的密钥然后与用户相关联并且被放置在安全存储机构内以供稍后使用。

一旦web服务100收集软件应用二进制和任何相关信息,web服务100就可以将软件应用二进制和任何相关信息传送至修改服务101以便修改软件应用二进制。在一些实施例中,修改服务101存储在与web服务100通信的一个或多个私有计算系统上。使修改服务101存储在私有计算机系统阵列上可以提供附加安全层,该附加安全层保护软件应用和修改工具免于暴露于公共系统中固有的安全风险中。在一些实施例中,web服务100和修改服务101可以在单个服务器上。

在步骤104中,修改服务101分析应用以判定如何做出所请求的修改。不同类型的修改(诸如广告服务、评级服务和分析服务)可以要求在不同的代码级别(诸如在二进制级别、汇编级别或源代码级别)处对软件应用二进制进行修改。例如,如果每当软件应用首次启用时用户都请求添加广告服务作为弹出,则广告服务可以在二进制级别处实现,而无需将二进制代码反汇编成汇编代码或将汇编代码反编译成源代码。然而,如果用户请求广告服务和分析服务两者,则可以要求修改服务101在多个级别处修改源代码,诸如在二进制级别、汇编级别和源代码级别处。修改服务101判定每次修改将如何修改软件应用二进制的每个级别。

在步骤105中,修改服务101然后对软件应用执行修改。在此步骤期间,从软件应用中提取与修改过程相关的信息。这个提取过程可以包括但不限于:提取经压缩的二进制文件、将经编译二进制代码(字节码、机器码)反汇编成其他格式、将汇编代码反编译成源代码、以及将二进制资产解码或转换成其他格式。虽然代码采用其各种格式,但是修改是针对机器指令进行的。这里,指令可以指二进制代码、字节代码、反汇编或汇编代码以及未经编译的/经反编译的或源代码。修改指令可以以各种方式来实现,包括:修改指令、包含补充指令、移除现有指令、以及修改、包含和移除元数据、资产(包括图像)和二进制文件。

在步骤106中,经修改的应用被最终确定,诸如被建立、被编译、被压缩、被对齐、被汇编或者导致创建可用应用的任何其他方法。如果适用的话,还使用可用于由用户验证应用所有权的凭证/证书来对经修改应用进行签名。在步骤107中,经修改应用和元数据然后返回并且与web服务100一起存储。

在步骤108中,将应用返回至用户。在一些实施例中,使经修改应用可用于用户下载。在一些实施例中,使经修改的应用可用的方法可以涉及但不限于:呈现软件以供下载、将软件存储在服务器上、允许内部访问以供调试和服务改善、或者将软件发送至第三方或内部公开服务。

图2示出了在完成修改之前的示例软件应用203。如所描绘的,软件应用203被呈现在计算设备201的显示器202上。如所示出的,软件应用203具有内容204,比如视觉要素和非视觉要素。仅作为示例,这些要素可以包括图像、文本、地图、游戏内容、以及其他多媒体或用户界面要素。

图3示出了在已经完成修改之后的示例经修改的软件应用301。如所示出的,经修改的软件应用301可以仍然具有其原始内容204。该经修改的软件应用还具有可以包括视觉和非视觉内容的经修改内容。在此示例中,已经将新服务303和广告304添加在经修改的软件应用301中。对现有app做出的修改支持这些附加特征。

图4提供了可从web浏览器400查看的用于与用户交互以便收集并存储计算机应用和其他相关数据的示例网站401。此示例网站401提供了上传模块402以便浏览器的用户上传软件应用。网站401可以使用进度条403来显示上传的进度。该网站还可以提供附加字段404,用户可以在该附加字段中提供附加信息。在示例网站401中,用户可以提供与类别、类型以及其他信息(比如应用的屏幕取向)有关的信息。

图5提供了用于选择可从web浏览器500访问的修改选项的示例网站501。修改选项菜单502允许用户选择在经修改的软件应用中包括什么类型的服务。在此示例中,用户可以选择切换框503来启用或关闭服务,并且可以在输入框504中输入附加信息来为所选的修改提供配置元数据。

图6描绘了根据本公开实施例的软件修改流程图。如所示出的,用户在计算设备600上将软件应用二进制601(a)提供至软件修改服务,比如至网站605(a)。用户还可以将元数据602和修改选择603提供至网站,和/或软件修改服务可以对软件应用二进制601(a)执行进一步的元数据提取604。一旦收集了包括软件应用二进制601(b)和修改选择元数据606的所有相关数据,就将所有相关数据提供给软件分析器607以确定修改应用所需的必要步骤。该修改然后在步骤608中被执行,并且然后在步骤609中被编译成可用格式作为经修改的应用二进制610(a)。然后,网站允许访问经修改的应用,该经修改的应用可以在步骤610(b)中被提供给用户计算设备或者以其他方式提供给用户,诸如通过允许内部访问以供调试和服务改善或者通过将软件发送至第三方或内部公开服务。

图7至图9描绘了修改系统608的各流程图,各流程图基于软件分析器607确定需要什么而变化以便对软件应用进行修改。图7描绘了软件修改系统700,在该软件修改系统中,已经确定需要对二进制指令、汇编指令、以及源代码进行修改。如所示出的,将软件应用二进制701以及任何修改选择和元数据702提供至软件修改系统700。提取器703提取应用二进制来揭示资产(如果适用的话),并且然后二进制补丁更新程序704基于修改选择和元数据702来修改二进制指令。反汇编器705然后将应用二进制文件反汇编成汇编指令,并且汇编注入器706基于修改选择和元数据702来修改汇编指令。反编译器707然后将汇编指令反编译成源代码,并且源修改器708基于修改选择和元数据702来修改源代码。文件注入器709然后将文件或元数据注入或打补丁到经解构的应用中。编译器710经过多轮将应用编译成可用格式。然后,如果适用的话,签名方(signer)711将对经修改应用进行签名以验证应用对用户的所有权。然后使得经修改的应用二进制712对用户可用。

在一些实施例中,如果不需要某些类型的修改,则跳过这些修改。图8描绘了不需要对源代码进行修改的软件修改系统。而是,在二进制级别(提取器703和二进制补丁更新程序704)和汇编级别(反汇编器705和汇编注入器706)处执行修改。图9描绘了不需要对源代码或汇编代码进行修改的软件修改系统的实施例。而是,在二进制级别(提取器703和二进制补丁更新程序704)处完成所有修改。

在各个实施例中,可以按照不同于所描述或所示出的特定顺序的顺序来执行本文中所描述的方法步骤,包括在图1和图6至图9中所描述的方法步骤。在其他实施例中,可以从所描述的方法中提供其他步骤或者可以消除步骤。

本文中所描述的系统、装置和方法可以使用数字电路系统或者使用一个或多个计算机来实施,该一个或多个计算机使用众所周知的计算机处理器、存储器单元、存储设备、计算机软件、以及其他部件。通常,计算机包括用于执行指令的处理器以及用于存储指令和数据的一个或多个存储器。计算机还可以包括或耦合至一个或多个存储设备,诸如一个或多个磁盘、内部硬盘和可移除盘、光盘等。

本文中所描述的系统、装置和方法可以在基于网络的云计算系统内使用。在这种基于网络的云计算系统中,连接至网络的服务器或另一处理器经由网络与一个或多个客户端计算机进行通信。例如,客户端计算机可以通过在客户端计算机上驻留并操作的网络浏览器应用与服务器进行通信。客户端计算机可以经由网络将数据存储在服务器上并且访问数据。客户端计算机可以经由网络将数据请求或在线服务请求传输至服务器。可以由服务器或者由另一处理器在基于网络的云计算系统中执行本文中所描述的方法的某些步骤,包括图1和图6至图9的步骤中的一个或多个步骤。可以由客户端计算机在基于网络的云计算系统中执行本文中所描述的方法的某些步骤,包括图1和图6至图9的步骤中的一个或多个步骤。可以由服务器和/或由客户端计算机在基于网络的云计算系统中以任何组合的方式来执行本文中所描述的方法的步骤,包括图1和图6至图9的步骤中的一个或多个步骤。

图10中展示了可以用于实施本文中所描述的系统、装置和方法的示例性计算机1000的高级框图。计算机1000包括操作性地耦合至数据存储设备和存储器的处理器1010。处理器1010通过执行计算机程序指令来控制计算机1000的整体操作,该计算机程序指令限定这类操作。计算机程序指令可以存储在数据存储设备1020中或其他非暂态计算机可读介质中,并且当希望执行计算机程序指令时,将该计算机程序指令加载到存储器1030中。因此,图1和图6至图9的方法步骤可以由存储在存储器1030和/或数据存储设备1020中的计算机程序指令来限定,并且由执行计算机程序指令的处理器1010进行控制。

例如,计算机程序指令可以被实施为由本领域技术人员编程的计算机可执行代码,以便执行由图1和图6至图9中的方法步骤所限定的算法。计算机1000还包括用于经由网络与其他设备进行通信的一个或多个网络接口1040。计算机1000还可以包括能使用户与计算机1000交互的一个或多个输入/输出设备1050(例如,显示器、键盘、触摸板、鼠标、扬声器、按钮等)。

除了别的以外,处理器1010可以包括具有并入处理器设计中的软件指令的专用处理器和具有在存储设备1020或存储器1030中的指令的通用处理器以控制处理器1010,并且可以是计算机1000的唯一处理器或多个处理器之一。处理器1010可以是自含式计算系统,包含多个核或处理器、总线、存储器控制器、高速缓存等。多核处理器可以是对称或非对称的。处理器1010、数据存储设备1020和/或存储器1030可以包括一个或多个应用专用集成电路(asic)和/或一个或多个现场可编程序门阵列(fpga)、可以由一个或多个asic和/或fpga补充、或者可以并入一个或多个asic和/或fpga之中。可以理解,本公开可以在具有一个或多个处理器1010的计算机1000上或者在联网在一起的计算机组或集群上操作以便提供更强的处理能力。

数据存储设备1020和存储器1030各自包括有形的非暂态计算机可读存储介质。举例来讲,但非限制地,这种非暂态计算机可读存储介质可以包括随机存取存储器(ram)、高速随机存取存储器(dram)、静态随机存取存储器(sram)、双数据速率同步动态随机存取存储器(ddrram)、只读存储器(rom)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、闪存、光盘只读存储器(cd-rom)、数字通用光盘只读存储器(dvd-rom)盘或其他光盘存储设备、磁盘存储设备或其他磁存储设备、或者可以用于以计算机可执行指令、数据结构或处理器芯片设计的形式携带或存储所期望的程序代码手段的任何其他介质。当通过网络或其他通信连接(或者硬接线、无线、或者其组合)向计算机传送或提供信息时,计算机适当地将该连接视为计算机可读介质。因此,任何这种连接都被适当地称为计算机可读介质。以上各项的组合也应当包括在计算机可读介质的范围内。

网络/通信接口1040使得计算机1000能够与网络以及使用任何合适的通信标准、协议和技术的其他设备进行通信,该网络诸如互联网(也被称为万维网(www))、内联网和/或无线网络(诸如蜂窝电话网络、无线局域网(lan)和/或城域网(man))。举例来讲,但非限制地,这类合适的通信标准、协议和技术可以包括以太网、wi-fi(例如,ieee802.11)、wi-max(例如,802.16)、蓝牙、近场通信(“nfc”)、射频系统、红外、gsm、edge、hs-dpa、cdma、tdma、四频、voip、imap、pop、xmpp、simple、imps、sms或任何其他合适的通信协议。举例来讲,但非限制地,网络接口1040使得计算机1000能够传送数据、同步信息、更新软件或进行任何其他合适的操作。

输入/输出设备1050可以包括外围设备。输入/输出设备1050还可以包括计算设备的多个部分,诸如智能电话具有触摸屏、扬声器和按钮。例如,输入/输出设备1050可以包括:用于向用户显示信息的显示设备(比如,液晶显示(lcd)监视器)、用户可以向计算机1000提供输入的键盘和鼠标、或者用于输入和输出两者的触摸屏。

本文中所讨论的任何或所有的系统和装置(包括个人计算机、平板计算机、手持式设备、蜂窝电话、服务器、数据库、云计算环境及其部件)都可以使用计算机(比如计算机1000)来实现。

本领域技术人员将认识到,实际计算机或计算机系统的实现方式也可以具有其他结构并且可以包含其他部件,并且图10出于说明性目的是这种计算机的一些部件的高级表示。

出于说明和描述目的,已经呈现了对本发明优选实施例的前述描述。该描述不旨在是穷尽性的或将本发明限制为所公开的精确形式。鉴于以上教导,许多修改和变体都是可能的。本发明的范围旨在不受此详细说明书限制,而是由所附权利要求书的权利要求和等效物来限制。

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