TWI696950B - 用於偵測在計算設備上執行的應用軟體的高階功能的方法,及其系統和電腦程式 - Google Patents
用於偵測在計算設備上執行的應用軟體的高階功能的方法,及其系統和電腦程式 Download PDFInfo
- Publication number
- TWI696950B TWI696950B TW106125395A TW106125395A TWI696950B TW I696950 B TWI696950 B TW I696950B TW 106125395 A TW106125395 A TW 106125395A TW 106125395 A TW106125395 A TW 106125395A TW I696950 B TWI696950 B TW I696950B
- Authority
- TW
- Taiwan
- Prior art keywords
- application
- application software
- binary code
- virtual
- code
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/565—Static detection by checking file integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3612—Software analysis for verifying properties of programs by runtime analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/034—Test or assess a computer or a system
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Quality & Reliability (AREA)
- Storage Device Security (AREA)
- Devices For Executing Special Programs (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Executing Machine-Instructions (AREA)
Abstract
揭示用於偵測在計算設備上執行的應用軟體的高階功能的系統、方法以及電腦程式。一種方法包括以下步驟:將用於應用軟體的虛擬位址映射表儲存在計算設備上的安全記憶體中。虛擬位址映射表包括在應用二進位碼中被映射到對應的目標應用功能的複數個虛擬位址。向高階作業系統(HLOS)註冊該應用軟體。在應用二進位碼的執行期間,HLOS基於虛擬位址映射表來偵測與目標應用功能相對應的虛擬位址中的一或多個虛擬位址何時被執行。
Description
本專利申請案依據專利法(e)主張於2016年7月29日提出申請的、名稱為「KERNEL-BASED DETECTION OF TARGET APPLICATION FUNCTIONALITY USING VIRTUAL ADDRESS MAPPING」的美國臨時申請案第62/368,223的優先權,故將其全部內容以引用方式併入本文。
本案係關於使用虛擬位址映射對目標應用功能的基於核心的偵測。
存在在硬體平臺上執行的各種高階應用軟體,該硬體平臺並不在系統或者平臺層處顯示出任何明顯的活動,因此並不提供偵測應用軟體執行的有用功能和行為資訊的時機。
常見的實例是高階網頁瀏覽器應用軟體在其在設備上執行期間受安全性漏洞(例如,跨站腳本)危害,安全性漏洞並不在系統和平臺級別處留下任何指示性蹤
跡。經由探測系統庫、平臺、SOC硬體或者觀察設備級別活動無法決定此種活動正發生在高階應用軟體上。
因此,為了對在設備上執行的各種協力廠商應用軟體具有更好的平臺級別控制,並且為了偵測該等正在執行的高階應用軟體的功能和行為活動中的一些,存在對開發如下機制的需求:該機制能夠實現將高階應用功能和行為表達並且傳送為平臺的HLOS或者核心能夠理解的形式。此舉將允許平臺對正在執行的應用軟體的行為具有更好的理解,並且允許平臺作出決策和採取動作,以處理正在執行的應用軟體的各種不同的情況。
作為一個實例,可以使用該資訊來作出防止協力廠商網頁瀏覽器應用軟體上的網頁安全性漏洞的平臺級別決策。其他領域的實例使用是:一旦使用本案內容中的該機制在HLOS或者核心層偵測到應用軟體的特定功能或者行為性質,平臺就作出如增加/減小各種SOC部件(DDR、匯流排、CPU、快取記憶體)的頻率或者引入高功率或者低功率模式的決策。通常,利用本案內容,平臺經由偵測和辨識出正被應用軟體執行的功能,來獲得對在設備上執行的各種協力廠商應用軟體進行各種控制的時機。此舉允許SOC和平臺供應商從平臺級別提供用於各種協力廠商應用軟體的更好的方案,該平臺原本對該等協力廠商應用沒有控制。
揭示用於偵測在計算設備上執行的應用軟體的高階功能的系統、方法以及電腦程式。一種方法包括以下步驟:將用於應用軟體的虛擬位址映射表儲存在計算設備上的安全記憶體中。該虛擬位址映射表包括該應用二進位碼中被映射到對應的目標應用功能的複數個虛擬位址。向高階作業系統(HLOS)註冊該應用軟體。在該應用二進位碼的執行期間,該HLOS基於該虛擬位址映射表來偵測與該等目標應用功能相對應的該等虛擬位址中的一或多個虛擬位址何時被執行。
另一實施例是一種系統,其包括處理設備和高階作業系統(HLOS)。該處理設備被配置為執行應用二進位碼。該HLOS包括虛擬位址映射表,該虛擬位址映射表包括在該應用二進位碼中被映射到對應的目標應用功能的複數個虛擬位址。該HLOS被配置為偵測與該等目標應用功能相對應的該等虛擬位址中的一或多個虛擬位址何時被執行。
100:系統
102:中央處理單元(CPU)
104:記憶體
106:高階作業系統(HLOS)
108:應用二進位碼
110:參考應用原始程式碼
112:註冊應用軟體
114:可信區
116:惡意程式碼偵測演算法
118:虛擬機器
120:虛擬位址到函數映射表
122:辨識符到虛擬位址映射表
200:邏輯映射
201:點
202:虛擬位址
203:點
204:虛擬位址
205:點
206:虛擬位址
300:邏輯映射
302:列
304:列
400:方法
402:方塊
404:方塊
406:方塊
408:方塊
410:方塊
412:方塊
414:方塊
416:方塊
500:邏輯映射
502:虛擬位址
504:虛擬位址
600:邏輯映射
602:虛擬位址
604:巨集名稱
704a:VM堆代碼空間
704b:VM堆代碼空間
900:VM堆結構
901:虛擬記憶體位址
902:代碼欄位
904:映射欄位
906:大物件欄位
908:舊資料欄位
910:舊指標欄位
912:始於欄位
914:至欄位
1000:方法
1002:方塊
1004:方塊
1006:方塊
1008:方塊
1010:方塊
1012:方塊
1014:方塊
1016:方塊
1018:方塊
1020:方塊
1200:中繼資料
1202:偽二進位碼範本
1204:經更新的版本
1206:區域
1600:方法
1602:方塊
1604:決策方塊
1605:方塊
1606:方塊
1607:決策方塊
1608:決策方塊
1609:方塊
1610:方塊
1611:決策方塊
1612:方塊
1613:方塊
在各圖中,除非另外指出,否則類似的元件符號貫穿各個視圖代表類似的部分。對於具有諸如「102A」或者「102B」之類的字母字元名稱的元件符號而言,字母字元名稱可以對在同一圖中的兩個類似的部分或者元素進行區分。當意欲元件符號包含在所有圖中具有相同的元件符號的所有部分時,可以省略用於元件符號的字母字元名稱。
圖1是用於使用安全記憶體中的虛擬位址映射來偵測目標應用功能的系統的實施例的方塊圖。
圖2圖示目標應用功能到對應的應用二進位碼的示例性映射。
圖3圖示虛擬位址到函數映射表(VAFMT)的示例性實施例。
圖4是圖示用於偵測圖1的系統中的惡意程式碼活動的方法的實施例的流程圖。
圖5圖示用於動態地辨識虛擬機器代碼空間的邊界的VAFMT的另一實施例。
圖6圖示與VAFMT相結合地使用的辨識符到虛擬映射表(IVAMT)的實施例。
圖7圖示與垃圾回收程序相結合地使用的VM代碼空間的部分。
圖8圖示針對圖1的虛擬機器中的垃圾回收功能的示例性興趣點以及用於VAFMT中的功能興趣點的虛擬位址,該等虛擬位址用於在包含虛擬機器的應用二進位檔案的執行期間偵測垃圾回收活動的執行。
圖9圖示用於虛擬機器堆的外部/內部邊界的虛擬位址的示例性映射。
圖10是圖示用於在虛擬機器實施例中偵測圖1的系統中的惡意程式碼活動的方法的實施例的流程圖。
圖11圖示包括用於特定緩衝分配器函數的虛擬位址的VAFMT的實施例,該等特定緩衝分配器函數用
於決定被動態分配的緩衝器的虛擬位址,該等被動態分配的緩衝器包含特定資料結構類型的物件以及在該緩衝器中分配的物件的成員/欄位的值。
圖12是圖示用於回應於接收到應用二進位碼的經更新的版本而自動地更新VAFMT的系統的實施例的組合方塊圖/流程圖。
圖13圖示圖12的具有經更新的虛擬位址和中繼資料的VAFMT。
圖14圖示圖12的VAFMT中的功能興趣點與偽二進位碼範本的示例性匹配。
圖15圖示圖14的偽二進位碼範本與應用二進位碼的經更新的版本中的經匹配的區域的示例性匹配。
圖16是圖示用於回應於接收到應用二進位碼的經更新的版本而更新VAFMT的方法的實施例的流程圖。
「示例性」一詞在本文中用於意指「用作示例、實例或說明」。在本文中被描述為「示例性的」任何態樣未必被解釋為比其他態樣更佳或者有優勢。
在該描述中,術語「應用軟體」亦可以包括具有可執行內容的檔案,例如:目標代碼、腳本、位元組代碼、標記語言檔案和補丁。另外,本文中所提及的「應用軟體」亦可以包括本質上不可執行的檔案,例如,可能需要打開的文件或者需要存取的其他資料檔案。
術語「內容」亦可以包括具有可執行內容的檔案,例如:目標代碼、腳本、位元組代碼、標記語言檔案和補丁。另外,本文中所提及的「內容」亦可以包括本質上不可執行的檔案,例如,可能需要打開的文件或者需要存取的其他資料檔案。
如該描述中使用的,術語「部件」、「資料庫」、「模組」、「系統」等意欲代表電腦相關實體,任一硬體、韌體、硬體和軟體的組合、軟體,或者執行中的軟體。例如,部件可以是但不限於在處理器上執行的程序、處理器、物件、可執行檔案、執行的執行緒、程式及/或電腦。經由說明的方式,在計算設備上執行的應用軟體和計算設備皆可以是部件。一或多個部件可以位於程序及/或執行的執行緒內,並且部件可以被當地語系化在一個電腦上及/或分佈在兩個或更多個電腦之間。另外,該等部件可以從具有儲存在其上的各種資料結構的各個電腦可讀取媒體執行。部件可以經由本端及/或遠端程序的方式進行通訊,例如根據具有一或多個資料封包的信號(例如,來自一個部件的資料,該部件經由信號的方式與本端系統、分散式系統中及/或跨越諸如網際網路之類的具有其他系統的網路的另一部件互動)。
圖1圖示用於從核心或者作業系統(O/S)層偵測應用二進位檔案的期望或者目標高階功能的系統100的實施例。如圖1的實施例中所示,系統100包括處理設備(例如,中央處理單元(CPU)102)、記憶體
104和高階作業系統(HLOS)106。記憶體104儲存可以由CPU 102執行的一或多個應用軟體。記憶體104可以儲存與參考應用原始程式碼110相對應的應用二進位碼108,參考應用原始程式碼110與安裝在計算設備上的應用軟體相關聯。在此點上,系統100可以在任何期望的計算設備或者系統中實現,例如,包括個人電腦、膝上型電腦、工作站、伺服器,或者可攜式計算設備(PCD)(例如,蜂巢式電話、智慧型電話、可攜式數位助理(PDA)、可攜式遊戲控制台、導航設備、平板電腦、可穿戴設備(例如,智慧手錶),或者其他電池供電的可攜式設備)。
在一個實施例中,核心或者O/S層包括高階作業系統(HLOS)106。如圖1中所示,HLOS 106包括註冊應用軟體112的列表、安全記憶體(例如,可信區114)以及用於每個註冊應用軟體的應用二進位碼108的專門配置的虛擬位址映射表。註冊應用軟體112的列表辨識在系統100上安裝的、已經向HLOS 106註冊的以用於安全控制及/或支援的應用軟體。例如,應用軟體(例如,網頁應用軟體、瀏覽器應用軟體等)的應用二進位碼108可以向HLOS 106註冊,並且在列表112中進行辨識。如本領域中已知的,可信區114包括安全記憶體或者區域,其被配置為保證被載入到記憶體及/或被執行的代碼及/或資料在安全性、機密性、完整性等態樣受保護。用於註冊應用軟體的應用二進位碼108可以具有一或多
個虛擬位址映射表,其由HLOS 106及/或可信區114中的演算法用於經由追蹤預定的虛擬位址點的執行來辨識期望或者目標高階應用功能。
應當理解的是,可以將系統100應用於各種應用域,在該等應用域中,在核心層追蹤和偵測高階應用功能是有利的。例如,在一個示例性實施例中,核心可以控制決策,例如,回應於對正在執行的應用軟體的特定功能或者行為性質的偵測,增加及/或減小各種晶片上系統(SoC)部件(例如,中央處理單元(CPU)、快取記憶體、雙倍資料速率(DDR)記憶體、一或多個匯流排等)的頻率,或者設置高功率及/或低功率模式以及啟用/禁用特定硬體特徵。以此種方式,HLOS 106和核心經由偵測和辨識出正被應用軟體執行的功能,而具有實現對在設備上執行的各種協力廠商應用軟體的各種控制的時機。應當理解的是,此舉可以允許SoC和平臺供應商從平臺/HLOS/核心級別提供用於各種協力廠商應用軟體的改良的方案,否則該平臺可能對該等協力廠商應用軟體沒有控制。
在示例性應用域中,系統100可以提供針對網頁應用軟體、網頁瀏覽器、JavaScript(Java腳本)代碼等的惡意攻擊或者其他漏洞的即時安全保護。如本領域中已知的,JavaScript是在許多網站和網頁應用軟體中使用的程式設計語言,基於JavaScript的攻擊是針對網路安全的頭號威脅之一。隨著越來越多的網頁活動從桌上
型電腦轉移到行動設備,JavaScript攻擊正變成對可攜式計算設備的主要威脅。
大多數惡意JavaScript攻擊利用JavaScript語言的特性以及網頁標準和規範對漏洞的約束。經由惡意JavaScript的基於網頁的漏洞的常見實例係包括以下各項:跨站腳本(亦即,XSS/CSS)、跨站請求偽造(亦即,CSRF/XSRF)、偷渡下載、使用者意圖劫持、點擊劫持、分散式拒絕服務(DDoS)、JavaScript隱寫術以及各種形式的混淆JavaScript。由於需要高階網頁行為和功能知識來嘗試偵測惡意行為,所以通常在瀏覽器軟體架構內構建當前網頁和JavaScript安全方案。
然而,HLOS、核心和設備平臺內的內置網頁安全機制是受限的,因為基於網頁/JavaScript的漏洞可能沒有關於平臺活動(例如,系統撥叫、設備使用等)的可見的指示。許多基於網頁/JavaScript的攻擊是面向外部的,並且僅危害使用者的線上資產、活動、身份等。換言之,可能僅在網頁瀏覽器/應用軟體內偵測到可見的活動模式,並且因此針對網頁漏洞的大多數安全機制幾乎總是構建在網頁瀏覽器應用軟體內。
在該點上,系統100中的應用二進位碼108的示例性實施例可以包括網頁應用軟體、瀏覽器應用軟體或者在其中HLOS 106經由追蹤預定的虛擬位址點來偵測高階應用功能的其他應用軟體。如圖1中進一步所示,系
統100亦可以包括位於可信區114中的一或多個惡意程式碼偵測演算法116。惡意程式碼偵測演算法116可以接收與虛擬位址點的執行以及在虛擬位址映射表中辨識的其相關聯的功能含義相關的資料。基於該資料,演算法116可以偵測例如惡意程式碼和行為、惡意JavaScript代碼和執行等,並且啟動用於解決安全威脅或者以其他方式阻礙惡意攻擊的合適的方法。在一個實施例中,當偵測到安全威脅時,系統100可以自動地解決威脅或者提示使用者進行合適的動作。
如圖1的實施例中所示,由HLOS 106使用的虛擬位址映射表可以包括虛擬位址到函數映射表120以及辨識符到虛擬位址映射表122。應當理解的是,HLOS 106和映射表120和122包括整合化平臺機制,經由該機制,系統100可以決定來自正在執行的應用二進位碼108的期望或者目標高階功能資訊。高階功能資訊可以由在可信區114中實現的演算法及/或模型(例如,惡意程式碼偵測演算法116)用於偵測惡意行為。
如下文更詳細地描述的,系統100可以支援用於執行應用二進位碼108的兩種不同的執行模型。第一執行模型涉及本機二進位執行(例如,來自C/C++代碼)。第二執行模型涉及託管(managed)運行時間執行(例如,由虛擬機器118進行的執行)。在一個實施例中,虛擬機器118可以執行來自JavaScript源的動態即時(JIT)或者解釋代碼。在託管運行時間執行實施例中,
虛擬機器118可以包括二進位碼108的部分,其中虛擬機器118在該二進位碼108內在該部分中執行。然而,應當理解的是,在其他實施例中,可以存在單獨的VM和二進位工作負載。
在圖2-圖4中圖示本機二進位執行模型的示例性實施例。對於本機二進位執行而言,註冊應用軟體112的列表之每一者應用軟體具有對應的VAFMT 120,其由HLOS 106維護。VAFMT 120可以位於可信區114中。VAFMT 120包括不同的感興趣的虛擬位址,其與該等虛擬位址相關聯的高階功能相映射。在一個實施例中,每個相關聯的高階功能可以被表示為演算法116理解的巨集名稱。然而,應當理解的是,可以實現用於表示相關聯的高階功能的其他機制,例如包括指向演算法116中的函數或者函數名稱的指標,以使得在特定虛擬位址處偵測到的活動與演算法116中需要被觸發的功能直接對應。二進位圖像中的特定應用函數(以及函數內的特定點)的虛擬位址可以被稱為「興趣點」。在一個實施例中,虛擬位址興趣點可以包括在例如以下各項之內、起始處、結束處的點或者以下各項之間的多個特定點,或者用於對已知網頁/JavaScript攻擊的分析和偵測的其他合適的資訊:敏感源/宿常式、危險網頁應用程式設計介面(API)、特定網頁功能、緩衝器的起始/結束,或者攻擊者可以利用的任何其他物件。在其他實施例中,虛擬位址興趣點可以包括在JavaScript解譯器、即時(JIT)
編譯器,或者運行時間環境(例如,用於儲存JavaScript原始程式碼、位元組代碼/JIT代碼的虛擬機器堆的分配/解除分配函數等)的實現中的點。
圖2和圖3圖示VAFMT 120的示例性實施例。圖2圖示應用原始程式碼110內的某些期望或者目標功能點到應用二進位碼108內的對應的虛擬位址點的邏輯映射200。在圖2和圖3中,圖示虛擬位址,但是未圖示二進位目標代碼。在該實施例中,應用原始程式碼110包括用於「documentWrite(文件編寫)」函數的C++代碼。原始程式碼中的點201被映射到二進位碼中的虛擬位址202。原始程式碼中的點203被映射到二進位碼中的虛擬位址204。原始程式碼中的點205被映射到二進位碼中的虛擬位址206。圖3圖示在VAFMT 120中的列302之下的二進位碼202、204和206中的虛擬位址到代碼在彼等虛擬位址處表示的相應的功能含義的邏輯映射300。如圖3中所示,VAFMT 120可以包括複數個虛擬位址(列302)以及功能興趣點的對應描述(列304)。由二進位編碼點202表示的虛擬位址(0x3273fa94)被映射到與EVAL_FUNCTION相對應的功能點。由二進位編碼點204表示的虛擬位址(0x3473fac8)對應於表示DOCUMENT_WRITE_FUNCTION_START的功能興趣點。由二進位碼中的206表示的虛擬位址(0x3473fad4)被映射到具有巨集含義DOCUMENT_WRITE_1的功能點。
圖11圖示包括定製虛擬位址表的VAFMT 120的實施例,定製虛擬位址表具有用於特定緩衝分配器函數的虛擬位址,該緩衝分配器函數可以用於決定動態分配的緩衝器(包括特定資料結構類型的物件(例如,類、結構體、聯合體))的起始和結束的虛擬位址。在緩衝器中分配的物件的成員/欄位的值可以使用偏移和長度欄位來決定,其中亦可以在該表中針對作為興趣點的特定欄位/成員來維護偏移和長度欄位。緩衝器分配函數的虛擬位址可以用於經由例如追蹤來自由分配器函數的虛擬位址覆蓋的區域中的系統記憶體分配器函數的執行,來偵測所分配的緩衝器的大小和位址。一旦已知緩衝器起始和結束虛擬位址,偏移和長度欄位就可以用於決定用於特定資料結構類型的物件的特定成員/欄位的值。
如圖1中虛線所示,應用原始程式碼110不需要儲存在系統100中。相反,其可以位於離線或者脫離設備的地方,並且可用作參考或者開原始程式碼。用於特定版本的參考原始程式碼可以用作參考和指導來決定瀏覽器或者網頁應用軟體的實際商業二進位檔案中的感興趣的虛擬位址。可以根據開源專案的相匹配的代碼修訂版/版本來編譯等效二進位檔案。經編譯的二進位檔案可以用作用於偵測基於該版本/修訂版的應用二進位檔案的期望或者目標虛擬位址以及函數/點的參考。可以使用類似的編譯器和連結器選項。此外,在應用代碼中的各個點處的中斷點可以用於對虛擬位址和其功能映射點的決定。二進
位碼辨識和相似度提取方法可以用於經由使用來自用於開源專案的已知的、經編譯的函數的參考二進位檔案,來辨識給定應用二進位檔案中的功能。對於具有經稍微修改的版本的二進位檔案(或者來源於原始程式碼庫(source base)的二進位檔案,其具有與已知參考開源專案不同的一些原始程式碼)而言,可以編寫引動重要的網頁函數和API的測試代碼。來自各個測試用例的虛擬位址存取序列可以用於彙聚為目標虛擬位址點集合。應當理解的是,其他機制可以用於從應用二進位碼中提取功能。
圖4是圖示用於偵測本機二進位執行模型中的惡意程式碼活動的方法400的實施例的流程圖。在方塊402處,產生用於應用軟體的VAFMT 120。如前述,VAFMT 120包括複數個感興趣的虛擬位址,該複數個感興趣的虛擬位址被映射到對應的高階應用功能。在方塊404處,可以在計算設備(例如,可攜式計算設備)上安裝應用軟體。在方塊406處,可以將應用軟體註冊用於由HLOS 106提供的安全支援(例如,註冊應用軟體112)。在方塊408處,可以啟動應用軟體,並且作為回應,CPU 102可以執行應用二進位碼108。當註冊應用軟體112執行時,HLOS 106可以攔截應用軟體的執行程序(方塊410)。在方塊412處,HLOS 106可以使用對應的VAFMT 120來在功能興趣點被執行時偵測和記錄功能興趣點。在方塊414處,可以將所記錄的點提供給惡意程式碼偵測演算法116以偵測和解決惡意攻擊。惡意程式碼
偵測演算法116可以包括基於簽名的演算法、模式匹配演算法或者採用機器學習或者其他技術。以此種方式,惡意程式碼偵測演算法116可以使用VAFMT 120來提供其作為輸入接收的虛擬位址的含義。
由於VAFMT 120在HLOS 106的控制之下,由HLOS 106執行的應用二進位碼108的虛擬位址的任何轉換/隨機化(例如,位址空間佈局隨機化(ASLR))可以應用於VAFMT 120中的虛擬位址,以保持該等虛擬位址與正在執行的應用軟體的有效虛擬位址同步。在一個實施例中,從JavaScript代碼以及利用VAFMT 120的應用軟體執行收集的資訊可以提供高階網頁/JavaScript功能資訊,其可以被提供給惡意程式碼偵測演算法116。在偵測到任何惡意行為(方塊416)之後,HLOS 106可以暫停應用/渲染器/JavaScript程序,並且為使用者打開對話方塊,該對話方塊就潛在的危險進行警告,並且詢問使用者用於繼續進行的指令。若使用者仍然想要繼續進行,則HLOS 106可以恢復瀏覽器程序。若使用者不想繼續進行,則HLOS 106可以請求使用者關閉標籤或者導航到某個其他網站,或者HLOS 106可以結束用於該執行實例(瀏覽器標籤)的程序。
當應用二進位碼110版本改變時,可以經由例如空中(OTA)更新來對VAFMT 120進行更新。該等更新確保HLOS 106準備好經更新的二進位檔案用於任
何註冊應用軟體112。經更新的二進位檔案可以產生用於相同的興趣點的新的虛擬位址。
應當理解的是,HLOS 106和映射表120和122亦可以被配置為支援涉及例如虛擬機器118(圖1)的託管運行時間執行模型。在該點上,上述整合化平臺機制使得系統100能夠決定來自正在執行的應用二進位碼108的期望或者目標高階功能資訊。在圖5-圖10中圖示託管運行時間執行模型的示例性實施例。
在涉及託管運行時間或者虛擬機器執行的實施例中,可以借助於另一表(例如,辨識符到位址映射表(IVAMT)122),從虛擬機器(VM)堆的不同部分中讀取JavaScript源及/或用於JavaScript源的位元組代碼/即時(JIT)二進位檔案。IVAMT 122包括用於VM堆的重要邊界的虛擬記憶體位址。其亦可以包括其他類型的條目,在該等條目中,可以維護用於虛擬機器118或者應用二進位108的各個功能點的虛擬位址。應當理解的是,IVAMT 122通常可以用於特定功能點的虛擬位址,其可以在應用軟體執行期間更新及/或動態地決定。在該點上,IVAMT 122可以將功能點映射到虛擬位址。在另一態樣,VAFMT 120可以將靜態定義的虛擬位址映射到功能含義。因此,在應用軟體執行期間VAFMT 120可以不改變,但是可以經由例如到計算設備的空中(OTA)更新來進行更新。亦應當理解的是,其他各種各樣的表可以與VAFMT 120和IVAMT 122
相關聯。該等各種各樣的表可以包括各種巨集或者參數名稱,該等巨集或者參數名稱映射到其不是虛擬位址的參數值或者設置。
在圖9的實施例中,辨識用於示例性VM堆結構900的各個外部及/或內部邊界的虛擬記憶體位址901。如圖9中所示,VM堆結構900可以包括辨識各個外部及/或內部邊界的複數個資料欄位,其包括例如始於欄位912、至欄位914、代碼欄位902、映射欄位904、大物件欄位906、舊資料欄位908以及舊指標欄位910。VM堆是VM託管記憶體區域,其被分配在本機系統堆中。如本領域中已知的,在VM堆中,VM執行例如對以下各項的抽象:記憶體管理、分配和解除分配代碼(例如,JavaScript源)、位元組代碼、中間代碼、JIT二進位檔案、在執行期間建立的物件以及用於程式的執行的所有其他相關聯的內務資訊以及內部資料結構(例如,JavaScript平臺)。如圖9中進一步所示,根據VM所儲存的事物的類型,VM堆區域可以包括各個子區域(例如,910、908、906、904、902、912和914)。子區域912和914可以用於包含第一次建立的物件,並且任何垃圾回收活動互換來自子區域912至914的活動物件,並且反之亦然。在一個實施例中,子區域902可以用於保存JavaScript源、位元組代碼、中間代碼和JIT二進位/組合代碼。子區域904可以用於保存與由VM在程式(例如,JavaScript程式)的執行期間建立的物件相關
聯的某些內部資料結構。子區域906可以用於保存比預定尺寸(例如,1MB)大的任何種類的項(代碼、物件)。子區域908和910可以保存已經倖免於多個垃圾回收週期的物件和資料,其中子區域908關注具有常數值的物件,以及子區域910關注指向其他物件的物件。
在操作中,HLOS 106可以隨著針對VM堆的記憶體分配改變,而辨識並且動態地更新IVAMT 122中的虛擬記憶體位址901。應當理解的是,JavaScript虛擬機器118保存該堆中的源,直到函數是活動的為止。託管運行時間或者虛擬機器執行模型可以涉及辨識來自VM堆的JavaScript源及/或位元組/JIT代碼。可以針對任何新的寫來追蹤具有JavaScript源的VM堆物件,並且可以辨識由虛擬機器118接收的新的JavaScript源。可以將所辨識的JavaScript源提供給可信區114中的演算法116,該演算法116從JavaScript代碼中提取各個特徵,並且使用該等特徵來偵測任何惡意行為。從JavaScript代碼中提取的特徵的實例係包括以下或者其他特徵:文件物件模型(DOM)修改以及敏感函數;評估的數量;字串的數量;腳本長度;字串修改函數;用於去混淆(de-obfuscation)的「內置」等。可信區115可以將所提取的特徵提供給惡意程式碼偵測演算法116,以決定任何惡意活動。
在某些實施例中,當僅有JIT二進位/位元組代碼可用時,可以從JIT二進位/位元組代碼中提取特
徵,並且隨後將特徵發送給惡意程式碼偵測演算法116。例如,HLOS 106可以維護表示高階JavaScript工件(artifact)的位元組代碼/JIT代碼序列的庫。可以記錄來自VM代碼空間中的JavaScript函數的位元組代碼/JIT代碼串流與該等工件的任何匹配,並且將其傳遞給惡意程式碼偵測演算法116,以對惡意特性進行決定。
圖5和圖6圖示在託管運行時間或者虛擬機器執行期間使用的IVAMT 122和VAFMT 120的示例性實施例。圖5圖示與VM代碼空間的分配相關的目標功能到對應的應用二進位碼108的邏輯映射500。在該實施例中,應用原始程式碼110包括用於「AllocateVMCodeSpace」函數的代碼。如圖5中所示,原始程式碼110中的第一點可以被映射到二進位碼108中的虛擬位址502。原始程式碼110中的第二點可以被映射到二進位碼108中的虛擬位址504。在示例性實現中,當VM在執行期間獲得其需要執行的新的JavaScript原始程式碼,並且決定在當前VM堆代碼空間中不存在太多空間(902)時,可以調用函數AllocateVMCodeSpace。該函數可以獲得新的JavaScript代碼的大小,並且決定VM堆代碼空間在大小上需要被增加的量,以使得VM可以保存JavaScript源、相關聯的位元組代碼或者中間代碼及/或JIT二進位檔案。基於所決定的大小,AllocateVMCodeSpace函數可以使用系統分配器函數(例如,mmap( )、
malloc( )、calloc( )或者realloc( )),來增加本機平臺的堆中的VM堆代碼空間的所分配的空間。mmap( )函數是相容POSIX的Unix系統調用,其將在從檔案描述符指定的其他物件的一偏移處起始(較佳地,在位址起始處)的位元組序列映射到記憶體中。mmap( )函數返回物件被映射的實際地方。Malloc( )、realloc( )、calloc( )和free( )包括C標準庫中的用於以C/C++程式設計語言執行針對動態記憶體分配的手動記憶體管理的一組函數。可以將用於二進位碼108中的興趣點的虛擬位址502和504直接放置在VAFMT 120中的列302中。由虛擬位址表示的不同興趣點的功能含義可以作為巨集名稱列在VAFMT 120的列304中。偵測演算法116(圖1)可以具有對由VAFMT 120的列304中的巨集所表示的功能的清楚的理解。針對VAFMT 120中的特定行的巨集名稱(列304中)可以明確地辨識當處理器(例如,CPU 102)執行應用軟體在虛擬位址點(列302中)處的二進位指令時正在被執行的功能。以此種方式,經由知曉執行統計結果、用於興趣點的虛擬位址的計數和分佈,偵測演算法116充分地理解正在由高階應用二進位檔案執行的功能。應當理解的是,映射可以直接在虛擬位址302與由巨集(304)表示並且由執行處理或者偵測的偵測演算法116理解的功能含義之間,從而消除知曉該虛擬位址興趣點處的實際二進位指令。
利用虛擬位址和巨集含義表示的興趣點可以離線決定,並且隨後被填充於用於特定應用二進位檔案的VAFMT 120中。許多類型的應用軟體可以具有可用的匹配參考原始程式碼。例如,匹配參考原始程式碼可以可用於從普及的開源專案(例如,基於blink/Chromium的瀏覽器、基於Webkit的瀏覽器、安卓平臺中的各種虛擬機器(諸如Dalvik、ART、RenderScript))開發的常用應用軟體。對於具有可用匹配參考原始程式碼的應用軟體而言,各種離線機制可以用於決定用於商業應用二進位檔案中的興趣點的虛擬位址,以用於原始程式碼中的用於彼等興趣點的對應運算式/語句。
將對用於興趣點的虛擬位址的離線決定的示例性實施例進行描述。可以在匹配參考原始程式碼中辨識原始程式碼110中的實現感興趣的功能的某些重要且有用的函數。可以將原始程式碼110內的各個點手動地決定為形成將一起表示特定唯一的功能的唯一點集合。應當理解的是,此唯一點集合可以等效於原始程式碼110內的用於該功能的取樣點集合,該取樣點集合唯一地表示完整的原始程式碼110的整體功能。可以對原始程式碼110進行編譯、組合以及連結到參考應用軟體,該參考應用軟體等效於實際的商業協力廠商應用軟體。二進位檔案(參考和商業協力廠商二者)皆可以源自於相同的原始程式碼110,並且使用類似的構建技術(例如,編譯、組合、連結)和工具鏈。如本領域已知的,開源應用軟體可以使用
可免費獲得的GCC或者LLVM工具鏈。編譯器、組合器和連結器工具可以用於產生參考二進位應用軟體,並且可以記下與原始程式碼中的重要點相對應的虛擬位址點。由於用於興趣點的虛擬位址可以包括對二進位應用軟體從其構建(編譯、組合、連結)的原始程式碼110中的興趣點的直接映射,所以參考二進位檔案可以離線用於與商業二進位檔案進行比較,以辨識商業協力廠商二進位檔案中的虛擬位址興趣點。亦應當理解的是,其他離線或者其他技術可以用於決定商業協力廠商二進位檔案中的興趣點的虛擬位址。在一個實施例中,圖2圖示原始程式碼110中的不同興趣點(201、203、205)可以如何直接被映射到二進位檔案108中的對應虛擬位址(202、204、206)。
圖6圖示圖5中的VAFMT 120與示例性IVAMT 122之間的邏輯映射600。VAFMT 120包括二進位應用軟體中的固定且已知的興趣點的虛擬位址,該二進位應用軟體的執行是感興趣的並且正在被追蹤。每當二進位應用軟體改變時,可以更新該等虛擬位址。IVAMT 122包括當二進位應用軟體執行時被建立或者更新的特定點的虛擬位址,其可以是動態的,並且表示動態項的虛擬位址(例如,運行時間緩衝器起始或者結束點)。VAFMT 120中的左側列(302)包括虛擬位址,而右側列(304)可以指示在該虛擬位址點處的在二進位碼108中存在的功能描述。以此種方式,VAFMT 120
將虛擬位址映射到功能含義。通常,IVAMT 122包括相反的內容。在此種情況中,功能含義或者巨集名稱是已知的,並且系統決定在二進位應用軟體的執行實例中功能含義或者巨集名稱604被實現或者可用的虛擬位址602。IVAMT 122中的虛擬位址可以包括在運行時間被決定的動態值。對於動態分配的緩衝器(或者虛擬機器堆或者其子空間)的起始和結束被決定的情況而言,可以從VAFMT 120獲取用於二進位應用軟體中的正在進行動態的緩衝器/堆空間分配的函數內的興趣點的虛擬位址。該等函數的執行可以經由偵測VAFMT 120中的虛擬位址的執行來決定。此外,緩衝器/堆空間分配的起始/結束虛擬位址可以經由偵測從該等函數引動的系統記憶體分配函數來決定。可以在IVAMT(122)中更新緩衝器/堆空間分配的該等決定的起始/結束虛擬位址。
圖7圖示垃圾回收對VM堆代碼空間的影響以及可以如何在虛擬機器118的垃圾回收活動存在的情況下一貫地決定JavaScript源。應當理解的是,垃圾回收是託管運行時間或者虛擬機器的不可缺少的活動,因為對新物件的分配以及對無用(dead)(亦即沒有在使用中)物件的解除分配可以由運行時間或者虛擬機器118來明確地處理。從託管VM堆中取回(reclaim)無用(未使用的)物件的活動被稱為垃圾回收。在該點上,當取回不需要的腳本物件或者其他物件時,可以重新組織VM堆,並且將現有物件來回移動以及進行壓縮,以為新物件分配
騰出空間。圖7圖示此種垃圾回收活動對VM堆代碼空間704a的影響。VM堆代碼空間704a包括JavaScript物件JS1、JS2、JS3、JS4。在垃圾回收事件之後,可以經由移除被垃圾回收器偵測為不需要的或者無用的JavaScript物件JS3,並且因此從VM堆代碼空間704b中回收(刪除),從而對物件進行壓縮。然而,VM堆中的物件的任何此種移動(例如,移除、壓縮等)改變決定JavaScript物件位於何處的虛擬位址起始和結束位置。在示例性方法中,可以經由在每次垃圾回收活動之後,重新執行圖5和圖6中圖示的用於VM堆和該堆內的各個空間(圖9)的虛擬位址決定機制,來改變虛擬位址,從而在腳本物件在垃圾回收期間被移動的情況下,利用新值來更新虛擬位址。如圖8中所示,核心可以追蹤在垃圾回收期間發生的物件移動以及物件移動的距離。經由追蹤物件移動的位址偏移,可以更新JavaScript物件在VM堆代碼空間中的起始和結束的虛擬位址值。以類似的方式,可以經由追蹤圖9中圖示的對VM堆的各個子空間的分配/解除分配/移動,來更新IVAMT 122中的用於VM堆的各個代碼空間的虛擬位址。
圖10是圖示用於偵測託管運行時間或者虛擬機器執行模型中的惡意程式碼活動的方法1000的實施例的流程圖。應當理解的是,圖10中的方塊1002、1004、1006、1008和1010中表示的步驟或者功能通常可以與上文結合圖4的方法所描述的方塊402、404、406、408
和410相對應。在方塊1012處,方法1000偵測用於VM堆分配器/解除分配器函數在被執行時的興趣點虛擬位址。如方塊1014處所示,當該執行被偵測到是在VM堆分配器/解除分配器函數內時,方法1000可以偵測進入核心的系統分配器/解除分配器函數的入口VM,並且記錄系統記憶體分配/解除分配。基於此,方法1000可以計算並且決定VM堆的起始/結束虛擬位址。經由實現用於VM堆的特定分配區域(例如,代碼空間、大物件空間等)的類似機制,可以決定用於VM堆內的特定子區域(例如,代碼空間、大物件空間等)的起始/結束虛擬位址。如方塊1016處所示,一旦在方塊1014處決定用於儲存JavaScript原始程式碼物件的VM堆空間,方法1000就可以使用腳本物件頭部簽名/模式(具有二進位形式),來決定JavaScript物件在VM堆內的起始。JavaScript物件的長度可以是從頭部中提取的,並且用於提取整個JavaScript原始程式碼。如方塊1018處所示,JavaScript原始程式碼可以用於提取由偵測演算法116用於偵測例如惡意行為的感興趣的特定特徵。在方塊1020處,可以基於例如在方塊1018中從JavaScript源中提取的特徵,決定JavaScript代碼的惡意行為。
如前述,VAFMT 120可以以離線方式初始地配置,並且被提供給計算系統100(圖1)。在一個實施例中,當使得應用二進位碼108的新版本可用於計算系統100時,VAFMT 120可以類似地以離線方式進行更
新,並且經由例如通訊網路(被稱為「空中(OTA)更新」)被提供給計算系統100。對於被頻繁地更新的二進位應用軟體而言,以此種方式更新VAFMT 120可能是缺點。應當理解的是,在應用二進位碼108的經更新版本中的二進位碼的相對大的部分可能保持不變。VAFMT 120中辨識的功能興趣點304可以包括應用二進位碼108及/或二進位碼的可能逐個版本沒有改變的相對有限部分。
例如,編譯器操作及/或設置可以不是經常改變,以及二進位碼中的各個模組可以維護在各模組之間類似或者預定的偏移。圖12-圖16圖示可以在計算系統100中實現的用於當安裝了應用二進位碼108的新的或者經更新的版本時自動地更新VAFMT 120中的虛擬位址的各種機制。
應當理解的是,該等機制可以減少針對用於各種類型的應用軟體及/或用例的VAFMT 120的OTA更新的需求。例如,在網頁安全應用軟體的背景下,該等機制可以消除針對用於對基於相同的原始程式碼庫的網頁瀏覽器應用軟體的最頻繁類型的更新中的許多更新的OTA更新的需求。現有的網頁瀏覽器應用軟體可以在每週或者每月的基礎上來更新二進位應用代碼。用於新二進位版本的虛擬位址可能改變,即使當原始程式碼還沒有針對與功能興趣點304相關的特定模組進行改變時。在此種情況中,在該應用軟體中的除了功能興趣點304之外的部
分中存在原始程式碼改變或者在該應用軟體的其他部分中存取的變數類型和資料結構類型(例如,C++類、C-結構體、聯合體等)態樣存在改變的情況下,虛擬位址可能改變。此外,在編譯器、組合器和連結器選項中的某些種類的改變可能導致該應用軟體的其他部分中的虛擬改變。
圖12圖示可以在計算系統100中實現的用於當安裝了應用二進位碼108的新的或者經更新的版本時自動地更新VAFMT 120的示例性機制的實施例。如圖12中所示,可以利用中繼資料1200和一或多個偽二進位碼範本1202來增補VAFMT 120。如下文更詳細地描述的,中繼資料1200和偽二進位碼範本1202可以使得HLOS 106能夠在利用新版本更新應用二進位碼108時決定用於功能興趣點304的新虛擬位址302。
應當理解的是,偽二進位碼範本1202包括操作陳述式序列,其將符號表示用於記憶體中的儲存位置以及用於本端變數的偽暫存器。偽二進位碼範本1202可以使用指示其目的的各種類別的偽暫存器。在一個實施例中,ArgumentReg#可以表示將引數傳遞給子常式的偽暫存器。ReturnReg可以包括當從子常式調用返回時的返回位址。ProgCounter可以包括由處理器的程式計數器指向的當前位址。ReturnValueReg#可以表示用於將來自子常式調用的值返回到調用器代碼的暫存器。操作可以包括處理器中具有可以是變數或者儲存位置的輸入
和輸出的組合操作的接近表示(close representation)。例如,AddWord變數可以指示大小為4位元組或者1字的運算元的加法運算。LoadWord變數可以指示從具有預定大小(例如,4位元組或者1字)的記憶體中載入值。LoadByte變數可以指示從具有預定大小(例如,1位元組)的記憶體中載入值。branchEQ可以包括條件分支,其中若先前比較操作導致正在比較的運算元相等,則該條件分支進行分支到目標被作為運算元而提供。定址模式或者位址計算可以獨立於載入或者儲存操作。在一個實施例中,利用基址暫存器和偏移的載入操作可以被分離為兩種操作:加法運算,其經由將常數偏移值加到偽暫存器上來計算最終位址;之後是實際的載入操作,其使用包含所計算的最終位址的偽暫存器。此舉可以完成以保存具有最通用形式的表示,因為經更新的應用二進位檔案可以使用各種形式的定址模式。作為常數的指令引數可以由對有效的常數範圍進行編碼所需要的位元數量表示。
例如,常數「Const8bits」可以用作操作的運算元,其指示該運算元是可以由8位元編碼的任何有效值,並且因此,決定所允許的值的有效動態範圍。一些運算元可以是硬編碼常數(例如,「#8」指示值「8」)。直接分支操作的運算元可以被表示為從當前程式計數器的偏移(例如,「ProgCounter+#Const20bits」或者「ProgCounter+#12」)。偽二進位碼範本1202可
以使用該等或者其他操作陳述式來實現感興趣的功能。應當理解的是,操作陳述式可以用於辨識新的經更新的二進位檔案中的區域,其經由例如匹配功能或者模組來實現提取功能。匹配模組被配置為理解偽二進位碼範本1202和應用軟體的實際二進位檔案的格式和表示二者。匹配模組可以在操作訊窗內執行逐個操作的比較,以偵測匹配或者使用控制資料流程和控制資料流程區域內的操作來進行比較。
可以使用各種匹配技術。偽二進位碼範本1202中的操作陳述式可以使用靜態單賦值(SSA)表示,其中一次僅分配特定的偽暫存器變數,從而披露操作陳述式之間的真實依賴關係。SSA表示可以能夠實現應用軟體的經更新的二進位檔案中的功能區域的改良的匹配。術語「偽」代表以下事實:表示不是二進位可執行檔案並且不使用處理器的實際的組合指令、暫存器和定址模式,並且不被組合到二進位碼中。偽二進位碼範本1202提供功能參考,其中匹配模組使用其作為範本模式和指南來偵測應用軟體的經更新的二進位檔案中的感興趣的功能。應當理解的是,偽二進位碼範本1202的實際格式和表示是依賴的實現,並且可以使用各種其他替代方案。在其他實施例中,一些實現可以使用實際的組合指令表示,或者類似於二進位應用軟體在其上執行的CPU 102的組合表示的表示。
如前述,HLOS 106可以維護註冊應用軟體112的列表。對於每個註冊應用軟體而言,HLOS 106維護包括用於功能興趣點304的虛擬位址302的表(例如,VAFMT 120、IVAMT 122)。如圖12中所示,VAFMT 120中的一或多個虛擬位址302可以與偽二進位碼範本1202相關聯。在圖12的實施例中,偽二進位碼範本1202與用於功能興趣點304的特定集合的虛擬位址302的集合相關聯,功能興趣點304的特定集合表示唯一功能(documentWrite函數)。偽二進位碼範本1202包括通常等效於覆蓋documentWrite函數的二進位碼的偽代碼指令。在一個實施例中,偽二進位碼範本1202可以不使用處理器指令集架構(ISA),並且不需要被組合到實際的二進位碼中。偽二進位碼範本1202可以使用類似於組合操作的操作陳述式,並且使用偽暫存器和符號參考來進行儲存。儘管使用此種操作陳述式序列,但是偽二進位碼範本1202可以實現感興趣的功能(例如,在上文實例中的「documentWrite」函數的功能),其中其表示的該功能與在應用軟體的實際二進位檔案中實現的感興趣的功能(例如,documentWrite函數)相同或者等效。應當理解的是,計算系統100可以包括任何數量的偽二進位碼範本1202。不同的偽二進位碼範本1202的數量可以使得:在VAFMT 120中擷取的所有不同的功能(儘管不同的功能興趣點集合)皆具有至少一個代表性偽
二進位碼範本1202,其用於當安裝新應用二進位碼時更新其覆蓋的函數點的虛擬位址。
在一個實施例中,偽二進位碼範本1202可以包括通用形式的目標組合指令,或者一或多個偽暫存器,以及從通用基礎(例如,全域堆或者堆疊、符號/變數名稱)的記憶體存取偏移(其表示記憶體中的特定參考點)。中繼資料1200通常包括使用例如位元組偏移的無虛擬位址的表示。用於虛擬位址(0x3473fac8)的中繼資料1200包括位元組偏移(BASE2=BASE0+74709704)。用於虛擬位址(0x3473fad4)的中繼資料1200包括位元組偏移(BASE2+12)。用於虛擬位址(0x3473fae8)的中繼資料1200包括位元組偏移(BASE2+32)。應當理解的是,該中繼資料可以形成與唯一地表示「document_write」功能的三個虛擬位址興趣點的集合相對應的唯一集合。
偽二進位碼範本1202可以初始以離線方式產生,被提供給計算系統100,並且儲存在設備的安全儲存裝置中。應當理解的是,當在例如由功能興趣點304覆蓋的區域中的代碼及/或資料結構中存在明顯的改變時,可以僅需要更新偽二進位碼範本1202。該等類型的改變可以是相對不頻繁的(例如,每6個月一次)。可以經由OTA更新來實現該類型或者其他類型的更新。此舉可以能夠實現從例如每週/每月基礎的虛擬位址的OTA更新到僅在
每6個月一次進行偽二進位碼範本1202的OTA更新的顯著減少。
可以偵測用於現有的註冊應用軟體的新二進位版本的更新或者重新安裝。作為回應,中繼資料1200和偽二進位碼範本1202可以用於自動地更新VAFMT 120。如圖12中所示,偽二進位碼範本1202可以用於對新應用軟體中的二進位碼的區域1206進行模式匹配,其中由偽二進位碼範本1202表示的功能興趣點304(並且因此該特定偽二進位碼範本表示的虛擬位址興趣點)位於該區域1206中。中繼資料1200可以用於關注於在應用二進位碼108的經更新的版本1204中搜尋區域1206。可以進行初始嘗試,以經由使用來自用於唯一功能的功能興趣點304的原始基礎(BASE0)的相對OFFSET,對所關注的區域1206進行搜尋(例如,在基礎BASE2之前以及之後的預定百分比)。應當理解的是,在許多類型的頻繁更新中,該等相對偏移保持在附近。如圖12中進一步所示,當偵測到匹配時,可以從新二進位檔案中獲取新虛擬位址,並且可以對VAFMT 120進行更新以反映新虛擬位址。若一或多個功能興趣點304無法產生新二進位檔案中的匹配,則計算系統100可以啟動OTA更新,或者在其他實施例中,基於特定功能的重要性,從VAFMT 120中刪除特定的感興趣的功能以及相關聯的虛擬位址。
圖13圖示來自圖12的具有經更新的虛擬位址的VAFMT 120(由灰色方塊表示)。與
DOCUMENT_WRITE_FUNCTION_START興趣點304相對應的虛擬位址302已經被更新為新虛擬位址(0x3133b61c)。與DOCUMENT_WRITE_1興趣點304相對應的虛擬位址302已經被更新為新虛擬位址(0x3133b62c)。與DOCUMENT_WRITE_2興趣點304相對應的虛擬位址302已經被更新為新虛擬位址(0x3133b62c)。如圖12中進一步所示,亦可以對與虛擬位址相對應的中繼資料1200進行更新。如圖13中所示,用於新虛擬位址(0x3133b61c)的中繼資料1200已經被更新為「BASE2=BASE0+74709000」。此圖示在應用軟體的經更新的二進位檔案中的兩個感興趣的功能之間(亦即,在「KERNEL_ALLOCATOR_FUNCTION」與「DOCUMENT_WRITE_FUNCTION」之間)的輕微相對位置改變。該改變可以是相對輕微的。例如,該改變可以是在兩個感興趣的功能之間的74709704位元組的總原始距離中減少704位元組。因此,在已經以兩種感興趣的功能之間的基礎偏移中繼資料(亦即74709704位元組)之前和之後的某一容忍度關注了搜尋的情況下,經由使得搜尋區域變窄,而允許有效的匹配。用於新虛擬位址(0x3133b62c)的中繼資料1200已經被更新為BASE2+16。用於新虛擬位址(0x3133b640)的中繼資料1200已經被更新為BASE2+36。
圖14和圖15圖示與和DOCUMENT_WRITE函數相關的功能興趣點304的集合相關聯的偽二進位碼範本1202的示例性實施例。功能興趣點304的集合包括DOCUMENT_WRITE_FUNCTION_START模組、DOCUMENT_WRITE_1模組以及DOCUMENT_WRITE_2模組。如圖14中所示,在該集合中的功能興趣點304之每一者功能興趣點與特定偽代碼指令直接相關聯,特定偽代碼指令形成偽二進位碼範本1202內的「偽二進位指令興趣點」。基於經更新的應用二進位檔案中的與「偽二進位興趣點」直接匹配的特定二進位指令,偽二進位碼範本1202內的該等「偽二進位指令興趣點」包括當前VAFMT 120中的虛擬位址興趣點與應用二進位檔案的經更新的版本中的新虛擬位址興趣點的一對一映射。如圖14中所示,DOCUMENT_WRITE_FUNCTION_START模組與保存前兩個調用器保存的偽暫存器(CallSave0、CallSave1)以及返回暫存器(ReturnReg)的「入堆疊」操作相關聯。其之後是AddWord操作,其計算隨後的LoadWord操作所需要的位址。AddWord操作將應當適合放入8位元的常數值與程式計數器相加,並且將結果保存在偽暫存器reg0中。隨後的LoadWord操作直接使用reg0中的位址作為要從其載入值的位址。在用於應用軟體的實際二進位檔案中,具有8位元常數的AddWord
可以被直接包括在LoadWord指令中作為定址模式的一部分。「Const8bits」允許具有適合放入8位元的任何常數值的選項。將所載入的值保存在偽暫存器reg1中,並且將其用作將值載入在偽暫存器reg2中的第二LoadWord操作的位址。對於由DOCUMENT_WRITE_FUNCTION_START表示的功能興趣點而言,「入堆疊」操作是該偽二進位碼範本1202中的「偽二進位指令興趣點」。
DOCUMENT_WRITE_1模組與邏輯左移16位元的值的操作相關聯,16位元的值被保存在偽暫存器(reg0)中並且保存在偽暫存器reg1中。隨後將其與常數值「4」相加,並且將得到的值保存在偽暫存器reg2中,隨後該得到的值用作一位址,其中值從該位址被載入在偽暫存器(reg3)中。應注意的是,對於實際的二進位載入指令而言,定址模式可以直接執行與常數值4的加法,並且因此,AddWord和LoadWord可以由單載入指令表示。亦可以將reg3中的值加到程式計數器值(PC)上,以建立偽暫存器reg4中的最終位址,該最終位址是如下的位址:位元組值從該位址被載入到用於作為第一引數傳遞給所調用的常式的第一引數暫存器「ArgumentReg0」中。在其之後,存在去往處於一偏移(其是可以適合放入20位元的值)處的位址的直接分支。然而,在直接分支指令之前,存在AddWord指令,該AddWord指令保存在直接分支對應用軟體的不同部
分進行控制之後要返回的位址(經由正確地設置ReturnReg)。「邏輯左移」操作是用於該偽二進位碼範本1202中的由DOCUMENT_WRITE_1表示的功能興趣點的「偽二進位指令興趣點」。
DOCUMENT_WRITE_2模組與AddWord操作相關聯,該AddWord操作將可以適合放入8位元的常數值與程式計數器相加,並且將結果保存在偽暫存器reg0中。隨後將偽暫存器reg0用作一位址,其中值從該位址被載入在偽暫存器(reg2)中。其之後是另一AddWord操作,該AddWord操作將偽暫存器(reg2)和程式計數器的當前值相加並且將結果保存在偽暫存器reg1中。隨後偽暫存器reg1用作一位址,其中值從該位址被載入到ArgumentReg0中,ArgumentReg0用於經由直接分支指令將值傳遞給隨後的子常式調用。應注意的是,對於實際的二進位載入指令而言,定址模式可以直接執行與常數值的加法,並且因此,在應用軟體的實際二進位檔案中,AddWord和LoadWord可以由單載入指令表示。在LoadWord操作之後,存在去往處於一偏移(其是適合放入20位元的值)處的位址的直接分支。然而,在直接分支指令之前,存在AddWord指令,該AddWord指令保存在直接分支對應用軟體的不同部分進行控制之後要返回的位址(經由正確地設置ReturnReg)。對子常式的調用之後跟隨兩組比較和去往偽二進位碼範本1202內的附近位置的分支。比
較皆是在第一子常式返回值暫存器(ReturnValueReg0)上完成的,以檢查由子常式返回的特定值(「0」和「1」),並且基於所返回的值,分別使用BranchEQ和BranchNE操作本端地進行分支。分支目標位址被提供為從當前程式計數器值的常數偏移。將Const8bits運算元與程式計數器相加的AddWord操作是用於該偽二進位碼範本1202中的由DOCUMENT_WRITE_2表示的功能興趣點的「偽二進位指令興趣點」。應注意的是,應用軟體的實際二進位檔案可以具有偽二進位碼範本中的該位址計算操作(AddWord)以及LoadWord操作,其匹配到單個實際二進位指令(如「1dr r1,[pc,#80]」),並且在此種情況中,在「偽二進位指令興趣點」全部匹配或者作為其子部分匹配的實際二進位指令變成決定應用軟體的二進位檔案的新版本中的經更新的虛擬位址的指令。
圖15圖示偽二進位碼範本1202中的每一者偽代碼指令與應用二進位碼108的經更新的版本1204中的所匹配的區域1206中的等效的對應二進位碼的匹配。在操作中,當偽二進位碼範本1202與區域1206匹配時,二進位碼中與功能興趣點304匹配的對應指令的虛擬位址變成新虛擬位址,並且在VAFMT 120中進行更新。可以基於新虛擬位址來計算新基礎和偏移,並且可以對中繼資料1200進行更新。
圖16圖示在計算系統100中實現的用於當安裝應用二進位碼108的新的或者經更新的版本時自動地更新VAFMT 120的方法1600的實施例。在方塊1602處,可以將用於向HLOS 106註冊的應用軟體的虛擬位址映射表120儲存在計算系統100中,如前述。可以將VAFMT 120儲存在HLOS 106中的安全記憶體中。如圖12中所示,VAFMT 120可以包括複數個虛擬位址302的集合,其映射到用於註冊應用軟體的應用二進位碼108中的對應目標應用功能(功能興趣點304)的。回應於接收到應用二進位碼108的經更新的版本1204(決策方塊1604),可以決定與虛擬位址映射表120中的複數個虛擬位址302的集合中的一或多個集合相關聯的對應偽二進位碼範本1202(方塊1606)。如前述,在一個實施例中,偽二進位碼範本1202連同初始VAFMT 120一起可以初始經由到系統100的空中(OTA)更新,或者經由下載代碼/日期並且將其安裝到系統100的任何其他手段,來獲取。該等偽二進位碼範本1202和VAFMT 120二者可以被儲存在系統100中可由HLOS 106和核心存取的位置中。實際的儲存位址是相互依賴的實現。各個級別的安全保護或者安全記憶體配置可以被考慮用於儲存位置,此舉取決於實現選擇。當例如現有範本中的一或多個範本無法在應用軟體的經更新的二進位檔案中發現任何匹配時,可以對偽二進位碼範本1202進行更新。由於感興趣的區域中的應用代碼中的大規模改變或者上述其
他種改變,可能發生不匹配。在此種情況期間,經更新的偽二進位碼範本1202和經更新的VAFMT 120可以是OTA下載的,並且被安裝在系統100中。在決策方塊1608處,偽二進位碼範本1202用於對應用二進位碼108的經更新的版本1204進行搜尋,並且將偽代碼指令與等效二進位指令進行匹配。當發現匹配時,在方塊1610處,決定與二進位指令相對應的新虛擬位址。在方塊1612處,可以利用新虛擬位址以及對應的經更新的基礎/偏移中繼資料1200,來對虛擬位址映射表120進行更新。
如圖16中所示,可以針對所有不同的偽二進位碼範本1202,重複方塊1606、1608、1610和1612,直到所有的偽二進位碼範本1202被匹配並且VAFMT 120中的所有虛擬位址被更新為止。在決策方塊1611處,方法1600可以決定所有偽二進位碼範本1202是否已經被處理。若「是」,方法1600可以在方塊1613處結束。若「否」,在方塊1606處,可以選擇新的偽二進位碼範本1202。在決策方塊1608處,當在應用軟體的經更新的二進位檔案中針對特定偽二進位碼範本1202辨識匹配的二進位序列時,方法1600可以重複到下一偽二進位碼範本1202,以進行匹配。若在某一重複處,在應用軟體的經更新的二進位檔案中不存在針對偽二進位碼範本1202的匹配,則首先決定是否可以從VAFMT 120中刪除感興趣的功能(由偽二進位碼範本1202表示)(決策方塊1607)。若可以刪除其(其可以由於不同的原因(包括
功能的重要性為低)造成的),則可以從VAFMT 120中刪除用於該感興趣的功能的所有虛擬位址興趣點條目(方塊1605),並且重複繼續進行到方塊1606,以針對用於下一偽二進位碼範本1202的匹配進行搜尋。然而,若該功能(並且因此偽二進位碼範本1202)是重要的,並且不應當被刪除(方塊1609),則自動更新機制失敗,在此種情況中,可以執行用於虛擬位址及/或偽二進位碼範本1202的完整的空中(OTA)更新。此情形可以表示在應用軟體的經更新的二進位檔案中存在重大改變/修改的情況(例如,此情形可以以較低的頻率發生,6個月一次)。
應當理解的是,可以將本文描述的方法步驟中的一或多個步驟作為電腦程式指令(例如,上述模組)儲存在記憶體中。可以由任何適當的處理器與對應的模組結合或者合作來執行該等指令,以執行本文所描述的方法。
在本說明書中描述的各程序或者各程序流程中的某些步驟自然而然地在其他步驟之前,以便本發明如所描述地運作。然而,本發明並不限於所描述的步驟的次序,若此種次序或者順序不改變本發明的功能。亦即,應認識到的是,在不脫離本發明的範疇和精神的情況下,一些步驟可以在其他步驟之前、之後或者與其並行地(與其基本上同時)執行。在一些實例中,可以在不脫離本發明的情況下,省略或者不執行某些步驟。此外,諸如「之後」、
「隨後」、「接下來」等的詞並不意欲限制該等步驟的次序。該等詞僅用於引導讀者通讀示例性方法的描述。
此外,一般技術者在程式設計時能夠毫無困難地基於例如本說明書中的流程圖以及相關聯的描述,編寫電腦代碼,或者辨識合適的硬體及/或電路,來實現所揭示的發明。
因此,特定程式碼指令集或者詳細的硬體設備的揭示並不被視為對於充分地理解如何實現和使用本發明而言是必需的。在上文描述中並且結合可以圖示各個程序流程的圖,更加詳細地解釋了所發明的、所主張保護的電腦實現的程序的功能。
在一或多個示例性態樣中,所描述的功能可以用硬體、軟體、韌體,或其任意組合來實現。若用軟體來實現,該等功能可以被儲存在電腦可讀取媒體上或作為電腦可讀取媒體上的一或多個指令或代碼進行傳輸。電腦可讀取媒體包括電腦儲存媒體和通訊媒體二者,通訊媒體包括促進將電腦程式從一個地方傳輸到另一個地方的任何媒體。儲存媒體可以是能夠由電腦存取的任何可用媒體。經由舉例而非限制的方式,此種電腦可讀取媒體可以包括RAM、ROM、EEPROM、NAND快閃記憶體、NOR快閃記憶體、M-RAM、P-RAM、R-RAM、CD-ROM或其他光碟儲存、磁碟儲存或其他磁儲存設備,或者可以用於攜帶或儲存具有指令或資料結構形式的期望程式碼並且可以被電腦存取的任其他媒體。
另外,任何連接被適當地稱為電腦可讀取媒體。例如,若利用同軸電纜、光纖電纜、雙絞線、數位用戶線路(「DSL」)或無線技術(例如,紅外線、無線電和微波)從網站、伺服器或其他遠端源傳輸軟體,則同軸電纜、光纖電纜、雙絞線、DSL或無線技術(例如,紅外線、無線電和微波)被包括在媒體的定義中。
如本文中所使用的,磁碟(disk)和光碟(disc)包括壓縮光碟(「CD」)、鐳射光碟、光碟、數位多功能光碟(「DVD」)、軟碟和藍光光碟,其中磁碟通常磁性地複製資料,而光碟則用鐳射來光學地複製資料。上述各項的組合亦應當包括在電腦可讀取媒體的範疇之內。
對於一般技術者而言,在不脫離其精神和範疇的情況下,本發明涉及的替代實施例將變得顯而易見。因此,儘管已經圖示並且詳細地描述了所選擇的態樣,但是將理解的是,可以在不脫離本發明的精神和範疇(如以下請求項所定義的)的情況下在其中進行各種替換和改變。
100:系統
102:中央處理單元(CPU)
104:記憶體
106:高階作業系統(HLOS)
108:應用二進位碼
110:參考應用原始程式碼
112:註冊應用軟體
114:可信區
116:惡意程式碼偵測演算法
118:虛擬機器
120:虛擬位址到函數映射表
122:辨識符到虛擬位址映射表
Claims (30)
- 一種用於偵測在一計算設備上執行的一應用軟體的高階功能的方法,該方法包括以下步驟:將複數個虛擬位址映射表儲存在一計算設備上的一安全記憶體中,每一虛擬位址映射表對應於複數個應用軟體中的一者,每一虛擬位址映射表包括:一應用二進位碼的複數個虛擬位址,其中該應用二進位碼的該複數個虛擬位址被映射到在該應用軟體中的源代碼中的對應的目標應用功能;向一高階作業系統(HLOS)註冊該應用軟體;及在該應用二進位碼的執行期間,該HLOS基於該虛擬位址映射表來偵測與該等目標應用功能相對應的該等虛擬位址中的一或多個虛擬位址何時被執行。
- 根據請求項1之方法,其中該安全記憶體位於該HLOS中的一可信區中。
- 根據請求項1之方法,亦包括以下步驟:當該應用二進位碼被更新時,利用經修訂的用於該等目標應用功能的虛擬位址,來對該虛擬位址映射表進行更新。
- 根據請求項1之方法,亦包括以下步驟:將從該等虛擬位址偵測到的所執行的該等目標應用功能提供到一異常處理模組中,該異常處理模組被配 置為偵測與該應用軟體的執行相關聯的一或多個異常或者行為。
- 根據請求項4之方法,其中該異常處理模組包括一惡意程式碼偵測演算法。
- 根據請求項1之方法,其中該應用軟體包括一安全網頁應用軟體和一網頁瀏覽器中的一項。
- 根據請求項1之方法,其中該應用二進位碼是作為本機二進位碼被執行的。
- 根據請求項1之方法,其中該應用二進位碼包括一相關聯的虛擬機器。
- 一種用於偵測在一計算設備上執行的一應用軟體的高階功能的系統,該系統包括:用於將複數個虛擬位址映射表安全地儲存在一計算設備上的構件,每一虛擬位址映射表對應於複數個應用軟體中的一者,每一虛擬位址映射表包括:一應用二進位碼的複數個虛擬位址,其中該應用二進位碼的該複數個虛擬位址被映射到在該應用軟體中的源代碼中的對應的目標應用功能;用於向一高階作業系統(HLOS)註冊該應用軟體的構件;及用於在該應用二進位碼的執行期間,基於該虛擬位址映射表來偵測與該等目標應用功能相對應的該等虛 擬位址中的一或多個虛擬位址何時被執行的構件。
- 根據請求項9之系統,其中該安全記憶體包括該HLOS中的一可信區。
- 根據請求項9之系統,亦包括:用於當該應用二進位碼被更新時,利用經修訂的用於該等目標應用功能的虛擬位址,來對該虛擬位址映射表進行更新的構件。
- 根據請求項9之系統,亦包括:用於將從該等虛擬位址偵測到的所執行的該等目標應用功能提供到一異常處理模組中的構件,該異常處理模組被配置為偵測與該應用軟體的執行相關聯的一或多個異常。
- 根據請求項12之系統,其中該異常處理模組包括一惡意程式碼偵測演算法。
- 根據請求項9之系統,其中該應用軟體包括一安全網頁應用軟體和一網頁瀏覽器中的一項。
- 根據請求項9之系統,其中該應用二進位碼是作為本機二進位碼被執行的。
- 根據請求項9之系統,其中該應用二進位碼包括一相關聯的虛擬機器。
- 一種電腦程式,其體現在一記憶體中並且包含:一非暫時性電腦可使用的媒體,該非暫時性電 腦可使用的媒體具有體現在其中的一電腦可讀取程式代碼,該電腦可讀取程式代碼可由一處理器執行用於偵測在一計算設備上執行的一應用軟體的高階功能,該電腦程式包括:將複數個虛擬位址映射表儲存在一計算設備上的一安全記憶體中,每一虛擬位址映射表對應於複數個應用軟體中的一者,每一虛擬位址映射表包括:一應用二進位碼的複數個虛擬位址,其中該應用二進位碼的該複數個虛擬位址被映射到在該應用軟體中的源代碼中的對應的目標應用功能;向一高階作業系統(HLOS)註冊該應用軟體;及在該應用二進位碼的執行期間,該HLOS基於該虛擬位址映射表來偵測與該等目標應用功能相對應的該等虛擬位址中的一或多個虛擬位址何時被執行。
- 根據請求項17之電腦程式,其中該安全記憶體包括該HLOS中的一可信區。
- 根據請求項17之電腦程式,其中該電腦程式亦包括以下步驟:當該應用二進位碼被更新時,利用經修訂的用於該等目標應用功能的虛擬位址,來對該虛擬位址映射表進行更新。
- 根據請求項17之電腦程式,其中該電腦程 式亦包括以下步驟:將從該等虛擬位址偵測到的所執行的該等目標應用功能提供到一異常處理模組中,該異常處理模組被配置為偵測與該應用軟體的執行相關聯的一或多個異常或者行為。
- 根據請求項20之電腦程式,其中該異常處理模組包括一惡意程式碼偵測演算法。
- 根據請求項17之電腦程式,其中該應用軟體包括一安全網頁應用軟體和一網頁瀏覽器中的一項。
- 根據請求項17之電腦程式,其中該應用二進位碼是作為本機二進位碼被執行的。
- 根據請求項17之電腦程式,其中該應用二進位碼包括一相關聯的虛擬機器。
- 一種用於偵測一正在執行的應用軟體的高階功能的系統,該系統包括:一處理設備,其被配置為執行一應用二進位碼;及一高階作業系統(HLOS),其包括:複數個虛擬位址映射表,每一虛擬位址映射表對應於複數個應用軟體中的一者,每一虛擬位址映射表包括:該應用二進位碼的複數個虛擬位址,其中該應用二進位碼的該複數個虛擬位址被映射到在該應用軟體中的源代碼中 的對應的目標應用功能,該HLOS被配置為偵測與該等目標應用功能相對應的該等虛擬位址中的一或多個虛擬位址何時被執行。
- 根據請求項25之系統,其中該安全記憶體包括該HLOS中的一可信區。
- 根據請求項25之系統,其中該HLOS亦包括一異常處理模組,該異常處理模組被配置為接收從該等虛擬位址偵測到的所執行的該等目標應用功能,並且偵測與該應用軟體的執行相關聯的一或多個異常。
- 根據請求項27之系統,其中該異常處理模組包括一惡意程式碼偵測演算法。
- 根據請求項25之系統,其中該應用軟體包括一安全網頁應用軟體和一網頁瀏覽器中的一項。
- 根據請求項25之系統,其中該應用二進位碼包括一相關聯的虛擬機器。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662368223P | 2016-07-29 | 2016-07-29 | |
US62/368,223 | 2016-07-29 | ||
US15/245,037 | 2016-08-23 | ||
US15/245,037 US10380342B2 (en) | 2016-07-29 | 2016-08-23 | Kernel-based detection of target application functionality using virtual address mapping |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201805806A TW201805806A (zh) | 2018-02-16 |
TWI696950B true TWI696950B (zh) | 2020-06-21 |
Family
ID=61009931
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106125395A TWI696950B (zh) | 2016-07-29 | 2017-07-28 | 用於偵測在計算設備上執行的應用軟體的高階功能的方法,及其系統和電腦程式 |
TW106125433A TW201807576A (zh) | 2016-07-29 | 2017-07-28 | 對用於應用二進位碼的經更新的版本的目標應用功能的虛擬記憶體位址進行更新 |
TW106125587A TWI686744B (zh) | 2016-07-29 | 2017-07-28 | 使用基於偏移的虛擬位址映射對目標應用功能的基於核心的偵測 |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106125433A TW201807576A (zh) | 2016-07-29 | 2017-07-28 | 對用於應用二進位碼的經更新的版本的目標應用功能的虛擬記憶體位址進行更新 |
TW106125587A TWI686744B (zh) | 2016-07-29 | 2017-07-28 | 使用基於偏移的虛擬位址映射對目標應用功能的基於核心的偵測 |
Country Status (9)
Country | Link |
---|---|
US (3) | US10380342B2 (zh) |
EP (3) | EP3491568B1 (zh) |
JP (3) | JP6704503B2 (zh) |
KR (3) | KR102097256B1 (zh) |
CN (3) | CN109478217B (zh) |
BR (2) | BR112019001511A2 (zh) |
SG (3) | SG11201811213XA (zh) |
TW (3) | TWI696950B (zh) |
WO (3) | WO2018022257A1 (zh) |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9754112B1 (en) * | 2014-11-24 | 2017-09-05 | Bluerisc, Inc. | Detection and healing of vulnerabilities in computer code |
US10380342B2 (en) | 2016-07-29 | 2019-08-13 | Qualcomm Incorporated | Kernel-based detection of target application functionality using virtual address mapping |
US10754988B2 (en) * | 2016-08-30 | 2020-08-25 | Winbond Electronics Corporation | Anti-rollback version upgrade in secured memory chip |
US10275596B1 (en) * | 2016-12-15 | 2019-04-30 | Symantec Corporation | Activating malicious actions within electronic documents |
US10362047B2 (en) * | 2017-05-08 | 2019-07-23 | KnowBe4, Inc. | Systems and methods for providing user interfaces based on actions associated with untrusted emails |
US10795659B1 (en) * | 2017-11-02 | 2020-10-06 | Virtuozzo International Gmbh | System and method for live patching processes in user space |
US10635602B2 (en) | 2017-11-14 | 2020-04-28 | International Business Machines Corporation | Address translation prior to receiving a storage reference using the address to be translated |
US10698686B2 (en) | 2017-11-14 | 2020-06-30 | International Business Machines Corporation | Configurable architectural placement control |
US10664181B2 (en) | 2017-11-14 | 2020-05-26 | International Business Machines Corporation | Protecting in-memory configuration state registers |
US10558366B2 (en) | 2017-11-14 | 2020-02-11 | International Business Machines Corporation | Automatic pinning of units of memory |
US10761983B2 (en) * | 2017-11-14 | 2020-09-01 | International Business Machines Corporation | Memory based configuration state registers |
US10496437B2 (en) | 2017-11-14 | 2019-12-03 | International Business Machines Corporation | Context switch by changing memory pointers |
US10901738B2 (en) | 2017-11-14 | 2021-01-26 | International Business Machines Corporation | Bulk store and load operations of configuration state registers |
US10642757B2 (en) | 2017-11-14 | 2020-05-05 | International Business Machines Corporation | Single call to perform pin and unpin operations |
US10761751B2 (en) | 2017-11-14 | 2020-09-01 | International Business Machines Corporation | Configuration state registers grouped based on functional affinity |
US10552070B2 (en) | 2017-11-14 | 2020-02-04 | International Business Machines Corporation | Separation of memory-based configuration state registers based on groups |
US10592164B2 (en) | 2017-11-14 | 2020-03-17 | International Business Machines Corporation | Portions of configuration state registers in-memory |
JP7013297B2 (ja) * | 2018-03-22 | 2022-01-31 | 株式会社セキュアブレイン | 不正検知装置、不正検知ネットワークシステム、及び不正検知方法 |
US11182283B2 (en) * | 2018-09-26 | 2021-11-23 | Apple Inc. | Allocation of memory within a data type-specific memory heap |
CN109858239B (zh) * | 2019-01-16 | 2020-01-17 | 四川大学 | 一种动静态结合的容器内cpu漏洞攻击程序检测方法 |
US10936507B2 (en) * | 2019-03-28 | 2021-03-02 | Intel Corporation | System, apparatus and method for application specific address mapping |
US11468881B2 (en) * | 2019-03-29 | 2022-10-11 | Samsung Electronics Co., Ltd. | Method and system for semantic intelligent task learning and adaptive execution |
US11561814B2 (en) * | 2019-05-15 | 2023-01-24 | Vmware, Inc. | Browser-driven capture of application installations for application virtualization |
US11061819B2 (en) | 2019-05-28 | 2021-07-13 | Micron Technology, Inc. | Distributed computing based on memory as a service |
US11169930B2 (en) | 2019-05-28 | 2021-11-09 | Micron Technology, Inc. | Fine grain data migration to or from borrowed memory |
CN110598378B (zh) * | 2019-08-01 | 2023-07-18 | 华为技术有限公司 | 全局偏移表度量方法、动态度量方法及相关装置、设备 |
KR102693699B1 (ko) * | 2019-09-06 | 2024-08-12 | 삼성전자 주식회사 | 전자 장치에서 어플리케이션 업데이트 시 런타임 성능 개선 방법 및 장치 |
CN110888773B (zh) * | 2019-10-28 | 2023-06-06 | 北京字节跳动网络技术有限公司 | 一种获取线程标识的方法、装置、介质和电子设备 |
TWI728637B (zh) * | 2020-01-02 | 2021-05-21 | 中華電信股份有限公司 | 資訊安全防護方法及電腦可讀媒介 |
US11610020B2 (en) * | 2020-04-07 | 2023-03-21 | Mcafee, Llc | Securing sensitive user data stored locally by an application |
US11599342B2 (en) * | 2020-09-28 | 2023-03-07 | Red Hat, Inc. | Pathname independent probing of binaries |
CN113190448B (zh) * | 2021-05-06 | 2022-11-04 | 网易(杭州)网络有限公司 | 测试代码更新方法及装置、电子设备、存储介质 |
CN113190237B (zh) * | 2021-05-10 | 2024-01-19 | 北京百度网讯科技有限公司 | 数据处理方法、系统和装置 |
US11902398B2 (en) | 2021-06-22 | 2024-02-13 | Bizdata Inc. | System and method to integrate data from one application to another application |
US11934533B2 (en) * | 2021-06-22 | 2024-03-19 | Microsoft Technology Licensing, Llc | Detection of supply chain-related security threats to software applications |
CN114268514B (zh) * | 2021-11-30 | 2022-11-08 | 国汽智控(北京)科技有限公司 | 车辆与上位机的通信方法、装置及系统 |
CN114448815B (zh) * | 2021-12-27 | 2023-11-03 | 天翼云科技有限公司 | 基于网络拓扑的cdn节点数据生成方法、装置及计算机设备 |
US11928460B2 (en) * | 2022-04-20 | 2024-03-12 | International Business Machines Corporation | Dynamic update of a computer program in memory |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110082962A1 (en) * | 2009-10-01 | 2011-04-07 | Vmware, Inc. | Monitoring a data structure in a virtual machine |
WO2012154996A1 (en) * | 2011-05-10 | 2012-11-15 | Qualcomm Incorporated | Apparatus and method for hardware-based secure data processing using buffer memory address range rules |
US20140032875A1 (en) * | 2012-07-27 | 2014-01-30 | James Butler | Physical Memory Forensics System and Method |
TW201439760A (zh) * | 2012-12-10 | 2014-10-16 | Qualcomm Inc | 使用服務品質將記憶體分配至相異記憶體裝置之系統及方法 |
Family Cites Families (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5572590A (en) | 1994-04-12 | 1996-11-05 | International Business Machines Corporation | Discrimination of malicious changes to digital information using multiple signatures |
JP3011115B2 (ja) * | 1997-01-17 | 2000-02-21 | 日本電気株式会社 | デバッグシステム |
US6988271B2 (en) | 1998-10-02 | 2006-01-17 | Microsoft Corporation | Heavyweight and lightweight instrumentation |
US6681331B1 (en) | 1999-05-11 | 2004-01-20 | Cylant, Inc. | Dynamic software system intrusion detection |
US6785818B1 (en) * | 2000-01-14 | 2004-08-31 | Symantec Corporation | Thwarting malicious registry mapping modifications and map-loaded module masquerade attacks |
US6477612B1 (en) | 2000-02-08 | 2002-11-05 | Microsoft Corporation | Providing access to physical memory allocated to a process by selectively mapping pages of the physical memory with virtual memory allocated to the process |
US20020178375A1 (en) | 2001-01-31 | 2002-11-28 | Harris Corporation | Method and system for protecting against malicious mobile code |
US6598144B1 (en) * | 2001-12-12 | 2003-07-22 | Advanced Micro Devices, Inc. | Arrangement for limiting access to addresses by a consumer process instigating work in a channel adapter based on virtual address mapping |
US7213123B2 (en) * | 2002-10-24 | 2007-05-01 | International Business Machines Corporation | Method and apparatus for mapping debugging information when debugging integrated executables in a heterogeneous architecture |
GB0623276D0 (en) * | 2006-11-22 | 2007-01-03 | Transitive Ltd | Memory consistency protection in a multiprocessor computing system |
JP4763743B2 (ja) * | 2008-03-28 | 2011-08-31 | 日本電信電話株式会社 | プログラム動作比較装置及び方法及びプログラム |
CN101315602B (zh) * | 2008-05-09 | 2011-01-26 | 浙江大学 | 硬件化的进程内存管理核的方法 |
EP2151763A1 (en) | 2008-07-28 | 2010-02-10 | Nagravision S.A. | Method and apparatus for obfuscating virtual to physical memory mapping |
US9235704B2 (en) | 2008-10-21 | 2016-01-12 | Lookout, Inc. | System and method for a scanning API |
CN101430662B (zh) * | 2008-12-09 | 2010-10-06 | 东信和平智能卡股份有限公司 | Java语言程序与虚拟机程序共同调试的方法 |
US8117422B2 (en) | 2009-02-05 | 2012-02-14 | Texas Instruments Incorporated | Fast address translation for linear and circular modes |
TWI432987B (zh) | 2011-03-15 | 2014-04-01 | Phison Electronics Corp | 記憶體儲存裝置、其記憶體控制器與病毒掃描方法 |
US9032526B2 (en) | 2011-05-12 | 2015-05-12 | Microsoft Technology Licensing, Llc | Emulating mixed-code programs using a virtual machine instance |
US8566935B2 (en) | 2011-05-12 | 2013-10-22 | At&T Intellectual Property I, L.P. | Balancing malware rootkit detection with power consumption on mobile devices |
CN102243595B (zh) * | 2011-08-03 | 2014-02-19 | 浙江大学 | 基于MMU架构的Java Card系统组件更新方法 |
US8897762B2 (en) * | 2012-02-28 | 2014-11-25 | Qualcomm Incorporated | Optimizing signaling load overhead and battery consumption for background applications |
IL219597A0 (en) | 2012-05-03 | 2012-10-31 | Syndrome X Ltd | Malicious threat detection, malicious threat prevention, and a learning systems and methods for malicious threat detection and prevention |
US20130301830A1 (en) * | 2012-05-08 | 2013-11-14 | Hagai Bar-El | Device, system, and method of secure entry and handling of passwords |
US8819772B2 (en) | 2012-06-25 | 2014-08-26 | Appthority, Inc. | In-line filtering of insecure or unwanted mobile device software components or communications |
US9311011B2 (en) * | 2013-08-07 | 2016-04-12 | Qualcomm Incorporated | Dynamic address negotiation for shared memory regions in heterogenous multiprocessor systems |
JP2016534479A (ja) * | 2013-09-12 | 2016-11-04 | ヴァーセック・システムズ・インコーポレーテッドVirsec Systems,Inc. | マルウェアのランタイム中の自動検出 |
US9489313B2 (en) | 2013-09-24 | 2016-11-08 | Qualcomm Incorporated | Conditional page fault control for page residency |
CN104572046B (zh) * | 2013-10-16 | 2019-01-11 | 腾讯科技(深圳)有限公司 | 一种堆栈还原方法和计算机系统 |
US9721212B2 (en) | 2014-06-04 | 2017-08-01 | Qualcomm Incorporated | Efficient on-device binary analysis for auto-generated behavioral models |
US9721660B2 (en) | 2014-10-24 | 2017-08-01 | Microsoft Technology Licensing, Llc | Configurable volatile memory without a dedicated power source for detecting a data save trigger condition |
CN104461905A (zh) * | 2014-12-30 | 2015-03-25 | 东信和平科技股份有限公司 | 一种智能卡虚拟机、api库与上层应用同时调试的方法及系统 |
CN105117648A (zh) * | 2015-07-29 | 2015-12-02 | 杭州安恒信息技术有限公司 | 一种基于虚拟机的0day/恶意文档检测系统及方法 |
US10380342B2 (en) | 2016-07-29 | 2019-08-13 | Qualcomm Incorporated | Kernel-based detection of target application functionality using virtual address mapping |
-
2016
- 2016-08-23 US US15/245,037 patent/US10380342B2/en active Active
- 2016-08-23 US US15/245,041 patent/US10289847B2/en active Active
-
2017
- 2017-03-21 US US15/465,515 patent/US10360383B2/en active Active
- 2017-06-30 EP EP17742334.0A patent/EP3491568B1/en active Active
- 2017-06-30 CN CN201780045936.8A patent/CN109478217B/zh active Active
- 2017-06-30 BR BR112019001511-6A patent/BR112019001511A2/pt not_active Application Discontinuation
- 2017-06-30 BR BR112019001506-0A patent/BR112019001506A2/pt not_active IP Right Cessation
- 2017-06-30 JP JP2019503726A patent/JP6704503B2/ja active Active
- 2017-06-30 EP EP17742336.5A patent/EP3491570A1/en not_active Withdrawn
- 2017-06-30 KR KR1020197002550A patent/KR102097256B1/ko active IP Right Grant
- 2017-06-30 SG SG11201811213XA patent/SG11201811213XA/en unknown
- 2017-06-30 JP JP2019503720A patent/JP2019528515A/ja active Pending
- 2017-06-30 JP JP2019503727A patent/JP6704504B2/ja active Active
- 2017-06-30 KR KR1020197002552A patent/KR102058326B1/ko active IP Right Grant
- 2017-06-30 WO PCT/US2017/040502 patent/WO2018022257A1/en active Search and Examination
- 2017-06-30 EP EP17742335.7A patent/EP3491569B1/en active Active
- 2017-06-30 KR KR1020197002551A patent/KR20190038543A/ko not_active Application Discontinuation
- 2017-06-30 WO PCT/US2017/040492 patent/WO2018022255A1/en active Search and Examination
- 2017-06-30 WO PCT/US2017/040495 patent/WO2018022256A1/en active Search and Examination
- 2017-06-30 SG SG11201811216WA patent/SG11201811216WA/en unknown
- 2017-06-30 CN CN201780046239.4A patent/CN109564608A/zh active Pending
- 2017-06-30 CN CN201780045934.9A patent/CN109643343B/zh active Active
- 2017-06-30 SG SG11201811211TA patent/SG11201811211TA/en unknown
- 2017-07-28 TW TW106125395A patent/TWI696950B/zh not_active IP Right Cessation
- 2017-07-28 TW TW106125433A patent/TW201807576A/zh unknown
- 2017-07-28 TW TW106125587A patent/TWI686744B/zh not_active IP Right Cessation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110082962A1 (en) * | 2009-10-01 | 2011-04-07 | Vmware, Inc. | Monitoring a data structure in a virtual machine |
WO2012154996A1 (en) * | 2011-05-10 | 2012-11-15 | Qualcomm Incorporated | Apparatus and method for hardware-based secure data processing using buffer memory address range rules |
US20140032875A1 (en) * | 2012-07-27 | 2014-01-30 | James Butler | Physical Memory Forensics System and Method |
TW201439760A (zh) * | 2012-12-10 | 2014-10-16 | Qualcomm Inc | 使用服務品質將記憶體分配至相異記憶體裝置之系統及方法 |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI696950B (zh) | 用於偵測在計算設備上執行的應用軟體的高階功能的方法,及其系統和電腦程式 | |
Bigelow et al. | Timely rerandomization for mitigating memory disclosures | |
Sun et al. | Blender: Self-randomizing address space layout for android apps | |
Yoon et al. | Pift: Predictive information-flow tracking | |
Liang et al. | Anadroid: Malware analysis of android with user-supplied predicates | |
Yuhala et al. | Montsalvat: Intel SGX shielding for GraalVM native images | |
Hung et al. | Real-time and intelligent private data protection for the Android platform | |
Hu et al. | Identifying arbitrary memory access vulnerabilities in privilege-separated software | |
González | Taxi: Defeating code reuse attacks with tagged memory | |
White | Identifying the unknown in user space memory | |
Braunsdorf et al. | Compiler-based attack origin tracking with dynamic taint analysis | |
Aboughadareh et al. | Mixed-mode malware and its analysis | |
US20240241953A1 (en) | System and method for detecting malicious code by an interpreter in a computing device | |
Karpachev et al. | Dynamic Malware Detection Based on Embedded Models of Execution Signature Chain | |
BR112019001479B1 (pt) | Detecção baseada em núcleo de funcionalidade de aplicação alvo utilizando mapeamento de endereços virtuais | |
Ahad et al. | FreePart: Hardening Data Processing Software via Framework-based Partitioning and Isolation | |
Nirumand et al. | A comprehensive framework for inter-app ICC security analysis of Android apps | |
Cevik | Memory Corruption Mitigations and Their Implementation Progress in Third-Party Windows Applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |