新四季網

基於進程模擬的二進位程序分析系統的製作方法

2023-06-08 00:46:51

基於進程模擬的二進位程序分析系統的製作方法
【專利摘要】一種電子數據監控【技術領域】的基於進程模擬的二進位程序分析系統,包括:模擬器引擎模塊、內存管理模塊、進程管理模塊、系統調用接口、線程管理模塊、中央處理模塊和提供應用程式接口的分析組件接口,其中:模擬器引擎模塊分別連接內存管理模塊、進程管理模塊、系統調用接口和分析組件接口,進程管理模塊分別與內存管理模塊、中央處理模塊和系統調用接口相連,線程管理模塊分別與內存管理模塊、進程管理模塊和中央處理模塊相連;本發明不依賴於對程序的靜態逆向分析,而採用完全動態分析的方法,能夠避免大部分程序保護技術造成的影響。
【專利說明】基於進程模擬的二進位程序分析系統
【技術領域】
[0001]本發明涉及的是一種電子數據監控【技術領域】的系統,具體是一種基於進程模擬的二進位程序分析系統。
【背景技術】
[0002]在計算機安全領域中,對各類軟體尤其是惡意程序的逆向分析是程序安全分析的基礎工作。由於缺少了相關的語義信息,針對二進位程序的逆向分析往往十分困難,需要消耗大量的人力物力。因此,為了輔助分析人員進行逆向分析,相應的自動化程序分析方法和分析平臺也應運而生。
[0003]為了實現自動化的程序分析,需要對程序運行時的指令流、控制流和數據流進行細粒度地監視,同時需要獲取程序運行中的處理器、內存等相關信息。目前對程序運行時信息的獲取主要採用進程調試、全系統模擬以及動態二進位插樁等技術來實現。但是,目前的分析技術均存在若干問題,其中進程調試採用作業系統的調試API實現,對目前惡意程序常用的反調試手段往往無能為力;全系統模擬技術對整個計算機平臺進行模擬,與分析無關的大量指令如作業系統內核佔用了大部分的模擬時間,導致分析效率很低;而動態二進位插樁由於改變了程序的指令流和控制流,對於一些經過保護的程序如被加殼或混淆後的程序往往無法進行分析。因此,目前的分析方案在面對當前日益複雜的程序時常常無法滿足分析要求。
[0004]經過對現有技術的檢索發現,中國專利文獻號CN101814053,
【公開日】2010_08_25,記載了一種基於功能模型的二進位代碼漏洞發現方法,首先基於靜態逆向分析系統建立代碼功能模型,並基於所述代碼功能模型構造初始測試用例集;其次,通過動態測試與回放分析系統依據覆蓋率控制和選路策略在動態測試平臺上加載測試用例集,並採用動態路徑約束優化和約束求解、基於代的路徑遍歷算法進行測試用例集的調整,以及根據回放分析進行異常的精細分析及漏洞定位;第三,靜態逆向分析系統和動態測試與回放分析系統均將各自分析得到的程序屬性存入功能模型中,並以功能模型中的程序屬性來指導各自的分析測試工作。但該技術與本發明相比的缺陷及不足在於:第一,該技術依賴於靜態逆向分析,而目前軟體保護技術的廣泛使用使得分析人員往往無法進行有效的靜態分析,因此從目前的很多程序尤其是惡意程序中提取靜態分析結果是比較困難的;第二,該技術的分析方法僅能對程序的異常運行情況加以檢測並分析可能的漏洞,而無法檢測程序的潛在惡意攻擊行為,尤其是目前的各類攻擊方法如ROP (Return-Oriented Programming)層出不窮,該技術無法對程序中存在的能夠被這類攻擊所利用的漏洞進行檢測;第三,在目前各類動態代碼執行被廣泛使用的情況下,如插件(Plugin)、用戶腳本(User Scripting)、即時編譯(Just-1n-time Compilation)等等,該技術無法對這類動態生成或加載的代碼進行有效分析,因此進一步限定了其分析範圍。

