[發明專利]將代碼動態注入到運行中的進程有效
| 申請號: | 201380008946.6 | 申請日: | 2013-02-04 |
| 公開(公告)號: | CN104137062B | 公開(公告)日: | 2017-08-15 |
| 發明(設計)人: | M·C·范寧;C·M·H·法孔;A·R·斯特蘭德;T·S·萊斯 | 申請(專利權)人: | 微軟技術許可有限責任公司 |
| 主分類號: | G06F9/30 | 分類號: | G06F9/30 |
| 代理公司: | 上海專利商標事務所有限公司31100 | 代理人: | 段登新 |
| 地址: | 美國華*** | 國省代碼: | 暫無信息 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 代碼 動態 注入 運行 中的 進程 | ||
背景
諸如計算機程序(例如軟件應用)或其一部分等進程可執行針對另一進程的操作。執行操作的進程被稱為請求進程,而針對其執行操作的進程被稱為目標進程。傳統上,為了使請求進程附接到目標進程,目標進程在其中執行的運行時環境的貢獻者為請求進程提供一組目標服務,或者提供了用于實例化目標進程內的代碼的激活機制。例如,貢獻者可以是操作系統、分層運行時(例如,微軟公司發布的公共語言運行時(CLR)、Oracle公司發布的Java虛擬機(JVM)等)、主機可執行件(例如,瀏覽器)、集成框架(例如,視窗呈現基礎(WPF))等。在激活機制實例化目標進程內的代碼(例如,對象)時,該代碼通常是接收通知的回調代碼或者是用對提供對數據和/或服務的訪問的主機對象的引用來調用的。傳統上,這種激活機制通過咨詢機器配置信息(諸如在目標進程啟動時的注冊表或環境變量)來提供。隨后相關代碼被基于此信息實例化并且被用主機提供的相關數據來初始化。
然而,用于在目標進程啟動時激活目標進程中的代碼的技術具有限制。例如,如果目標進程不是用引用代碼的配置來啟動的,則通常在引用該代碼的配置被設置之后重啟目標進程。重啟目標進程可能在激活代碼的用戶體驗中引入附加的成本和/或步驟。而且,一旦目標進程被重啟,在目標進程在運行中時存在的情形可能難以被重新創建。例如,諸如線程競爭狀態、花費數天才強迫錯誤的緩慢內存泄漏等是相對嚴重的但是可能難以重現。在另一示例中,通過重新配置目標進程所暗示的執行環境的更改可能完全阻止問題的重現。
對請求進程的代碼提供應用編程接口(API)功能可能相對代價昂貴。例如,文檔的生成和維護、向前兼容性等可能增加平臺提供的API的成本。平臺或框架的輔助功能(諸如工具功能)通常被認為具有比平臺或框架的中心功能相對更低的優先級。相應地,要被執行以提供輔助功能的工作可能被推遲。對于相對復雜的平臺或框架,用于提供核心平臺服務的專家知識與用于提供附加服務的專家知識可能不重疊。這些問題可能限制關于輔助服務的開發和/或創新。不是嚴格用于平臺和/或可能需要執行任意代碼(例如,任意工具代碼)的代碼(例如,公共擴展點就是這種情況)引起大量的安全風險,這些安全風險可以通過仔細的審閱和/或實現來緩解。最后,應用或框架所提供的API可能帶來服務和/或版本化問題。例如,請求進程的提供者通常對其代碼做出調整以試圖與對平臺的改變保持同步,這可能重新編譯和/或重寫代碼以計入這些改變。
概述
本文描述了用于將代碼動態注入運行中進程和其他目的的各種方法。例如,這些方法能夠致使響應于在進程正在運行時從該進程外接收到動態執行任意代碼的請求而在該進程正在運行時在該進程中激活該任意代碼。這些方法可致使按各種方式中的任何方式來在該進程中激活該任意代碼,包括但不限于:致使操作系統(OS)應用編程接口從注冊表查找包括該任意代碼的代碼容器的位置,經由該消息所指示的路徑將該任意代碼從代碼容器加載到該消息所指示的位置處的共享庫中并且調用該共享庫來執行該任意代碼值,從該消息所指示的代碼容器獲得該任意代碼并在該進程的該消息所指定的進入點處激活該任意代碼,等等。
描述了用于將代碼動態注入到運行中進程的方法。根據該方法,在目標進程正在運行時,在該目標進程中從在該目標進程外部的請求進程接收消息。該消息請求在該目標進程中動態執行任意代碼。該消息包括標識該任意代碼的代碼標識符。基于該代碼標識符,在該目標進程正在運行時致使該任意代碼在該目標進程中被定位并激活以提供經激活的代碼。
描述了包括接口模塊和致使模塊的系統。該接口模塊被配置為在目標進程正在運行時,在該目標進程中從在該目標進程外部的請求進程接收消息。該消息請求在該目標進程中動態執行任意代碼。該消息包括標識該任意代碼的代碼標識符。該致使模塊被配置為基于該代碼標識符,在該目標進程正在運行時致使該任意代碼在該目標進程中被定位并激活以提供經激活的代碼。
描述了一種計算機程序產品,其包括具有記錄于其上的用于使基于處理器的系統能夠將代碼動態注入到運行中進程的計算機程序邏輯的計算機可讀介質。該計算機程序產品包括程序邏輯模塊。該程序邏輯模塊用于使得該基于處理器的系統能夠:基于目標進程正在執行時在該目標進程中從該目標進程外部的請求進程接收到消息,致使任意代碼在目標進程正在運行時在該目標進程中被定位被激活以提供經激活的代碼。該消息請求在該目標進程中動態執行該任意代碼。該消息包括標識該任意代碼的代碼標識符。該代碼標識符能被用來定位和激活該任意代碼。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于微軟技術許可有限責任公司,未經微軟技術許可有限責任公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201380008946.6/2.html,轉載請聲明來源鉆瓜專利網。





