亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

分析二進制碼的制作方法

文檔序號:6570376閱讀:252來源:國知局
專利名稱:分析二進制碼的制作方法
分析二進制碼祖旦 冃足背景和相關(guān)技術(shù)計算機系統(tǒng)和相關(guān)技術(shù)影響社會的許多方面。的確,計算機系統(tǒng)處理信 息的能力已改變了人們生活和工作的方式。計算機系統(tǒng)現(xiàn)在通常執(zhí)行許多任務 (例如,文字處理、調(diào)度和數(shù)據(jù)庫管理),這些任務在計算機系統(tǒng)出現(xiàn)以前是 人工執(zhí)行的。最近,計算機系統(tǒng)已被彼此耦合,并被耦合到其他電子設備,以 形成計算機系統(tǒng)和其他電子設備可以在其上傳送電子數(shù)據(jù)的有線和無線計算 機網(wǎng)絡。結(jié)果,在計算機系統(tǒng)處執(zhí)行的許多任務(例如,語音通信、訪問電子郵件、控制家用電子設備、Web瀏覽、以及打印文檔)包括多個計算機系統(tǒng)和 /或其他電子設備之間經(jīng)由有線和/或無線計算機網(wǎng)絡的通信(例如,電子消息 交換)。從而,存在可響應于軟件應用程序的執(zhí)行而可由通用計算系統(tǒng)實現(xiàn)的大 量的各種功能和應用程序。然而,計算系統(tǒng)的效用和功能依賴于源代碼的正確 編碼,源代碼被編譯或解釋成實際上由處理器執(zhí)行的二進制指令。如果存在編 碼或設計錯誤(通常被稱為"隱錯"),則這將常常導致與預期行為的背離。此外,軟件編程員和設計者的創(chuàng)造性導致日益復雜且強大的軟件應用程 序。作為其復雜性。在其他代碼分析機制中,針對進行源控制的經(jīng)編譯代碼進行遠程(例如, 基于服務器)的分析。某些分析是資源密集的且完成會花費大量時間(例如, 數(shù)小時)。在某些環(huán)境中,將這種類型的分析卸載給遠程(以及潛在更強大) 的計算機是有利的。使遠程計算機系統(tǒng)執(zhí)行分析釋放了用于開發(fā)代碼的開發(fā)員 的計算機,而不會使資源密集的分析消耗資源。然而,遠程分析相比本地分析生成結(jié)果要花費長得多的時間,例如通常 徹夜進行。因此,遠程分析與本地代碼分析相比在生成結(jié)果時有更長等待時間。 在眾多開發(fā)環(huán)境中,開發(fā)人員不能等待數(shù)個小時以便接收登錄的結(jié)果(例如,這可能要求基于這些結(jié)果的進一步修改)。此外,為了實現(xiàn)遠程代碼分析,可要求開發(fā)人員開發(fā)用于通過調(diào)査和解 決來管理問題的基礎(chǔ)結(jié)構(gòu)(例如,管理結(jié)果數(shù)據(jù)庫的web應用程序)。遠程代 碼分析也阻止開發(fā)人員執(zhí)行代碼分析(例如,過程間分析)在登錄之前預先分 析一組預期的改變。另外,在開發(fā)過程期間利用現(xiàn)有的遠程代碼分析技術(shù)通常 是太過昂貴的。從而,在某些開發(fā)環(huán)境中,幵發(fā)人員由于時間和成本的限制轉(zhuǎn) 而使用較不強大的本地代碼分析。簡要概述本發(fā)明延及用于分析二進制代碼的方法、系統(tǒng)和計算機程序產(chǎn)品。在某 些實施例中,接收二進制代碼和代碼分析規(guī)則。至少一個代碼分析規(guī)則指示與 二進制代碼的功能有關(guān)的查詢。用被配置成確定查詢結(jié)果的分析代碼實現(xiàn)査 詢。確定査詢的有效結(jié)果不被高速緩存在結(jié)果存儲中。作為響應,調(diào)用分析代 碼來確定査詢的結(jié)果。該結(jié)果被高速緩存在結(jié)果存儲中,使得當在將來接收査 詢時,可從結(jié)果存儲訪問結(jié)果而不必調(diào)用分析代碼來確定結(jié)果。返回査詢的結(jié) 果。在其他實施例中,接收二進制代碼和代碼分析規(guī)則。至少一個代碼分析 規(guī)則指示與二進制代碼的功能有關(guān)的査詢。用被配置成確定查詢結(jié)果的分析代 碼實現(xiàn)查詢。確定經(jīng)高速緩存的査詢結(jié)果被高速緩存在結(jié)果存儲中。在調(diào)用用 來確定查詢的結(jié)果的分析代碼之后,經(jīng)高速緩存的結(jié)果被高速緩存到結(jié)果存儲 中。確定結(jié)果是有效的。檢索經(jīng)高速緩存的結(jié)果,以避免對分析代碼的進一步 調(diào)用。返回經(jīng)高速緩存的査詢的結(jié)果。提供本概述以便以簡化形式介紹將在以下詳細描述中進一步描述的一 些概念。該概述不旨在標識所要求保護的主題的關(guān)鍵特征或本質(zhì)特征,也不旨 在用于幫助確定所要求保護的主題的范圍。本發(fā)明的附加特征和優(yōu)點將在以下描述中敘述,且其部分根據(jù)本描述將 是顯而易見的,或可通過對本發(fā)明的實踐領(lǐng)會。本發(fā)明的特征和優(yōu)點可通過在 所附權(quán)利要求書中特別指出的工具和組合來實現(xiàn)和獲得。本發(fā)明的這些和其他 特征將通過以下描述和所附權(quán)利要求書變得更加完全明顯,或可通過對下文中所述的本發(fā)明的實踐來領(lǐng)會。 附圖簡述為了描述可獲取本發(fā)明的上述和其他優(yōu)點和特征的方式,將通過引用附 圖中示出的本發(fā)明的特定實施例來呈現(xiàn)以上簡要描述的本發(fā)明的更具體描述。 可以理解這些附圖僅描述本發(fā)明的典型實施例,從而不被認為是對其范圍的限 制,本發(fā)明將通過使用附圖用附加特征和細節(jié)來描述和說明,附圖中