【發明內容】
[0005]本發明針對現有技術存在的上述不足,提供一種基於進程模擬的二進位程序分析系統,針對現有技術的不足之處,從程序的底層即系統硬體結構和作業系統的級別對程序進行運行環境的模擬,不幹涉程序的正常運行,而對程序的運行過程如數據流向等內容進行監控。本發明不依賴於對程序的靜態逆向分析,而採用完全動態分析的方法,能夠避免大部分程序保護技術造成的影響。通過對分析系統進行擴展並自定義攻擊行為,本發明能夠在攻擊代碼被執行前進行檢測和攔截;並且通過引入動態汙點分析等手段,能夠對敏感數據流向進行分析和跟蹤,避免造成數據和隱私的洩露。並且,本發明不依賴於程序的靜態分析結果,能夠對動態生成代碼進行完整分析。
[0006]本發明是通過以下技術方案實現的,本發明包括:模擬器引擎模塊、內存管理模塊、進程管理模塊、系統調用接口、線程管理模塊、中央處理模塊和提供應用程式接口的分析組件接口,其中:模擬器引擎模塊分別連接內存管理模塊、進程管理模塊、系統調用接口和分析組件接口,分別傳輸運行狀態信息和運行指令、進程管理和線程調度信息、系統API調用數據、調試信息和分析組件事件等,控制、協調各個模塊並降低不同模塊之間的耦合度;進程管理模塊分別與中央處理模塊、內存管理模塊和系統調用接口相連,分別傳輸處理器調度信息和運行狀態信息、內存管理數據以及系統調用參數轉換及封裝等信息,線程管理模塊分別與進程管理模塊、內存管理模塊和中央處理模塊相連,分別傳輸線程運行狀態及調度信息、線程內存數據訪問以及處理器運行狀態;
[0007]所述的模擬器引擎模塊為各個組件提供統一的協調控制,並驅動各個組件運行完成被模擬進程的加載、初始化、運行和清除,該模擬器引擎模塊包括:驅動單元、作業系統掛鈎單元和調試單元,其中:驅動單元與內存管理模塊和進程管理模塊相連,接收運行狀態信息,發送運行指令;作業系統掛鈎單元與進程管理模塊相連,接收進程管理模塊的系統API調用並傳遞給底層作業系統,返回API調用結果;調試單元連接系統調用接口和分析組件接口進行應用程式調試;
[0008]所述的內存管理模塊包括:虛擬內存管理單元、堆管理單元和棧管理單元,其中:虛擬內存管理單元向線程管理模塊傳輸內存訪問數據,並與模擬器引擎模塊的驅動單元相連以傳輸運行狀態信息;堆管理單元從進程管理模塊接收堆管理指令,完成進程中堆內存的管理;棧管理單元從線程管理模塊接收線程運行狀態,完成所有線程中棧內存的管理。
[0009]所述的虛擬內存管理單元採用分頁方案對4GB虛擬內存進行管理;同時模擬Windows的虛擬內存管理行為,完成作業系統級別的內存分配、回收及訪問權限控制。
[0010]所述的堆管理單元和棧管理單元分別傳輸的進程中堆的管理信息、進程中各線程棧內存的管理,全局虛擬內存頁分配與回收等。
[0011]所述的進程中堆的管理信息包括:堆的建立銷毀和內存分配;堆內存權限設置;堆容量調整與重分配等。
[0012]所述的進程管理模塊包括:線程調度管理單元、狀態驅動單元和系統API封裝單元,其中:線程調度管理單元與中央處理模塊相連接收進程中所有線程的調度信息,完成線程的調度以及創建和銷毀;狀態驅動單元與模擬器引擎模塊相連,接收模擬器引擎模塊的運行指令,完成主線程及其他線程的運行驅動並傳輸運行狀態信息;系統API封裝單元與系統調用接口相連接收線程管理模塊的系統API調用,封裝參數並傳輸至模擬器引擎模塊進行調用。[0013]所述的進程管理模塊用於對進程的完整執行流程進行驅動;維護該進程所包含的所有線程及其調度;進程中系統句柄(Handle)維護及內存地址分配;以及進程PEB(Process Environment Block)等數據結構的創建及維護。
[0014]所述的線程管理模塊包括:環境信息模擬單元、驅動線程單元和執行單元,其中:環境信息模擬單元與進程管理單元相連,接收線程的運行時狀態信息並建立模擬運行時環境供線程使用;驅動線程單元與進程管理單元相連,接收線程運行指令並傳輸線程運行狀態;執行單元與中央處理模塊的線程狀態單元相連用於完成處理器指令循環並在結束時終止線程。
[0015]所述的環境信息模擬模塊建立的供線程使用的模擬運行時環境包括:入口點、參數、標誌位、堆棧地址和大小及TEB (Thread Environment Block);
[0016]所述的線程管理模塊維護模擬進程中單個線程的環境信息,並驅動線程從入口點開始的執行過程,同時判斷終止條件並結束線程;同時用於由該線程動態加載的其他模塊(DLL)的載入和初始化;
[0017]所述的中央處理模塊內置有分別與進程管理模塊和線程管理模塊相連的寄存器和狀態單元且分別傳輸處理器調度信息和線程運行狀態及調度信息。
[0018]所述的傳輸處理器調度信息和線程運行狀態及調度信息包括:處理器標誌位(eflags)、運行狀態信息;並對x86指令集、x87FPU指令集、MMX指令集和SSE指令集提供了解釋模擬函數,從而實現完整處理器功能的模擬。
[0019]所述的中央處理模塊上設有異常管理器,用於傳遞處理器異常信息及異常處理結果,該異常管理器構造異常的環境信息並執行異常處理函數。
[0020]所述的分析組件接口為系統提供API接口,使得分析人員能夠很容易地編寫分析組件,完成自動化程序分析;
[0021]所述的模擬器引擎模塊分別連接加載器、反彙編引擎和與附加的調試組件相連、用於進行應用程式調試的調試接口,其中:加載器解析待分析進程的可執行PE文件並將解析結果通過模擬器引擎模塊加載至內存管理模塊,反彙編引擎對單條x86指令進行反彙編,解析出指令的操作碼、源操作數、目的操作數等信息;調試接口用於傳遞調試信息,可進行應用程式及模擬器自身的調試;
[0022]所述的待分析進程的可執行PE文件是指=Windows中的可執行程序以PE格式存在,模擬器加載並解析PE文件使其能夠被模擬執行;
[0023]本發明涉及一種基於上述系統的進程優化方法,包括以下步驟:
[0024]步驟一、對待分析進程進行輕量級x86指令集模擬,即以程序運行效率損失在兩個數量級以內的前提下進行x86指令集的模擬處理和虛擬內存環境,
[0025]所述的步驟一具體包括:
[0026]1.1使用啟發式遞歸反彙編算法對於每條處理器指令提供靜態的反彙編信息;
[0027]所述的啟發式遞歸反彙編算法包括以下步驟:
[0028]1.1.1針對PE文件中的各條指令進行以下步驟的判斷。
[0029]1.1.2定位入口點指令E,當該指令E為有效指令則對其進行反彙編處理後執行步驟1.1.3,否則跳過該條指令並重新執行步驟1.1.2。
[0030]1.1.3當反彙編處理後的指令E為跳轉指令,則對指令E的跳轉目標進行反彙編處理。
[0031]1.1.4在指令E的尾部添加該指令的長度信息並返回步驟1.1.2處理下一條指令,直至完成所有指令的處理後返回反彙編處理得到的指令集合S。
[0032]1.2利用反彙編信息模擬各條指令的執行流程,包括寄存器、內存數據以及標誌位的值。
[0033]1.3提取內存訪問數據、寄存器值變化信息用於程序分析。
[0034]所述的內存訪問數據包括:內存地址和內存數據、寄存器值、標誌位改變信息以及異常f目息。
[0035]步驟二、模擬若干作業系統行為保證待分析進程運行在可控的環境中,具體包括:
[0036]2.1進程初始化階段對被模擬的程序進行加載和初始化,確定進程中各模塊中各段(section)的內存分布情況,並確定入口點以及終止條件。
[0037]2.2內存管理使用分頁式的內存管理機制,包括:以頁為單位的虛擬內存分配、回收和訪問權限控制。
[0038]2.3線程管理模塊用於維護多線程程序中的線程建立、銷毀以及線程調度,使多線程程序在共享內存的模型下能夠被正常執行。
[0039]2.4異常處理用於在處理器發生異常時的作業系統異常處理機制,使程序的異常處理例程能夠運行在模擬環境中。
[0040]步驟三、對進程中的作業系統API調用進行封裝,交由作業系統直接執行;
[0041]所述的作業系統API是指:作業系統提供給用戶進程的應用程式接口,使用戶程序能夠利用作業系統功能。
[0042]3.1攔截所有模擬進程的API調用,核心API由模擬器引擎模塊直接模擬執行,其他API發送至作業系統執行;
[0043]所述的核心API包括:內存管理AP1、線程管理AP1、調試AP1、作業系統參數獲取API 等。
[0044]3.2完成API調用時的參數轉換,包括:模擬內存地址和真實地址的映射。
[0045]3.3作業系統在API執行完畢後返回模擬器引擎模塊,處理執行結果。
[0046]步驟四、為模擬執行過程中的動態運行時信息提供應用程式接口,並將模擬器各組件的執行過程封裝為事件,以事件處理的方式提供應用程式接口,最終使得分析程序能夠利用這些信息進行程序優化。
[0047]所述的動態運行時信息包括:指令流、數據流和控制流。
[0048]所述的事件包括:指令執行事件、內存訪問事件、作業系統API調用事件、線程調度事件。
技術效果
[0049]I)對被分析程序進行指令級別的模擬執行,使用輕量級x86指令集解釋器來提供細粒度的運行時信息;
[0050]2)對待分析進程中與程序分析無關的內容,如系統調用的執行採用包裝或模擬的方式,交由底層作業系統執行,保證分析效率;
[0051]3)模擬若干作業系統行為如內存管理、線程管理及異常處理等,保證被分析程序運行在可控的環境中;
[0052]4)為程序的自動化分析提供良好的接口,使得程序的模擬執行和分析能夠同步高效進行。
[0053]與目前已有的分析方案相比,本發明幾乎不受反調試手段的影響,同時不修改待分析進程的原始指令和數據,運行效率比全系統模擬提高了一至二個數量級,同時穩定性和兼容性較二進位插樁有了極大的提高。在該分析系統的基礎上,能夠高效進行程序的算法及協議分析、漏洞挖掘及檢測、程序性能分析、內存調試、程序行為分析以及惡意程序檢測等多種自動化分析手段,對程序安全分析提供了可靠的支持。
【專利附圖】

