剖析代碼執行的制作方法
【技術領域】
[0001]本發明的實施例概括而言涉及計算機安全和惡意軟件保護,并且更具體地,涉及剖析(profiling)代碼執行。
【背景技術】
[0002]計算機和其它電子設備上的惡意軟件感染是非常具有侵犯性并且難以檢測和修復的。反惡意軟件方案可能要求惡意代碼或文件的簽名與評估的軟件相匹配,以判定該軟件對于計算系統是有害的。惡意軟件可以通過使用在其中惡意軟件改變自身以避免被反惡意軟件方案檢測到的多態程序或可執行文件來偽裝自己。在這種情況下,反惡意軟件方案可能在零日攻擊中沒能檢測到新的或變形的惡意軟件。惡意軟件可以包括但不限于,間諜軟件、木馬(rootkit)、密碼盜竊程序、垃圾郵件、釣魚攻擊源、拒絕服務攻擊源、病毒、記錄器、廣告軟件、或產生不期望的活動的任意其它數字內容。
【附圖說明】
[0003]為了更全面地理解本發明的實施例及其特征和優點,現在結合附圖參考以下說明,在附圖中:
[0004]圖1是用于剖析代碼執行的系統100的示例性實施例的圖示;
[0005]圖2是惡意軟件訪問規則的示例性實施例的圖示;
[0006]圖3是用于判定用于剖析代碼執行的規則或惡意軟件訪問規則邏輯的方法的示例性實施例的圖示;以及
[0007]圖4是用于剖析代碼執行的方法的示例性實施例的圖示。
【具體實施方式】
[0008]圖1是用于剖析代碼執行的系統100的示例性實施例的圖示。系統100可以被配置為當電子設備上的代碼被動態地加載并執行時剖析代碼的執行。通過剖析代碼的執行,系統100可以監控表明為惡意軟件的執行模式的執行。在一個實施例中,系統100可以執行這種監控,而無需使用操作系統或應用掛接。在另一實施例中,系統100可以通過使用在處理器上加載的異常來執行這種監控。在又一個實施例中,系統100可以通過記錄和評估不同地址空間之間的轉變而執行對代碼執行的剖析。
[0009]系統100可以包括反惡意軟件模塊110,其被配置為評估電子設備102是否被惡意軟件感染。反惡意軟件模塊110可以駐留在電子設備102上或在與電子設備102通信地耦合的電子設備上。反惡意軟件模塊110可以與電子設備102的處理器106以及與惡意軟件訪問規則邏輯108通信地耦合。反惡意軟件模塊110可以被配置為訪問惡意軟件規則邏輯108,以判定監控電子設備的存儲器104的哪些部分。此外,反惡意軟件模塊110可以被配置為訪問惡意軟件規則邏輯108,以判定監控從存儲器的給定部分到另一部分的什么轉變。反惡意軟件模塊110可以被配置為通過例如將處理器106配置為當在第一定義地址空間(或范圍)到第二定義地址空間(或范圍)之間發生轉變時生成異常,從而將這種規則定義到處理器106。處理器106可以被配置為將結果異常發送到反惡意軟件模塊110。反惡意軟件模塊110可以被配置為訪問惡意軟件訪問規則邏輯108,以判定處理器106所檢測到的轉變以及先前判定出的轉變是否滿足序列、狀態圖模型或與惡意軟件相關聯的其它規則。
[0010]惡意軟件訪問規則邏輯108可以駐留在電子設備102上,或者駐留在由反惡意軟件模塊110可訪問的任意其它電子設備上。在一個實施例中,惡意軟件訪問規則邏輯108可以駐留在與反惡意軟件模塊110通信耦合的網絡上的反惡意軟件服務器上。在另一個實施例中,惡意軟件訪問規則邏輯108可以加載到存儲器104、處理器106或反惡意軟件模塊110上。可以以任意適當的方式來實現惡意軟件訪問規則邏輯108,所述任意適當的方式例如利用服務器、代理、應用、模塊、腳本、庫、函數、邏輯、數據庫、文件、表格或其它數據結構或實體。惡意軟件訪問規則邏輯108可以包括定義要監控的存儲器104的區域、要監控的轉變、要監控的I/O端口、用于讀取或寫入的存儲器區域或表明是惡意軟件的轉變序列的任意適當的信息。
[0011]惡意軟件訪問規則邏輯108可以包括:積極規則,通過所述積極規則將監控的操作或序列認為是安全的;消極規則,通過所述消極規則將監控的操作或序列認為是惡意的。此外,惡意軟件可以操縱合法軟件中的執行的預期順序,使得個體操作不是惡意的并且實際上與合法軟件相關,但是以這種操作是惡意的順序的序列進行。這種惡意軟件可以包括例如返回導向編程(ROP)。通過使用組合規則中的積極規則,可以消除一個或多個對惡意軟件的“誤報”識別。
[0012]電子設備102可以以任意適當方式實現。例如,電子設備102可以包括移動設備、計算機、服務器、膝上計算機、臺式計算機、板或刀片。
[0013]反惡意軟件模塊110可以以任意適當方式實現。例如,反惡意軟件模塊110可以包括指令、邏輯、函數、庫、共享庫、應用、腳本、程序、可執行文件、對象、模擬電路、數字電路或其任意適當組合。
[0014]處理器106可以包括例如微型處理器、微型控制器、數字信號處理器(DSP)、專用集成電路(ASIC),或被配置為解釋和/或執行程序指令和/或處理數據的任意其它數字或模擬電路。在一些實施例中,處理器106可以解釋和/或執行程序指令和/或處理存儲于存儲器104中的數據。存儲器104可以被配置為部分或整體作為應用存儲器、系統存儲器或兩者。存儲器104可以包括被配置為保存和/或容納一個或多個存儲器模塊的任意系統、設備或裝置。每個存儲器模塊可以包括被配置為將程序指令和/或數據保留一段時間的任意系統、設備或裝置(例如,計算機可讀存儲介質)。用于配置系統100的操作的指令、邏輯或數據(例如,如電子設備102或反惡意軟件模塊110的部件的配置)可以駐留在存儲器104中以被處理器106執行。
[0015]處理器106可以執行待由處理器的一個或多個核心執行的一個或多個代碼指令。處理器核心可以遵從由代碼指令所指示的指令的程序序列。每個代碼指令可以由處理器的一個或多個解碼器處理。解碼器可以生成微操作(例如,預定格式的固定寬度的微操作)作為其輸出,或者可以生成其他指令、微指令、或反應原始代碼指令的控制信號。處理器106還可以包括寄存器重命名邏輯和調度邏輯,其通常分配資源并且將與轉換指令相對應的操作進行入隊以用于執行。在完成執行由代碼指令指定的操作之后,處理器106內的后端邏輯可以收回(retire)指令。在一個實施例中,處理器106可以允許亂序執行,但是需要有序回收指令。處理器106中的回收邏輯可以采用本領域的技術人員所公知的多種形式(例如,重排序緩沖區等)。因此在執行代碼期間至少根據解碼器所生成的輸出、硬件寄存器和寄存器重命名邏輯所使用的表格以及執行邏輯所修改的任意寄存器來變換處理器106的處理器核心。
[0016]反惡意軟件模塊110可以被配置為定義用于監控的存儲器104的任意適當部分。反惡意軟件模塊110可以通過引用例如惡意軟件訪問規則邏輯108來做出這種定義。例如,反惡意軟件模塊110可以定義用于內核模式操作的存儲器104的一部分。在圖1的示例中,反惡意軟件模塊110可以定義內核空間,包括作為被監控的區域的從(0x000)到((M*F)xFFF)的存儲器地址。在另一示例中,反惡意軟件模塊110可以定義作為被監控的區域的存儲器104的一部分以用于用戶模式操作。在圖1的示例中,反惡意軟件模塊110可以定義用戶空間,包括作為被監控的區域的從((M*F)xFFF)到((N*F)xFFF)的存儲器地址。
[0017]具體應用、過程或線程可以由反惡意軟件模塊110識別以用于監控。當這些被加載到存儲器104內時,可以被動態跟蹤。在圖1的示例中,反惡意軟件模塊110可以定義被加載到由R5表示的區域的特定的跟蹤進程被監控。跟蹤進程可以表示不知道該進程是否與惡意軟件相關聯的進程。
[0018]操作系統的具體部分可以由反惡意軟件模塊110進行識別以用于監控。這些部分在加載到存儲器104時可以被動態地跟蹤。可以監控用于操作