当前位置: 首页 > 专利查询>微软公司专利>正文

将代码动态注入到运行中的进程制造技术

技术编号:10624148 阅读:165 留言:0更新日期:2014-11-06 17:30
本文描述了能够将代码动态注入到运行中进程的技术。例如,所述技术能够响应于在该进程正在运行时从该进程外接收到用于动态执行任意代码的请求而致使该任意代码在该进程正在运行时在该进程中被激活。

【技术实现步骤摘要】
【国外来华专利技术】将代码动态注入到运行中的进程背景诸如计算机程序(例如软件应用)或其一部分等进程可执行针对另一进程的操作。执行操作的进程被称为请求进程,而针对其执行操作的进程被称为目标进程。传统上,为了使请求进程附接到目标进程,目标进程在其中执行的运行时环境的贡献者为请求进程提供一组目标服务,或者提供了用于实例化目标进程内的代码的激活机制。例如,贡献者可以是操作系统、分层运行时(例如,微软公司发布的公共语言运行时(CLR)、Oracle公司发布的Java虚拟机(JVM)等)、主机可执行件(例如,浏览器)、集成框架(例如,视窗呈现基础(WPF))等。在激活机制实例化目标进程内的代码(例如,对象)时,该代码通常是接收通知的回调代码或者是用对提供对数据和/或服务的访问的主机对象的引用来调用的。传统上,这种激活机制通过咨询机器配置信息(诸如在目标进程启动时的注册表或环境变量)来提供。随后相关代码被基于此信息实例化并且被用主机提供的相关数据来初始化。然而,用于在目标进程启动时激活目标进程中的代码的技术具有限制。例如,如果目标进程不是用引用代码的配置来启动的,则通常在引用该代码的配置被设置之后重启目标进程。重启目标进程可能在激活代码的用户体验中引入附加的成本和/或步骤。而且,一旦目标进程被重启,在目标进程在运行中时存在的情形可能难以被重新创建。例如,诸如线程竞争状态、花费数天才强迫错误的缓慢内存泄漏等是相对严重的但是可能难以重现。在另一示例中,通过重新配置目标进程所暗示的执行环境的更改可能完全阻止问题的重现。对请求进程的代码提供应用编程接口(API)功能可能相对代价昂贵。例如,文档的生成和维护、向前兼容性等可能增加平台提供的API的成本。平台或框架的辅助功能(诸如工具功能)通常被认为具有比平台或框架的中心功能相对更低的优先级。相应地,要被执行以提供辅助功能的工作可能被推迟。对于相对复杂的平台或框架,用于提供核心平台服务的专家知识与用于提供附加服务的专家知识可能不重叠。这些问题可能限制关于辅助服务的开发和/或创新。不是严格用于平台和/或可能需要执行任意代码(例如,任意工具代码)的代码(例如,公共扩展点就是这种情况)引起大量的安全风险,这些安全风险可以通过仔细的审阅和/或实现来缓解。最后,应用或框架所提供的API可能带来服务和/或版本化问题。例如,请求进程的提供者通常对其代码做出调整以试图与对平台的改变保持同步,这可能重新编译和/或重写代码以计入这些改变。概述本文描述了用于将代码动态注入运行中进程和其他目的的各种方法。例如,这些方法能够致使响应于在进程正在运行时从该进程外接收到动态执行任意代码的请求而在该进程正在运行时在该进程中激活该任意代码。这些方法可致使按各种方式中的任何方式来在该进程中激活该任意代码,包括但不限于:致使操作系统(OS)应用编程接口从注册表查找包括该任意代码的代码容器的位置,经由该消息所指示的路径将该任意代码从代码容器加载到该消息所指示的位置处的共享库中并且调用该共享库来执行该任意代码值,从该消息所指示的代码容器获得该任意代码并在该进程的该消息所指定的进入点处激活该任意代码,等等。描述了用于将代码动态注入到运行中进程的方法。根据该方法,在目标进程正在运行时,在该目标进程中从在该目标进程外部的请求进程接收消息。该消息请求在该目标进程中动态执行任意代码。该消息包括标识该任意代码的代码标识符。基于该代码标识符,在该目标进程正在运行时致使该任意代码在该目标进程中被定位并激活以提供经激活的代码。描述了包括接口模块和致使模块的系统。该接口模块被配置为在目标进程正在运行时,在该目标进程中从在该目标进程外部的请求进程接收消息。该消息请求在该目标进程中动态执行任意代码。该消息包括标识该任意代码的代码标识符。该致使模块被配置为基于该代码标识符,在该目标进程正在运行时致使该任意代码在该目标进程中被定位并激活以提供经激活的代码。描述了一种计算机程序产品,其包括具有记录于其上的用于使基于处理器的系统能够将代码动态注入到运行中进程的计算机程序逻辑的计算机可读介质。该计算机程序产品包括程序逻辑模块。该程序逻辑模块用于使得该基于处理器的系统能够:基于目标进程正在执行时在该目标进程中从该目标进程外部的请求进程接收到消息,致使任意代码在目标进程正在运行时在该目标进程中被定位被激活以提供经激活的代码。该消息请求在该目标进程中动态执行该任意代码。该消息包括标识该任意代码的代码标识符。该代码标识符能被用来定位和激活该任意代码。提供本概述是为了以简化的形式介绍将在以下具体实施方式中进一步描述的概念选择。本概述并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。此外,注意到本专利技术不限于在详细描述和/或本文的其它章节中所述的特定实施例。本文呈现这些实施例仅用于说明性的用途。基于本文所包含的描述,其它实施例对于相关领域的技术人员将是显而易见的。附图说明本文结合的并且组成本说明书的一部分的附图示出了本专利技术的各实施例,并且还与本描述一起用于解释所涉及的原理以及使相关领域的技术人员能够实现和使用所公开的技术。图1是根据一实施例的示例计算机系统的框图。图2示出根据一实施例的用于动态激活目标进程的代码的示例方法的流程图。图3是根据一实施例的图1中示出的请求模块的示例实现的框图。图4和6示出根据各实施例的用于将代码动态注入到运行中进程的示例方法的流程图。图5和7是根据各实施例的图1中示出的进程中注入模块的示例实现的框图。图8和9示出根据各实施例的用于致使任意代码被定位和激活的示例方法的流程图。图10是根据一实施例的图7中示出的致使模块的示例实现的框图。图11描绘了其中可实现各实施例的示例计算机。通过下面的结合附图对本专利技术进行的详细说明,所公开的技术的特点和优点将变得更加显而易见,在附图中,类似的附图标记在整个说明书中标识对应的元素。在附图中,相同的参考标号一般指相同的、功能上相似的和/或结构上相似的元素。其中元素第一次出现的附图由对应的参考标号中最左侧的数字指示。具体实施方式I.引言以下详细描述参考示出本专利技术的示例性实施例的附图。但是,本专利技术的范围不限于这些实施例,而是由所附权利要求书定义。因此,诸如所示实施例的修改版本之类的在附图所示之外的实施例仍然由本专利技术所包含。本说明书中对“一个实施例”、“实施例”、“示例实施例”等的引用指的是所述实施例可包括特定的特征、结构或特点,但是每一实施例不一定包括该特定的特征、结构或特点。此外,这些短语不一定指相同的实施例。此外,当结合实施例描述具体特征、结构或特性时,应当理解在相关领域的技术人员的知识范围内能够结合其他实施例来实现具体特征、结构或特性,无论是否被显式地描述。II.示例实施例本文描述的示例实施例能够将代码动态注入到运行中的进程。例如,这些示例实施例能够使得响应于在进程正在运行时接收到来自该进程外的动态执行任意代码的请求而在该进程正在运行时激活该任意代码。这些示例实施例可使得按各种方式中的任何方式来在该进程中激活该任意代码,包括但不限于:致使操作系统(OS)应用编程接口(API)从注册表中查找包括该任意代码的代码容器的位置,在确定位置后激活来自该代码容器的该任意代码,以及向提供该本文档来自技高网...
将代码动态注入到运行中的进程