【附圖說明】
[0054]圖1為本發明系統結構圖;
[0055]圖2為進程管理模塊的結構示意圖;
[0056]圖3為線程管理模塊的結構示意圖;
[0057]圖4為本發明運行流程圖。
【具體實施方式】
[0058]下面對本發明的實施例作詳細說明,本實施例在以本發明技術方案為前提下進行實施,給出了詳細的實施方式和具體的操作過程,但本發明的保護範圍不限於下述的實施例。
實施例1
[0059]以常用多線程網絡通信程序curl, exe (http://curl, haxx.se)為例,說明具體的實施過程。
[0060]如圖1所示,包括:模擬器引擎模塊、內存管理模塊、進程管理模塊、系統調用接口、線程管理模塊、中央處理模塊和提供應用程式接口的分析組件接口,其中:模擬器引擎模塊分別連接內存管理模塊、進程管理模塊、系統調用接口和分析組件接口,分別傳輸內存訪問數據、線程調度和處理器訪問數據、系統調用參數及其封裝以及模擬器事件和環境信息,控制、協調各個模塊並降低不同模塊之間的耦合度;進程管理模塊分別與內存管理模塊、中央處理模塊和系統調用接口相連,分別傳輸內存管理數據如內存分配回收、處理器調度信息以及系統調用參數轉換及封裝等信息,線程管理模塊分別與內存管理模塊、進程管理模塊和中央處理模塊相連,分別傳輸線程數據在內存中的分布情況、線程運行狀態及調度信息、以及處理器運行狀態;
[0061]所述的模擬器引擎模塊包括:公用的系統接口,為各個組件提供統一的協調控制,並驅動各個組件運行完成被模擬進程的加載、初始化、運行和清除;
[0062]所述的內存管理模塊分別與堆和棧相連,分別傳輸進程中堆的管理信息如堆的建立銷毀和內存分配、進程中各線程棧內存的管理,內存管理模塊包括:虛擬內存管理單元,採用分頁方案對4GB虛擬內存進行管理;同時模擬Windows的虛擬內存管理行為,完成作業系統級別的內存分配、回收及訪問權限控制;
[0063]內存管理模塊:模擬Windows的分頁內存管理機制,用於待分析進程的內存分配和回收以及權限管理,為系統的內存管理API提供底層的模擬實現,同時維護待分析進程的堆和棧;
[0064]所述的進程管理模塊包括:用於對進程的完整執行流程進行驅動;維護該進程所包含的所有線程及其調度;進程中系統句柄(Handle)維護及內存地址分配;以及進程PEB(Process Environment Block)等數據結構的創建及維護;
[0065]進程管理模塊:維護待分析進程相關的上下文信息,管理待分析進程的所有線程;
[0066]所述的線程管理模塊包括:維護模擬進程中單個線程的環境信息,如入口點、參數、標誌位、堆棧地址和大小及TEB等,並驅動線程從入口點開始的執行過程,同時判斷終止條件並結束線程;同時用於由該線程動態加載的其他模塊(DLL)的載入和初始化;
[0067]所述的中央處理模塊包括:為完整的中央處理模塊提供模擬環境、包括寄存器、處理器標誌位(eflags)、運行狀態信息等;並對x86指令集、x87FPU指令集、MMX指令集和SSE指令集提供了解釋模擬函數,從而實現完整處理器功能的模擬;以及子模塊異常管理器;其中異常管理器與處理器模塊連接,傳遞處理器異常信息及異常處理結果;
[0068]線程管理模塊和中央處理模塊:為每個線程維護獨立的中央處理模塊環境,包括寄存器、處理器標誌位及寄存器其它運行時數據,中央處理模塊對待分析進程的各條指令進行模擬解釋執行;
[0069]系統調用接口:接管待分析進程中的API調用,對核心API,如內存相關,採用模擬執行,其他API則交由作業系統直接運行,保證運行效率;
[0070]分析組件接口為系統提供API接口,使得分析人員能夠很容易地編寫分析組件,完成自動化程序分析;
[0071]所述的模擬器引擎模塊分別連接加載器、反彙編引擎和與附加的調試組件相連、用於進行應用程式調試的調試接口,其中:加載器解析待分析進程的可執行PE文件並將解析結果通過模擬器引擎模塊加載至內存管理模塊,反彙編引擎對單條x86指令進行反彙編,解析出指令的操作碼、源操作數、目的操作數等信息;調試接口用於傳遞調試信息,可進行應用程式及模擬器自身的調試;
[0072]所述的待分析進程的可執行PE文件是指=Windows中的可執行程序以PE格式存在,模擬器加載並解析PE文件使其能夠被模擬執行;
實施例2
[0073]如圖2所示,本發明所述系統運行時經歷加載、初始化、運行分析、終止等過程。
[0074]步驟一、加載待分析進程的PE文件和依賴的動態連結庫,建立完整的Windowsx86虛擬運行時環境;
[0075]所述的運行時環境包括線性內存地址空間、中央處理模塊環境以及相關的作業系統功能;
[0076]步驟二、對待分析進程進行指令模擬執行,使用輕量級的x86指令集模擬器提供細粒度的運行時信息,並進行後續分析,具體步驟包括:
[0077]2.1使用啟發式遞歸反彙編算法嘗試反彙編所有指令;
[0078]2.2構造處理器模擬環境,利用反彙編信息精確模擬各條指令的執行流程;
[0079]2.3提取內存訪問數據、寄存器值等信息用於程序分析;
[0080]所述的輕量級的x86指令集模擬器是指:高性能的、以低代價運行的x86指令集模擬器,能夠在對程序正常執行不造成顯著影響的情況下對x86指令集進行模擬執行;
[0081]所述的細粒度的劃分具體是:精確到對作業系統可見的最細粒度,即指令、寄存器這一級別,而非諸如動態二進位插樁等方案常採用的基本塊或函數這一級別;
[0082]所述的運行時信息具體是指:內存訪問信息如內存地址和內存數據、寄存器值、標誌位改變信息以及可能產生的異常信息等;
[0083]步驟三、模擬若干作業系統行為保證待分析進程運行在可控的環境中,具體步驟包括:
[0084]3.1加載curl, exe的程序主體和依賴的系統模塊(DLL),使用地址空間隨機化(ASLR)分配各組件的基地址,確定內存布局;同時確定程序入口點以及終止條件;
[0085]3.2對進程虛擬內存空間採用分頁管理,其中頁面大小為4KB ;對每個頁面維護其狀態信息(空閒、保留或提交)以及訪問控制權限(可讀、可寫、可執行)等,並由虛擬內存管理單元統一管理內存頁面的分配和回收;
[0086]3.3線程管理模塊用於管理進程中的所有線程,包括在程序初始化時的主線程、執行過程中的線程建立和銷毀;
[0087]3.4異常處理器接管在處理器發生異常時的作業系統異常處理機制,在模擬器環境中運行程序的異常處理例程;
[0088]所述的作業系統行為具體是指:進程初始化、內存管理、線程管理、異常處理等;
[0089]步驟四、對進程中的所有作業系統API進行封裝,並部分交由作業系統直接執行,具體步驟包括:
[0090]4.1攔截所有模擬進程的API調用,對核心API(如內存分配API VirtualAlloc )由模擬器直接模擬執行,其他API (如網絡API socket )發送至作業系統執行;
[0091]4.2完成API調用時的參數轉換,對其中的指針類型參數進行模擬內存地址和真實地址的映射,對於複雜結構體和新分配的堆數據進行深度拷貝映射至模擬內存空間;
[0092]4.3API執行完畢後返回模擬器控制,清除堆棧並解析API返回結果;
[0093]所述的作業系統API是指作業系統提供給用戶進程的應用程式接口,使用戶程序能夠利用作業系統功能。
[0094]步驟五、為模擬執行過程中的動態運行時信息如指令流、數據裡和控制流提供應用程式接口,使得分析程序能夠利用這些信息進行程序分析,具體為:將模擬器的執行過程封裝為事件,以事件處理的方式提供應用程式接口 ;主要包括指令執行事件、內存訪問事件、作業系統API調用事件、線程調度事件等等;針對curl, exe的執行流程,能夠獲取到其中的所有指令執行事件,包括寄存器和標誌位改變等參數;能夠獲取諸如網絡API調用事件,並能夠從中解析網絡數據;同時能夠重建程序運行時環境用於描述程序行為等。
【權利要求】
1.一種基於進程模擬的二進位程序分析系統,其特徵在於,包括:模擬器引擎模塊、內存管理模塊、進程管理模塊、系統調用接口、線程管理模塊、中央處理模塊和提供應用程式接口的分析組件接口,其中:模擬器引擎模塊分別連接內存管理模塊、進程管理模塊、系統調用接口和分析組件接口,分別傳輸運行狀態信息和運行指令、進程管理和線程調度信息、系統API調用數據、調試信息和分析組件事件,控制、協調各個模塊並降低不同模塊之間的耦合度;進程管理模塊分別與中央處理模塊、內存管理模塊和系統調用接口相連,分別傳輸處理器調度信息和運行狀態信息、內存管理數據以及系統調用參數轉換信息及封裝信息,線程管理模塊分別與進程管理模塊、內存管理模塊和中央處理模塊相連,分別傳輸線程運行狀態及調度信息、線程內存數據訪問以及處理器運行狀態。
2.根據權利要求1所述的系統,其特徵是,所述的模擬器引擎模塊包括:驅動單元、作業系統掛鈎單元和調試單元,其中:驅動單元與內存管理模塊和進程管理模塊相連,接收運行狀態信息,發送運行指令;作業系統掛鈎單元與進程管理模塊相連,接收進程管理模塊的系統API調用並傳遞給底層作業系統,返回API調用結果;調試單元連接系統調用接口和分析組件接口進行應用程式調試。
3.根據權利要求1所述的系統,其特徵是,所述的內存管理模塊包括:虛擬內存管理單元、堆管理單元和棧管理單元,其中:虛擬內存管理單元向線程管理模塊傳輸內存訪問數據,並與模擬器引擎模塊的驅動單元相連以傳輸運行狀態信息;堆管理單元從進程管理模塊接收堆管理指令,完成進程中堆內存的管理;棧管理單元從線程管理模塊接收線程運行狀態,完成所有線程中棧內存的管理。
4.根據權利要求1所述的系統,其特徵是,所述的進程管理模塊包括:線程調度管理單元、狀態驅動單元和系統API封裝單元,其中:線程調度管理單元與中央處理模塊相連接收進程中所有線程的調度信息,完成線程的調度以及創建和銷毀;狀態驅動單元與模擬器引擎模塊相連,接收模擬器 引擎模塊的運行指令,完成主線程及其他線程的運行驅動並傳輸運行狀態信息;系統API封裝單元與系統調用接口相連接收線程管理模塊的系統API調用,封裝參數並傳輸至模擬器弓I擎模塊進行調用。
5.根據權利要求1所述的系統,其特徵是,所述的線程管理模塊包括:環境信息模擬單元、驅動線程單元、執行單元,其中:環境信息模擬單元與進程管理單元相連,接收線程的運行時狀態信息並建立模擬運行時環境供線程使用;驅動線程單元與進程管理單元相連,接收線程運行指令並傳輸線程運行狀態;執行單元與中央處理模塊的線程狀態單元相連用於完成處理器指令循環並在結束時終止線程。
6.根據權利要求1-5任一項所述的系統,其特徵是,所述的中央處理模塊上設有異常管理器,用於傳遞處理器異常信息及異常處理結果,該異常管理器構造異常的環境信息並執行異常處理函數。
7.一種基於上述任一項權利要求所述系統的進程優化方法,其特徵在於,包括以下步驟: 步驟一、對待分析進程進行輕量級x86指令集模擬,即以程序運行效率損失在兩個數量級以內的前提下進行x86指令集的模擬處理和虛擬內存環境; 步驟二、模擬若干作業系統行為保證待分析進程運行在可控的環境中; 步驟三、對進程中的作業系統API調用進行封裝,交由作業系統直接執行;步驟四、為模擬執行過程中的動態運行時信息提供應用程式接口,並將模擬器各組件的執行過程封裝為事件,以事件處理的方式提供應用程式接口,最終使得分析程序能夠利用這些信息進行程序優化。
8.根據權利要求7所述的方法,其特徵是,所述的步驟一具體包括: 步驟1.D使用啟發式遞歸反彙編算法對於每條處理器指令提供靜態的反彙編信息; 1.1.1針對PE文件中的各條指令進行以下步驟的判斷; 1.1.2定位入口點指令E,當該指令E為有效指令則對其進行反彙編處理後執行步驟1.1.3,否則跳過該條指令並重新執行步驟1.1.2 ; 1.1.3當反彙編處理後的指令E為跳轉指令,則對指令E的跳轉目標進行反彙編處理; 1.1.4在指令E的尾部添加該指令的長度信息並返回步驟1.1.2處理下一條指令,直至完成所有指令的處理後返回反彙編處理得到的指令集合S ; 步驟1.2)利用反彙編信息模擬各條指令的執行流程,包括寄存器、內存數據以及標誌位的值; 步驟1.3)提取內存訪問數據、寄存器值變化信息用於程序分析。
9.根據權利要求7所述的方法,其特徵是,所述的步驟二具體包括: 步驟2.1)進程初始化階段對被模擬的程序進行加載和初始化,確定進程中各模塊中各段的內存分布情況,並確定入口點以及終止條件; 步驟2.2)內存管理使用分頁式的內存管理機制,包括:以頁為單位的虛擬內存分配、回收和訪問權限控制 ; 步驟2.3)線程管理模塊用於維護多線程程序中的線程建立、銷毀以及線程調度,使多線程程序在共享內存的模型下能夠被正常執行; 步驟2.4)異常處理用於在處理器發生異常時的作業系統異常處理機制,使程序的異常處理例程能夠運行在模擬環境中。
10.根據權利要求7所述的方法,其特徵是,所述的步驟三具體為: 步驟3.1)攔截所有模擬進程的API調用,核心API由模擬器引擎模塊直接模擬執行,其他API發送至作業系統執行; 步驟3.2)完成API調用時的參數轉換,包括:模擬內存地址和真實地址的映射; 步驟3.3)作業系統在API執行完畢後返回模擬器引擎模塊,處理執行結果。
【文檔編號】G06F21/52GK103440457SQ201310426028
【公開日】2013年12月11日 申請日期:2013年9月18日 優先權日:2013年8月20日
【發明者】谷大武, 趙若旭, 劉慧 , 張媛媛, 李卷孺 申請人:上海交通大學

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