圖1示出了便于分析二進制代碼的示例計算機體系結(jié)構(gòu)。 圖2示出了用于分析二進制代碼的示例方法的流程圖。詳細描述本發(fā)明延及用于分析二進制代碼的方法、系統(tǒng)和計算機程序產(chǎn)品。在某 些實施例中,接收二進制代碼和代碼分析規(guī)則。至少一個代碼分析規(guī)則指示與 二進制代碼的功能有關(guān)的查詢。用被配置成確定査詢結(jié)果的分析代碼實現(xiàn)查 詢。確定查詢的有效結(jié)果不被高速緩存在結(jié)果存儲中。作為響應,調(diào)用分析代 碼來確定査詢的結(jié)果。該結(jié)果被高速緩存在結(jié)果存儲中,使得當在將來接收査 詢時,可從結(jié)果存儲訪問結(jié)果而不必調(diào)用分析代碼來確定結(jié)果。返回查詢的結(jié) 果。在其他實施例中,接收二進制代碼和代碼分析規(guī)則。至少一個代碼分析 規(guī)則指示與二進制代碼的功能有關(guān)的査詢。用被配置成確定查詢結(jié)果的分析代 碼實現(xiàn)查詢。確定經(jīng)高速緩存的査詢結(jié)果被高速緩存在結(jié)果存儲中。在調(diào)用用 來確定查詢的結(jié)果的分析代碼之后,經(jīng)高速緩存的結(jié)果被高速緩存到結(jié)果存儲 中。確定結(jié)果是有效的。檢索經(jīng)高速緩存的結(jié)果,以避免對分析代碼的進一步 調(diào)用。返回經(jīng)高速緩存的查詢的結(jié)果。本發(fā)明的實施例可以包括含有計算機硬件的專用或通用計算機,這將在 以下做出進一步討論。本發(fā)明的范圍內(nèi)的實施例也包括用于攜帶或其上儲存有 計算機可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)的計算機可讀介質(zhì)。這樣的機器可讀介質(zhì)可以是可由通用或?qū)S糜嬎銠C訪問的任何可用介質(zhì)。作為示例而非限制,計算機可讀介質(zhì)可包括計算機可讀存儲介質(zhì),諸如RAM、 ROM、 EEPROM、 CD-ROM或其他光盤存儲、磁盤存儲或其他磁存儲設備、或可用于存儲計算機可執(zhí)行指令 或數(shù)據(jù)結(jié)構(gòu)形式的所需程序代碼裝置且可由通用或?qū)S糜嬎銠C訪問的任何其 他介質(zhì)。在本描述和所附權(quán)利要求書中,"網(wǎng)絡"被定義為允許電子數(shù)據(jù)在計算 機系統(tǒng)和/或模塊之間的傳輸?shù)囊粋€或多個數(shù)據(jù)鏈路。當信息在網(wǎng)絡或另一通信 連接(硬連線、無線或硬連線或無線的組合)上傳輸或提供給計算機時,計算 機將連接完全視為計算機可讀介質(zhì)。因此,作為示例,而非限制,計算機可讀 介質(zhì)可包括可用于攜帶或存儲計算機可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的所需程序 代碼裝置并可由通用或?qū)S糜嬎銠C訪問的網(wǎng)絡或數(shù)據(jù)鏈路。計算機可執(zhí)行指令例如包括,使通用計算機、專用計算機、或?qū)S锰幚?設備執(zhí)行某一功能或某組功能的指令和數(shù)據(jù)。例如,計算機可執(zhí)行指令可以是 二進制代碼、諸如匯編語言等中間格式指令、或甚至源代碼。盡管用結(jié)構(gòu)特征 和/或方法動作專用的語言描述了本主題,但可以理解,所附權(quán)利要求書中定義 的主題不必限于上述特征或動作。相反,上述特征和動作是作為實現(xiàn)權(quán)利要求 的示例形式而公開的。本領(lǐng)域的技術(shù)人員將理解,可以在許多類型的計算機系統(tǒng)配置的網(wǎng)絡計 算環(huán)境中實踐本發(fā)明,這些計算機系統(tǒng)配置包括個人計算機、膝上型計算機、 手持式設備、多處理器系統(tǒng)、基于微處理器的或可編程的消費者電子設備、網(wǎng)絡PC、小型計算機、大型計算機、移動電話、PDA、尋呼機等。也可以在分布式系統(tǒng)環(huán)境中實踐本發(fā)明,在分布式系統(tǒng)環(huán)境中,通過網(wǎng)絡連接(或者通過 硬連線數(shù)據(jù)鏈路、無線數(shù)據(jù)鏈路,或者通過硬連線和無線數(shù)據(jù)鏈路的組合)的 本地和遠程計算機系統(tǒng)都執(zhí)行任務。在分布式系統(tǒng)環(huán)境中,程序模塊可以位于 本地和遠程存儲器存儲設備中。圖1示出了便于分析二進制代碼的計算機體系結(jié)構(gòu)100的示例。在計算 機體系結(jié)構(gòu)100中描述了各種組件,包括代碼分析模塊107、分析引擎109、 高速緩存接口模塊111和結(jié)果高速緩存112。各個組件中的每一個可以被連接 到諸如局域網(wǎng)("LAN")、廣域網(wǎng)("WAN")或甚至因特網(wǎng)等網(wǎng)絡。因 此,各個組件可對連接至網(wǎng)絡的其他組件收發(fā)數(shù)據(jù)。從而,各組件可以通過網(wǎng) 絡創(chuàng)建消息相關(guān)數(shù)據(jù)并交換消息相關(guān)數(shù)據(jù)(例如,網(wǎng)際協(xié)議("IP")數(shù)據(jù)報和利用IP數(shù)據(jù)報的其他高層協(xié)議,諸如傳輸控制協(xié)議("TCP")、超文本傳輸協(xié)議("HTTP")、簡單郵件傳輸協(xié)議("SMTP")等)。所示組件可位 于同一計算機系統(tǒng)或跨多個不同的計算機系統(tǒng)分布。一般而言,代碼分析模塊107被配置成根據(jù)分析規(guī)則來分析二進制代碼 (例如,經(jīng)編譯的源代碼)。例如,代碼分析模塊170可分析二進制代碼來計 算函數(shù)可返回的異常或結(jié)果代碼的閉包,計算調(diào)用站點是否可能返回存儲器分 配,計算函數(shù)的調(diào)用圖,計算變量和參數(shù)的約束條件,確定值可不可以為空, 聚集安全性許可(例如,用于受管的代碼)等。分析引擎109可例如從正在請求二進制代碼分析的另一模塊接收二進 制代碼和相應的分析規(guī)則。分析規(guī)則中包括的可以是與二進制代碼的功能相關(guān) 的一個或多個代碼查詢。為了實現(xiàn)針對二進制代碼的所接收的代碼査詢,分析 引擎可執(zhí)行被設計成為所接收的代碼查詢生成結(jié)果的分析代碼。分析代碼可以是被包括在代碼分析模塊107中的內(nèi)部分析代碼。或者, 分析代碼可以是可由代碼分析模塊107訪問并加載的外部分析代碼。例如,在 某些實施例中,插件系統(tǒng)組織、描述并管理專用于執(zhí)行各種分析和推斷任務的 插件。分析代碼(內(nèi)部和外部的)可被配置成供針對特定程序執(zhí)行。在執(zhí)行分析代碼以實現(xiàn)所接收的代碼查詢之前,分析引擎109可向高速 緩存接口模塊111提交高速緩存查詢。高速緩存查詢可請求高速緩存接口模塊 111檢査結(jié)果髙速緩存112來確定所接收的代碼査詢的有效結(jié)果是否被高速緩 存在結(jié)果高速緩存112中。如果有效結(jié)果被高速緩存在結(jié)果高速緩存112中, 則高速緩存接口模塊lll可例如向請求代碼分析的其他模塊返回經(jīng)高速緩存的 結(jié)果。因此,得以避免對(潛在資源密集的)分析代碼的調(diào)用。如果有效結(jié)果未被高速緩存在結(jié)果高速緩存112中,則分析引擎109 可執(zhí)行分析代碼以生成所接收的代碼查詢的結(jié)果。生成的結(jié)果可被發(fā)送給高速 緩存接口模塊111。高速緩存接口模塊111可將所生成的結(jié)果高速緩存在結(jié)果 高速緩存112中,使得所生成的結(jié)果可被提供給同一代碼查詢的后續(xù)實例,而 無需調(diào)用(潛在資源密集的)分析代碼。高速緩存接口模塊111可包括用于基于隨后對之前分析的二進制代碼 的修改來使經(jīng)高速緩存的結(jié)果無效的機制。例如,高速緩存接口模塊可包括用于驗證二進制代碼的字節(jié)計數(shù)和日期/時間戳的試探法。當所生成的指定二進制 代碼的結(jié)果要被高速緩存時,高速緩存接口模塊111可計算所指定的二進制代 碼的字節(jié)計數(shù)和日期/時間戳,并將字節(jié)計數(shù)和日期/時間戳隨結(jié)果一起高速緩 存在結(jié)果高速緩存112中。響應于對經(jīng)高速緩存的結(jié)果的后續(xù)高速緩存査詢(由 在分析引擎109處接收代碼査詢引起),高速緩存接口模塊lll可為該指定的 二進制代碼重新計算字節(jié)計數(shù)和日期/時間戳。高速緩存接口模塊111可將經(jīng)高速緩存的字節(jié)計數(shù)和經(jīng)高速的日期/時 間戳分別與經(jīng)重新計算的字節(jié)計數(shù)和經(jīng)重新計算的日期/時間戳作比較。如果經(jīng) 高速緩存的字節(jié)計數(shù)和經(jīng)重新計算的字節(jié)計數(shù)匹配(例如,相同)且經(jīng)高速緩 存的日期/時間戳和經(jīng)重新計算的日期/時間戳匹配(例如,相同),則經(jīng)高速 緩存的結(jié)果被確定為有效,并返回經(jīng)高速緩存的結(jié)果作為代碼査詢的結(jié)果。另 一方面,如果經(jīng)高速緩存的字節(jié)計數(shù)和經(jīng)重新計算的字節(jié)計數(shù)不匹配(例如, 不相同)和/或經(jīng)高速緩存的日期/時間戳與經(jīng)重新計算的日期/時間戳不匹配(例如,不相同),則經(jīng)高速緩存的結(jié)果被無效并從結(jié)果高速緩存112中清除。高速緩存結(jié)果也可通過依賴性分析按照更小的粒度來無效(甚至小至單 個二進制)。在某些實施例中,在結(jié)果被無效之后無效結(jié)果被保留在結(jié)果高速緩存112中一定量的時間。從而,在指定的時間間隔或響應于某一事件,可從結(jié)果 高速緩存112移除被無效的經(jīng)高速緩存的結(jié)果。圖2示出了用于分析二進制代碼的示例方法200的流程圖。方法200 將關(guān)于計算機體系結(jié)構(gòu)100中的組件和數(shù)據(jù)來描述。方法200包括接收二進制代碼的動作(動作201)。例如,分析引擎109 可接收二進制代碼101。二進制代碼101可包括多個過程,例如過程101A、101B 和101C,它們互操作以嘗試實現(xiàn)所設計的二進制代碼101的設計功能。例如, 過程IOIA可調(diào)用過程IOIB,過程101B又可調(diào)用過程IOIC,依此類推。因此, 每一調(diào)用過程的適當操作依賴于對其調(diào)用樹的葉子過程的調(diào)用鏈中的每一其 他過程的適當操作。例如,過程101C (被調(diào)用的過程)中的不適當操作可引 起過程101A (進行調(diào)用的過程)中相應的不適當操作。二進制代碼包括可在計算機系統(tǒng)處執(zhí)行的基本上任何代碼。例如,二進制代碼包括諸如。++、 C#、 Visual Basic等計算機語言的經(jīng)編譯的源代碼指令, 編譯供由計算機系統(tǒng)的處理器執(zhí)行。二進制代碼也包括要被進一步編譯供虛擬 機在由硬件處理器執(zhí)行之前執(zhí)行的中間語言指令。方法200包括接收包括與二進制代碼的功能有關(guān)的査詢的代碼分析規(guī) 則的動作(動作202)。例如,分析引擎109可接收分析規(guī)則102。分析規(guī)則 可包括用于檢査二進制碼的各個不同特性,諸如安全性設置、與設計指導方針 的順應性等的規(guī)則,以及指示與二進制代碼的功能有關(guān)的查詢的規(guī)則。例如,分析規(guī)則102包括指示與二進制代碼101的功能有關(guān)的査詢的代 碼査詢103。代碼査詢可通過執(zhí)行代碼分析模塊107外部可訪問的分析代碼, 諸如分別包括在插件104A、 104B和104C中的分析代碼106A、 106B和106C 來實現(xiàn)。例如,代碼查詢103可通過執(zhí)行來自插件104A的分析代碼106A實 現(xiàn)?;蛘?,代碼查詢可通過執(zhí)行被包括在代碼分析模塊107中的分析代碼來實 現(xiàn)。例如,代碼查詢103可通過執(zhí)行分析代碼108來實現(xiàn)。方法200包括確定該査詢的結(jié)果是否存在(判定框203)。例如,響應 于接收二進制的代碼101和分析規(guī)則102,分析引擎109可將高速緩存査詢131 提交給高速緩存接口模塊111。響應于高速緩存査詢131,高速緩存接口模塊 111可確定經(jīng)高速緩存的二進制代碼101的代碼查詢103的結(jié)果是被高速緩存 在結(jié)果高速緩存112中,還是經(jīng)高速緩存的二進制代碼101的代碼查詢103的 結(jié)果未被高速緩存在結(jié)果高速緩存112中。作為對分析代碼(例如,分析代碼106A或分析代碼108)之前調(diào)用的 結(jié)果,所生成的二進制代碼101的代碼査詢103的結(jié)果可被高速緩存在結(jié)果高 速緩存112中。因此,方法200可包括確定經(jīng)高速緩存的查詢結(jié)果被高速緩存 在結(jié)果存儲中的動作。例如,高速緩存接口模塊111可確定結(jié)果123是經(jīng)高速 緩存的二進制代碼101的代碼查詢103的結(jié)果。當經(jīng)高速緩存的査詢結(jié)果存在 (判定框203處的是)時,方法200前進至判定框204。另一方面,可能沒有任何對分析代碼的之前調(diào)用生成了二進制代碼101 的代碼査詢103的結(jié)果。例如,分析代碼106A或分析代碼108可能之前從未 對二進制代碼111進行過調(diào)用。或者,可能出于某種原因,對分析代碼106A 或分析代碼108的調(diào)用的結(jié)果可能不再被高速緩存在結(jié)果高速緩存112中。例如,之前存儲的結(jié)果可被刷新而移出結(jié)果高速緩存112。因此,方法200可包括確定經(jīng)高速緩存的查詢結(jié)果未被高速緩存在結(jié)果存儲中的動作。例如,高速緩存接口模塊111可確定針對二進制代碼111調(diào)用分析代碼106A (以實現(xiàn)代碼査詢103)的結(jié)果未被高速緩存在結(jié)果高速緩存 112中。當經(jīng)高速緩存的査詢結(jié)果不存在(判定框203處的否)時,方法200 前進至動作205。方法200包括確定該査詢的結(jié)果是否有效(判定框204)。例如,響應 于找到結(jié)果123 (對二進制代碼101的代碼查詢103),高速緩存接口模塊111 可確定結(jié)果123是否有效。高速緩存接口模塊111可將當前表示二進制代碼101 的數(shù)據(jù)(例如,當前時戳和當前校驗和)與高速緩存結(jié)果123時表示二進制代 碼101的數(shù)據(jù)(例如,時戳124和校驗和126)進行比較。作為比較的結(jié)果,高速緩存接口模塊111可能確定當前時戳和當前校驗 和分別匹配時戳124和校驗和126。因此,方法200可包括確定經(jīng)高速緩存的 結(jié)果有效的動作。例如,高速緩存接口模塊111可確定結(jié)果123有效。當經(jīng)高 速緩存的査詢結(jié)果有效(判定框204處的是)時,方法200前進至動作206。方法200包括檢索結(jié)果的動作(動作206)。例如,高速緩存接口模塊 111可從結(jié)果高速緩存112檢索結(jié)果123。另一方面,作為比較的結(jié)果,高速緩存接口模塊lll可能確定當前時戳 和/或當前校驗和分別與時戳124和/或校驗和126不匹配。因此,方法200可 包括確定經(jīng)高速緩存的結(jié)果無效的動作。例如,高速緩存接口模塊lll可確定 結(jié)果123無效。當經(jīng)高速緩存的查詢結(jié)果無效(判定框204處的否)時,方法 200前進至動作205。方法200包括調(diào)用分析代碼以生成査詢的結(jié)果的動作(動作205)。例 如,分析引擎109可針對二進制代碼101調(diào)用分析代碼106A以生成代碼査詢 103的結(jié)果113。分析代碼106A可包括用于計算可由過程IOIA、 IOIB和101C 中任何一個返回的異?;蚪Y(jié)果代碼的閉包,計算過程101A、 101B和101C中 的任何一個可能返回存儲器分配,計算過程IOIA、 101B和101C中的任何一 個的調(diào)用圖,計算過程IOIA、 101B和101C中的任何一個的變量和參數(shù)約束 條件,確定對過程IOIA、 101B和101C中的任何一個值可不可以為空,聚集二進制代碼101的安全性許可等。方法200包括高速緩存結(jié)果的動作(動作207)。例如,分析引擎109 可將結(jié)果113發(fā)送給高速緩存接口模塊111。高速緩存接口模塊111可將結(jié)果 高速緩存在結(jié)果高速緩存112中。在某些實施例中,分析代碼(例如,分析代 碼106A)可向分析引擎109和/或高速緩存接口模塊111指示其結(jié)果適于高速 緩存。例如,當分析代碼被配置成執(zhí)行頻繁重復的分析時,分析代碼可包括其 結(jié)果適于高速緩存的指示。在其他實施例中,分析引擎109和/或高速緩存接口 模塊111包括被執(zhí)行來確定分析結(jié)果要被高速緩存的附加邏輯。分析引擎109或高速緩存接口模塊111也為所生成的結(jié)果生成時戳和校 驗和。例如,分析引擎109可為結(jié)果113生成時戳和校驗和,并將時戳和校驗 和(例如,時戳114和校驗和116)連同結(jié)果113—起發(fā)送給高速緩存接口模 塊111。 或者,高速緩存接口模塊111可為結(jié)果113生成時戳和校驗和(例 如,時戳114和校驗和116)。高速緩存接口模塊lll可隨經(jīng)高速緩存的結(jié)果 一起高速緩存時戳和校驗和(無論是接收到還是生成的)。例如,高速緩存接 口模塊111可隨結(jié)果113高速緩存時戳116和校驗和116。方法200還包括返回結(jié)果的動作(動作208)。在某些實施例中,高速 緩存接口模塊111返回結(jié)果。例如,響應于高速緩存査詢131,高速緩存接口 模塊111可在響應132中包括結(jié)果123,并向分析引擎109返回響應123。或 者或與響應132并行地,高速緩存接口模塊lll可(例如,向顯示設備)輸出 結(jié)果123。在其他實施例中,分析引擎109返回結(jié)果。例如,在生成結(jié)果113之后, 分析引擎109可(例如,向顯示設備)輸出結(jié)果113?;蛘?,響應于接收響應 132,分析引擎109可(例如,向顯示設備)輸出結(jié)果123。本發(fā)明的實施例可包括用于針對目標過程請求對分析問題的回答的系 統(tǒng)和應用程序編程接口 ( "API" ) 。 API可查閱持久結(jié)果存儲以確定分析結(jié) 果是否已經(jīng)存在且有效。如果結(jié)果不存在或現(xiàn)有結(jié)果是無效的,則系統(tǒng)在運行 時調(diào)用相關(guān)分析代碼并將所生成的結(jié)果返回給調(diào)用者。在某些實施例中,在每次執(zhí)行的分析和與計算或推斷昂貴分析問題的回 答的分析中間加以區(qū)分。要每次執(zhí)行的分析的結(jié)果可被高速緩存,使得訪問重復分析的結(jié)果更高效。相應地,本發(fā)明的實施例在分析和被分析的代碼之間建立正式的關(guān)系。該正式關(guān)系便于在登錄之前針對預測的一組代碼改變在降低的分析時間成本的情況下在開發(fā)人員計算機系統(tǒng)上進行更強大的代碼分析。本發(fā)明的實施例尤 其對其中代碼的一部分相對于更大量的靜態(tài)代碼進行改變的實施例有用。例如,實施例可用于在本地系統(tǒng)上建立提供重要的分析值而不損害性能的集中的 結(jié)果高速緩存。本發(fā)明可具體化為其他具體形式而不背離其精神或本質(zhì)特征。所述實施 例在所有方面都應被認為僅是說明性而非限制性的。從而,本發(fā)明的范圍由所 附權(quán)利要求書而非前述描述指示。落入權(quán)利要求書的等效方式的含義和范圍內(nèi) 的所有改變應被權(quán)利要求書的范圍涵蓋。
權(quán)利要求
1.在計算機系統(tǒng)處,一種用于分析二進制代碼的方法,所述方法包括接收二進制代碼的動作;接收代碼分析規(guī)則的動作,至少一個代碼分析規(guī)則指示與所述二進制代碼的功能相關(guān)聯(lián)的查詢,所述查詢用被配置成確定所述查詢的結(jié)果的分析代碼來實現(xiàn);確定所述查詢的有效結(jié)果不被高速緩存在結(jié)果存儲中的動作;調(diào)用所述分析代碼來確定所述查詢的結(jié)果的動作;將所述結(jié)果高速緩存在所述結(jié)果存儲中,使得當在將來接收所述查詢時,可從所述結(jié)果存儲訪問所述結(jié)果而不必調(diào)用所述分析代碼來確定所述結(jié)果的動作;以及返回所述查詢的所述結(jié)果的動作。
2. 如權(quán)利要求1所述的方法,其特征在于,所述接收二進制代碼的動作包 括接收經(jīng)編譯的源代碼和中間語言指令的至少其中之一的動作。
3. 如權(quán)利要求1所述的方法,其特征在于,所述接收代碼分析規(guī)則的動作 包括接收用于分析二進制代碼的特性的代碼分析規(guī)則的動作。
4. 如權(quán)利要求1所述的方法,其特征在于,所述接收用于分析二進制代碼 的特性的代碼分析規(guī)則的動作包括接收用于分析與二進制代碼相關(guān)聯(lián)的安全 性設置、與所述二進制代碼的設計指導方針的順應性以及所述二進制代碼的功 能中的一個或多個的代碼分析規(guī)則的動作。
5. 如權(quán)利要求1所述的方法,其特征在于,所述確定所述査詢的有效結(jié)果 未被高速緩存在結(jié)果存儲中的動作包括確定所述結(jié)果存儲中沒有高速緩存所 述査詢的結(jié)果的動作。
6. 如權(quán)利要求1所述的方法,其特征在于,所述確定所述査詢的有效結(jié)果 未被高速緩存在結(jié)果存儲中的動作包括確定所述査詢的無效結(jié)果被高速緩存 在所述結(jié)果存儲中的動作。
7. 如權(quán)利要求6所述的方法,其特征在于,所述確定所述査詢的無效結(jié)果 被高速緩存在所述結(jié)果存儲中的動作包括確定對應于所接收的二進制代碼的 時戳和校驗和的至少其中之一分別不同于對應于所述代碼査詢之前生成的結(jié) 果的經(jīng)高速緩存的時戳和校驗和的動作。
8. 如權(quán)利要求1所述的方法,其特征在于,所述調(diào)用所述分析代碼來確定 所述査詢的結(jié)果的動作包括調(diào)用包括在接收所述二進制代碼和所述代碼查詢 的代碼分析模塊中的分析代碼的動作。
9. 如權(quán)利要求1所述的方法,其特征在于,所述調(diào)用所述分析代碼來確定 所述查詢的結(jié)果的動作包括調(diào)用包括從接收所述二進制代碼和所述代碼查詢 的分析模塊外部的插件中調(diào)用分析代碼的動作。
10. 如權(quán)利要求l所述的方法,其特征在于,所述調(diào)用所述分析代碼來 確定所述査詢的結(jié)果的動作包括分析所述二進制代碼以計算可由函數(shù)返回的 結(jié)果代碼、調(diào)用站點是否可能返回存儲器分配、函數(shù)的調(diào)用圖、變量和參數(shù)的 約束條件、值可不可以為空、以及聚集安全性許可中的一個或多個的動作。
11. 如權(quán)利要求l所述的方法,其特征在于,將所述結(jié)果高速緩存在所 述結(jié)果存儲中的動作包括在可網(wǎng)絡連接到接收所述二進制代碼的計算機系統(tǒng) 的結(jié)果存儲中高速緩存所述結(jié)果的動作。
12. 在計算機系統(tǒng)處, 一種用于分析二進制代碼的方法,所述方法包括 接收二進制代碼的動作;接收代碼分析規(guī)則的動作,至少一個代碼分析規(guī)則指示與所述二進制代碼的功能相關(guān)聯(lián)的査詢,所述查詢用被配置成確定所述查詢的結(jié)果的分析代碼來 實現(xiàn);確定所述查詢經(jīng)高速緩存的結(jié)果被高速緩存在結(jié)果存儲中的動作,所述經(jīng) 高速緩存的結(jié)果在調(diào)用用于確定所述查詢的結(jié)果的所述分析代碼之后被高速 緩存在所述結(jié)果存儲中;確定所述經(jīng)高速緩存的結(jié)果有效的動作;檢索所述經(jīng)高速緩存的結(jié)果以避免對所述分析代碼的進一步調(diào)用的動作;以及返回所述經(jīng)高速緩存的結(jié)果的動作。
13. 如權(quán)利要求12所述的方法,其特征在于,接收二進制代碼的動作 包括接收經(jīng)編譯源代碼的動作。
14. 如權(quán)利要求12所述的方法,其特征在于,所述接收代碼分析規(guī)則 的動作包括接收用于分析二進制代碼的特性的代碼分析規(guī)則的動作。
15. 如權(quán)利要求12所述的方法,其特征在于,所述接收用于分析二進 制代碼的特性的代碼分析規(guī)則的動作包括接收用于分析與二進制代碼相關(guān)聯(lián) 的安全性設置、與所述二進制代碼的設計指導方針的順應性以及所述二進制代 碼的功能中的一個或多個的代碼分析規(guī)則的動作。
16. 如權(quán)利要求12所述的方法,其特征在于,所述確定所述査詢的經(jīng) 高速緩存的結(jié)果有效的動作包括確定對應于所接收的二進制代碼的時戳和校 驗和分別匹配對應于所述代碼查詢之前生成的結(jié)果的經(jīng)高速緩存的時戳和校 驗和的動作。
17. 如權(quán)利要求12所述的方法,其特征在于,所述檢索所述經(jīng)高速緩 存的結(jié)果的動作包括從可網(wǎng)絡連接到接收所述二進制代碼的計算機系統(tǒng)的結(jié) 果存儲中檢索經(jīng)高速緩存的結(jié)果的動作。
18. —種計算機系統(tǒng),包括 一個或多個處理器; 系統(tǒng)存儲器;以及一個或多個其上存儲代碼分析模塊的計算機可執(zhí)行指令的計算機可讀 存儲介質(zhì),所述代碼分析模塊被配置成執(zhí)行以下動作 接收二進制代碼;接收代碼分析規(guī)則,至少一個代碼分析規(guī)則指示與所述二進制代碼 的功能相關(guān)聯(lián)的查詢,所述查詢用被配置成確定所述查詢的結(jié)果的分析代 碼來實現(xiàn);確定所述查詢的有效的經(jīng)高速緩存的結(jié)果是否被高速緩存在結(jié)果存 儲中;當有效結(jié)果未被高速緩存時調(diào)用所述分析代碼來確定所述查詢的結(jié)果;以及將所述結(jié)果高速緩存在所述結(jié)果存儲中,使得當在將來接收所 述査詢時,可從所述結(jié)果存儲訪問所述結(jié)果而不必調(diào)用所述分析代 碼來確定所述結(jié)果; 當有效結(jié)果被高速緩存時-檢索所述經(jīng)高速緩存的結(jié)果以避免對所述分析代碼的進一步調(diào) 用;以及返回所述查詢的結(jié)果。
19. 如權(quán)利要求18所述的計算機系統(tǒng),其特征在于,被配置成確定所 述査詢的有效的經(jīng)高速緩存的結(jié)果是否被高速緩存在結(jié)果存儲中的所述代碼 分析模塊包括被配置成確定對應于所接收的二進制代碼的時戳和校驗和是否 分別匹配對應于所述代碼査詢之前生成的結(jié)果的經(jīng)高速緩存的時戳和校驗和 的分析模塊。
20. 如權(quán)利要求18所述的計算機系統(tǒng),其特征在于,所述代碼分析模塊包括分析引擎和高速緩存接口模塊,其中被配置成返回所述査詢的結(jié)果的所 述代碼分析模塊包括被配置成將結(jié)果返回給所述分析引擎的所述高速緩存接 口模塊。
全文摘要
本發(fā)明延及用于分析二進制代碼的方法、系統(tǒng)和計算機程序產(chǎn)品。接收二進制代碼。接收指示與二進制代碼的功能相關(guān)的查詢的代碼分析規(guī)則。用被配置成確定查詢結(jié)果的分析代碼實現(xiàn)查詢。確定有效的經(jīng)高速緩存的查詢結(jié)果是否被高速緩存在結(jié)果存儲中。如果為否,則調(diào)用分析代碼來確定查詢的結(jié)果且結(jié)果被高速緩存。相應地,當在將來接收該查詢時,結(jié)果可從結(jié)果存儲訪問而無需調(diào)用分析代碼來確定結(jié)果。如果為是,則檢索經(jīng)高速緩存的結(jié)果,以避免對分析代碼的進一步調(diào)用。結(jié)果被返回。
文檔編號G06F17/00GK101336428SQ200680051763
公開日2008年12月31日 申請日期2006年12月28日 優(yōu)先權(quán)日2006年1月26日
發(fā)明者G·J·凡, M·C·范寧, N·P·奎熱拉 申請人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1