【技术保护点】
一种方法,包括:在目标进程正在运行时,在所述目标进程中从位于所述目标进程外部的请求进程接收消息,所述消息请求在所述目标进程中动态执行任意代码,所述消息包括标识所述任意代码的代码标识符,所述代码标识符能用于定位和激活所述任意代码;以及基于所述代码标识符,在所述目标进程正在运行时,致使所述任意代码在所述目标进程中被定位并激活,以提供经激活代码。

【技术特征摘要】
【国外来华专利技术】2012.02.09 US 13/370,1261.一种用于将代码动态注入到运行中进程中的方法,包括:在目标进程正在运行时,在所述目标进程中从位于所述目标进程外部的请求进程接收消息,所述消息请求在所述目标进程中动态执行任意代码,所述消息包括标识所述任意代码的代码标识符,所述代码标识符能用于定位和激活所述任意代码;以及基于所述代码标识符,在所述目标进程正在运行时,致使所述任意代码在所述目标进程中被定位并激活,以提供经激活代码。2.如权利要求1所述的方法,其特征在于,致使所述任意代码被定位和激活包括:致使操作系统应用编程接口基于所述代码标识符从注册表中查找包括所述任意代码的代码容器的位置;以及其中致使所述操作系统应用编程接口查找所述代码容器包括:向所述操作系统应用编程接口提供所述代码标识符。3.如权利要求1所述的方法,其特征在于,接收所述消息包括:接收路径信息和位置标识符,所述路径信息指示至代码容器的路径,所述位置标识符指示共享库的位置;以及其中致使所述任意代码被定位和激活包括:基于所述位置标识符所指示的位置并且进一步基于所述路径信息所指示的路径,将所述任意代码从所述代码容器加载到所述共享库中;以及调用到所述共享库中以执行所述任意代码。4.如权利要求1所述的方法,其特征在于,所述代码标识符包含要被编译并随后在所述目标进程中执行的源代码。5.如权利要求1所述的方法,其特征在于,还包括:提供引用所述经激活代码的值,所述值能够被所述请求进程调用以在所述目标进程继续运行时与所述目标进程交互。6.一种用于将代码动态注入到运行中进程中的系统,包括:接口模块,所述接口模块被配置为在目标进程正在运行时...

【专利技术属性】
技术研发人员:M·C·范宁C·M·H·法孔A·R·斯特兰德T·S·莱斯
申请(专利权)人:微软公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1