停用经因子分解的代码的制作方法

文档序号:6363762阅读:97来源:国知局
专利名称:停用经因子分解的代码的制作方法
技术领域
本申请涉及停用经因子分解的代码。
背景技术
用于个人计算机的计算机程序易于反向工程。例如,可通过编辑程序的机器码来检测并禁用这种程序中的许可实施码。结果,一旦计算机程序进入市场,攻击者可以对它的保护机制进行反向工程并生产功能上表现为与真实副本等效、但是反盗版实施被禁用的新的副本。

发明内容
公开了关于停用(decommissioning)计算设备上的经因子分解的程序代码的各个实施例。例如,一个所公开的实施例提供了一种操作计算设备的方法。该方法包括执行计算设备上的程序,并且在执行程序的同时,通过代码图(codemap)来标识经因子分解的功能的远程位置,发送对该经因子分解的功能的调用并接收返回响应。该方法进一步包括,在发生停用事件后,接收经因子分解的功能的副本并用经因子分解的功能的副本的位置来更新代码图。提供本发明内容以便以简化形式介绍将在以下具体实施方式
中进一步描述的一些概念。本发明内容并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。此外,所要求保护的主题不限于解决在本公开的任一部分中所提及的任何或所有缺点的实现。


图I示出了经因子分解的程序的使用环境的示例的实施例。图2显示了停用事件和经因子分解的代码的后续停用的示例实施例的实施例。图3显示了停用经因子分解的程序代码的方法的实施例。图4示出了描绘计算设备的一实施例的框图。
具体实施例方式反盗版技术的新近发展已经导致了分拆计算反盗版方法的发展。分拆计算方法涉及将程序划分或因子分解成两个或更多个片段,这些片段彼此远程或分开地执行。例如,在一些实施例中,程序的较小的、功能上重要的片段定位在服务器上,而程序的其余部分则定位在客户机上。客户机执行程序至控制流引向服务器部分的那一点。客户机然后可以准备适当的数据来作为输入,并对存在于服务器处的功能作出远程的过程调用。如果程序的客户机副本是经授权的,那么服务器执行该调用并向客户机返回结果。另一方面,如果客户机副本是未经授权的或者如果服务器检测到篡改尝试,那么服务器将拒绝执行调用或者将以与它对经授权的客户机所执行的调用不同的方式来执行调用,由此中断客户机上的程序执行。然而,这样的分拆计算反盗版方法可能增加程序的运行时操作成本。因此,在经因子分解的程序的生命周期期间的某个时刻处,转移被远程地执行的代码片段使得其能本地地运行可能是理想的。这种被远程地执行的经因子分解的程序的片段的下载使得该被远程地执行的片段能本地地运行在此被称为“停用”。经因子分解的程序可在预定阈值事件发生后被停用,诸如事件计数阈值或时间阈值。进一步,经因子分解的程序可由发布者在任何时间停用。例如,一旦经因子分解的程序的发布者已经收回了初始投资中预期的利润,则该发布者可能希望减少经因子分解的程序的运行时操作成本,这是因为在收回利润后的经因子分解的程序的价值可能低于与将程序保持在经因子分解的形式相关联的操作成本。由此,在经因子分解的程序的生命的某个时 亥IJ,例如,在销售曲线的时机宽度已经过去之后或在发布者确定的任何时间,经因子分解的程序可被停用以部分地或全部地从客户机运行,而没有远程服务依赖性。任何触发停用过程的事件、请求或其它发生的事情在此被称为“停用事件”。因此,公开的各实施例涉及停用经因子分解的程序。在讨论停用经因子分解的程序之前,参考图I描述了示例使用环境的实施例。使用环境100包括其上正运行有程序代码的经授权的副本104的第一计算设备A102,以及其上正运行有程序代码的未经授权的副本107的计算设备B106。程序代码的经授权的版本和未经授权的版本都缺少改为驻留在可通过网络112访问的远程计算设备110上的一个或多个功能。应当理解,此处用于描述经因子分解的代码的术语“功能”等可表示与程序的其余部分分开的任何代码部分。可基于各种考虑来选择与程序代码的其余部分分开的缺少的功能i,这些考虑包括但不限于功能108的使用对于令人满意的用户体验的重要性、通过输入/输出分析来推断出功能108的操作的难度、与功能108的远程主存相关联的任何经济和/或计算资源成本、以及其他这样的考虑。尽管缺少的功能i被描绘为存储在远程服务器系统上,但是可以理解,该缺少的功能可以存储在任何合适的远程计算设备上。进一步地,可以理解此处所使用的术语“服务器”可以指主存一个或多个缺少的功能的任何这样的远程计算设备。程序代码可额外地包括代码图103。代码图指示将要被程序运行的代码的位置。例如,代码图可以是诸如清单文件或xml文档之类的库,其包括程序所调用的功能的位置信息。如下所描述的,代码图可在经因子分解的程序的停用期间被动态地更新,以在停用过程期间跟踪功能的位置。远程计算设备110包括其中存储了缺少的功能i的经因子分解的功能存储114,并且还包括其中可存储关于经授权的用户的信息的经授权的用户信息存储116。作为示例,图I描绘了与计算设备A102的用户相对应的“用户A许可” 118,“用户A许可” 118存储在远程计算设备Iio上。相反,并没有存储用于运行在计算设备B上的未经授权的副本的许可。图I还示出了在远程计算设备110与客户机A和B之间的示例通信。在计算设备A执行程序代码时,在到达代码中需要使用缺少的功能108的那个点时,计算设备A经由网络112调用在远程计算设备110处的缺少的功能108。远程计算设备110接收该调用、确定计算设备A正在运行程序代码的经授权的副本、然后执行该功能并向计算设备A返回结果。另一方面,在计算设备B调用缺少的功能108时,远程计算设备110确定计算设备B不在运行程序代码的经授权的副本并且不执行缺少的功能108也不向计算设备B返回结果。在此情况下,各种不同的失败模式都是可能的。图2显示了示例停用事件和经因子分解的代码的后续停用的实施例,其中位于远程的功能i的副本被下载到计算设备A使得功能i可以被本地地执行。在所描绘的实施例中,所描绘的停用事件包括对缺失的功能108的满足或超过缺失的功能的预定利用次数的调用,但是可以理解的是任何其它合适的停用事件可触发停用。在发生停用事件后,远程计算设备HO接着将功能i的副本发送到计算设备A。计算设备A接收功能i的副本,并将所接收到的功能i的副本保存在本地存储介质或计算设备A内的设备上或任何其它合适的位置处。代码图接着可用经因子分解的功能的副本的位置来更新。通过这种方式,计算设备A要执行功能i时对远程计算设备110的远程依赖性可被移除,使得功能i可对计算设备A被本地地执行或在任何避免消耗远程计算设备110的计算资源的其它合适位置处被本地地执行。图3显示了用于在计算设备上停用经因子分解的代码的方法300的示例实施例。在302,方法300包括执行计算设备上的程序。程序可在客户机设备上被执行,客户机设备包括但不限于个人计算机、移动设备、服务器、笔记本平板计算机、笔记本计算机、视频游戏控制台、电视机等。在304,方法300包括在执行程序的同时通过代码图来标识经因子分解的功能(例如,图I中显示的功能i)的远程位置。如上描述的,代码图指示将要被程序运行的代码的位置。代码图可以是诸如清单文件或xml文档之类的库,其包括程序所调用的功能的位置信息,并且可在程序执行和停用期间被动态地更新,或可采取任何其它合适的形式。如下所述,代码图可在经因式分解的程序的停用期间被动态地更新,以便跟踪停用过程期间功能的位置。在306,方法300包括发送对经因子分解的功能的调用。例如,如图I显示的,计算设备A可发送对远程计算设备110上的功能i的调用,并且远程计算设备110可接收对经因子分解的功能i的调用。在308,方法300包括如果发送该调用的程序是程序的经授权的副本,则接收返回响应。例如,如图I中显示的,计算设备A可接收来自远程计算设备110的返回响应,并且远程计算设备110可将返回响应发送到计算设备A。可以理解的是,如果发出请求的程序是程序的未经授权的副本,则没有返回或不同的返回可被发送。在310,方法300包括检测停用事件的发生。停用事件可以采取任何合适的形式。例如,停用事件可对应于阈值事件的发生,诸如计数阈值或时间阈值。在其它实施例中,停用事件可由程序的发布者基于任何合适的因素来启动。例如,一旦程序已经收回了初始投资中预期的利润、当与将程序保持在经因子分解的形式相关联的操作成本超过从所发布的程序预期的利润时、等等,程序的发布者可决定停用程序。一旦在310检测到停用事件,方法300包括在312接收经因子分解的功能的副本。当停用经因子分解的程序时,经因子分解的程序可能正在运行,并因此有时可能正在执行经因子分解的功能。因此,在某些实施例中,程序可被渐进地停用,使得程序的执行在停用期间不被影响或中断。例如,位于远程的功能的渐进式下载可以在经因子分解的功能正在被程序使用时被中断,并然后在经因子分 解的功能不被程序使用时被恢复。由此,在某些实施例中,在客户机处接收经因子分解的功能的副本可包括当经因子分解的功能不被程序使用时接收副本的至少一部分,使得程序的执行不受停用操作的影响。类似的,停用可经过各种中断,诸如连通性上的中断。在某些示例中,在检测到停用事件的发生后,位于远程的功能的代码可从远程服务器下载到客户机设备,使得功能能在具有执行中的所有开销的情况下本地地执行,而非在下载期间将功能并入正在运行的可执行代码中。在该示例中,停用可通过例如可执行代码的改变和到dll的链接来执行,该dll作为停用产物从远程服务器被接收。此外,如果在停用过程期间有多个位于远程的功能被下载到客户机,那么这些位于远程的功能的下载可基于哪些功能正被程序使用而被区分优先级。例如,如果被下载到客户机的第一位于远程的功能被程序需要,那么该第一位于远程的功能的下载可被中断,而不被程序使用的第二位于远程的功能的下载可被启动。一旦第一位于远程的功能不再被程序使用,那么该第一位于远程的功能的下载接着可在其被中断前停止处继续。可用各种方式来跟踪哪些功能正被程序使用。例如,代码图可与程序运行时信息一起被用来确定哪些功能正被程序使用。进一步地,当停用多个功能时,为了减少下载期间的死锁,这些功能的下载可被交错。在停用期间的位于远程的功能的渐进式下载期间,代码图可被动态地更新来生成功能位置和依赖性图,使得程序可在下载期间继续运行。在314,方法300包括保存经因子分解的功能的副本。例如,如图2中显示的,功能i的副本可被保存在计算设备A上。在某些示例中,被下载的功能可包括各种数字权限管理保护,使得被下载的功能依然至少部分地被保护以免受跟随停用的盗版。在316,方法300包括用经因子分解的功能的副本的位置来更新代码图。通过这种方式,查看代码图来寻找功能位置信息的程序可本地地执行被下载的功能。有时,程序的发布者可希望更新程序,并将更新提供为存储在远程计算设备上的经因子分解的代码来保护程序的新特征。由此,在318,方法300任选地包括用可在远程位置处访问的第二经因子分解的功能来更新程序。接着,远程计算设备110可响应于对第二经因子分解的功能的调用来执行该功能,并将第二返回响应发送到客户机。在320,方法300包括更新代码图来标识第二经因子分解的功能的远程位置,使得用新的功能来更新程序。进一步地,在某些示例中,代码图可包括正在执行的程序版本的指示符。代码图还可包括诸如哪些位于远程的功能已经被停用以及任何新的功能或更新这样的信息。图4示意性示出了可以执行上述方法和过程之中的一个或更多个的非限制性计算系统400。计算系统400可表示图I的计算设备A102、计算设备B106和远程计算设备110的任意一个。以简化形式示出了计算系统400。应当理解,可使用基本上任何计算机架构而不背离本公开的范围。在不同的实施例中,计算系统400可以采取大型计算机、服务器计算机、台式计算机、膝上型计算机、平板计算机、家庭娱乐计算机、网络计算设备、移动计算设备、移动通信设备、游戏设备等等的形式。 计算系统400包括逻辑子系统402和数据保持子系统404。计算系统400可以任选地包括显示子系统406、通信子系统408和/或在图4中未示出的其他组件。计算系统400还可以任选地包括诸如下列用户输入设备例如键盘、鼠标、游戏控制器、相机、话筒和
/或触摸屏等等。
逻辑子系统402可包括被配置为执行一个或多个指令的一个或多个物理设备。例如,逻辑子系统402可被配置为执行一个或多个指令,该一个或多个指令是一个或多个应用、服务、程序、例程、库、对象、组件、数据结构、或其他逻辑构造的一部分。可实现此类指令以执行任务、实现数据类型、变换一个或多个设备的状态、或以其他方式得到所需结果。逻辑子系统402可以包括被配置为执行软件指令的一个或多个处理器。附加地或可替代地,逻辑子系统402可以包括被配置为执行硬件或固件指令的一个或多个硬件或固件逻辑机器。逻辑子系统402的处理器可以是单核或多核的,且在上面执行的程序可以被配置为供并行或分布式地处理。逻辑子系统可以任选地包括遍布两个或多个设备的独立组件,所述设备可远程放置和/或被配置为进行协同处理。逻辑子系统402的一个或多个方面可被虚拟化并由以云计算配置进行配置的可远程访问的联网计算设备执行。数据保持子系统404可包括一个或多个物理、非瞬时设备,这些设备被配置成保持数据和/或可由该逻辑子系统402执行的指令,以实现此处描述的方法和过程。在实现这样的方法和过程时,可以变换数据保持子系统404的状态(例如,以保持不同的数据)。
数据保持子系统404可包括可移动介质和/或内置设备。数据保持子系统404尤其是可以包括光学存储器设备(例如,⑶、DVD、HD-DVD、蓝光盘等)、半导体存储器设备(例如,RAM、EPROM、EEPROM等)和/或磁存储器设备(例如,硬盘驱动器、软盘驱动器、磁带驱动器、MRAM等)。数据保持子系统404可包括具有以下特性中的一个或多个特性的设备易失性、非易失性、动态、静态、读/写、只读、随机存取、顺序存取、位置可寻址、文件可寻址、以及内容可寻址。在某些实施例中,可以将逻辑子系统402和数据保持子系统404集成到一个或更多个常见设备中,如专用集成电路或片上系统。图4还示出以可移动计算机可读存储介质410形式的数据保持子系统的一方面,可移动计算机可读存储介质410可用于存储和/或传输可执行以实现本文描述的方法和过程的数据和/或指令。可移动计算机可读存储介质410尤其是可以采取⑶、DVD、HD-DVD、蓝光盘、EEPROM和/或软盘形式。术语“程序”可用于描述被实现来执行一个或多个特定功能的计算系统400的一个方面。在一些情况中,这样的程序可经由执行由数据保持子系统404保持的指令的逻辑子系统402来实例化。应当理解,可以从相同的应用、服务、代码块、对象、库、例程、API、功能等来实例化不同的模块、程序和/或引擎。类似地,相同的模块、程序和/或引擎可由不同的应用、服务、代码块、对象、例程、API、功能等来实例化。术语“程序”和“引擎”意在涵盖单个或成组的可执行文件、数据文件、库、驱动程序、脚本、数据库记录等。显示子系统406可用于呈现由数据保持子系统404所保持的数据的可视表示。由于此处所描述的方法和过程改变由数据保持子系统保持的数据,并由此变换数据保持子系统的状态,因此同样可以变换显示子系统406的状态以在视觉上表示底层数据的改变。显示子系统406可以包括使用实际上任何类型的技术的一个或多个显示设备。可将此类显示设备与逻辑子系统402和/或数据保存子系统404 —起组合在共享封装中,或此类显示设备可以是外围显示设备。通信子系统408可以被配置成将计算系统400与一个或多个其他计算设备可通信地耦合。通信子系统408可包括与一个或多个不同的通信协议相兼容的有线和/或无线通信设备。作为非限制性示例,通信子系统可被配置为经由无线电话网、无线局域网、有线局域网、无线广域网、有线广域网等进行通信。在一些实施例中,通信子系统可允许计算系统400经由诸如因特网之类的网络发送消息至其他设备和/或从其他设备接收消息。应该理解,此处所述的配置和/或方法在本质上是示例性的,并且,由于可能存在多个变体,所以这些特定实施例或示例不具有限制意义。本文中所述的具体例程或方法可表示任意数量的处理策略中的一个或多个。由此,所示的各个动作可按所述的顺序执行、按其他顺序执行、并行地执行、或者在某些情况下被省略。同样,可改变上述过程的次序。
本公开的主题包括各种过程、系统和配置的所有新颖和非显而易见的组合和子组合,和此处所公开的其他特征、功能、动作、和/或特性、以及其任何和全部等效物。
权利要求
1.一种操作计算设备(102)的方法,所述方法包括 执行所述计算设备(102)上的程序(104); 在执行所述程序(104)的同时,通过代码图(103)来标识经因子分解的功能(108)的远程位置; 发送对所述经因子分解的功能(108)的调用并接收返回响应; 在发生停用事件后,接收所述经因子分解的功能(108)的副本; 保存所述经因子分解的功能(108)的副本;以及 用所述经因子分解的功能(108)的副本的位置来更新所述代码图(103)。
2.如权利要求I所述的方法,其特征在于,接收所述经因子分解的功能的副本包括当所述经因子分解的功能不被所述程序使用时,接收所述副本的至少一部分。
3.如权利要求2所述的方法,其特征在于,进一步包括当所述经因子分解的功能正被所述程序使用时中断接收所述经因子分解的功能的副本,并当所述经因子分解的功能不被所述程序使用时恢复接收所述经因子分解的功能的副本。
4.如权利要求I所述的方法,其特征在于,所述代码图是清单文件。
5.如权利要求I所述的方法,其特征在于,所述停用事件在事件计数阈值之后发生。
6.如权利要求I所述的方法,其特征在于,所述停用事件在时间阈值之后发生。
7.如权利要求I所述的方法,其特征在于,所述经因子分解的功能是第一经因子分解的功能,并且所述方法进一步包括用除所述第一经因子分解的功能之外的第二经因子分解的功能来更新所述程序,所述第二经因子分解的功能能在远程位置处被访问,并更新所述代码图来标识所述第二经因子分解的功能的远程位置。
8.如权利要求7所述的方法,其特征在于,所述代码图包括正在执行的程序版本的指示符。
9.一种计算设备(400),包括 逻辑子系统(402);以及 数据保持子系统(404),包含存储其上的可由所述逻辑子系统执行的机器可读指令以 执行程序(104); 在执行所述程序(104)的同时,通过代码图(103)来标识经因子分解的功能(108)的远程位置; 发送对所述经因子分解的功能(108)的调用并接收返回响应; 在发生停用事件后,接收所述经因子分解的功能(108)的副本; 保存所述经因子分解的功能(108)的副本;以及 用所述经因子分解的功能(108)的副本的位置来更新所述代码图(103)。
10.如权利要求9所述的计算设备,其特征在于,接收所述经因子分解的功能的副本包括当所述经因子分解的功能不被所述程序使用时,接收所述副本的至少一部分。
全文摘要
公开了停用经因子分解的代码。揭示了关于停用计算设备上的经因子分解的程序代码的各个实施例。例如,一个所公开的实施例提供了一种操作计算设备的方法。该方法包括执行计算设备上的程序,并且在执行程序的同时,通过代码图来标识经因子分解的功能的远程位置,发送对该经因子分解的功能的调用并接收返回响应。该方法进一步包括,在发生停用事件后,接收经因子分解的功能的副本;以及用经因子分解的功能的副本的位置来更新代码图。
文档编号G06F21/22GK102637249SQ20121002029
公开日2012年8月15日 申请日期2012年1月29日 优先权日2011年1月25日
发明者B·利夫希次, D·基洛夫斯基, G·梅德文斯基, K·雷, V·盖奇加拉 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1