移動通信裝置(諸如基 于Android? 操作系統(OS)、iOS?、Windows?OS、Blackberry?OS、Palm?OS、Symbian? 〇S等的蜂窩手機或智能電話)、移動計算裝置(諸如平板計算機,如iPad?、GalaxyTab?、 Surface?、KindleFire?等)、包含由英特爾公司制造的低功率芯片集的Ultrabooks?、上 網本、筆記本計算機、膝上型計算機、掌上計算機等,以及通常固定計算裝置(諸如臺式計 算機、服務器、機頂盒等)。
[0013] 裝置100例如可包括程序102、二進制轉換器模塊104、含有程序狀態106的存儲 器模塊106以及處理模塊114。程序102可包含可使能夠在裝置100上執行的各種軟件。 當程序102嘗試調用裝置100中的某些功能(例如小組件)時,裝置100例如可配置成使 程序102設陷到二進制轉換器模塊104。某些功能可包括如果以具體方式調用則可能對裝 置100的操作有害的功能。這些功能例如可使用防止它們被執行的W AX保護來進行保護。 用這種方式,如果程序102嘗試執行被保護的功能,則將發生錯誤,將控制導向二進制轉換 器模塊104。二進制轉換器模塊104可配置成將程序102轉換成可執行二進制代碼。然而, 按照本公開的至少一個實施例,二進制轉換器模塊104可進一步配置成執行與程序狀態重 新定位相呼應的這個轉換。程序狀態重新定位可涉及將存儲在存儲器模塊106中的至少一 個程序狀態元素(例如變元棧、溢出的寄存器棧、中央處理單元(CPU)寄存器、局部變量等) 從在裝置100的程序棧中定義的位置110移動到如在112所示的另一位置114。例如,一個 或多個程序狀態元素可偏移對應棧指針隨機偏移。程序狀態重新定位可由設陷到二進制轉 換器模塊104的程序102觸發,并且然后可在持久的基礎上繼續。可在修改的程序狀態中 跟蹤程序狀態元素從原始位置110到新位置114的重新定位。
[0014] 在引起程序狀態106的重新定位之后,二進制轉換器模塊104可接收或可正好察 覺修改的程序狀態,并且在代碼轉換中可利用修改的程序狀態。例如,二進制轉換器模塊 104可生成修改察覺代碼118以便由處理模塊執行。雖然未示出,但修改察覺代碼118可被 存儲在代碼高速緩存模塊(未示出)中。修改察覺代碼118可執行在程序102中定義的所 有功能,但與從主程序棧操作相反,修改察覺代碼118可使用在修改的程序狀態中定義的 存儲器位置114操作。而且,入侵者120可嘗試獲得對程序棧的控制以便將程序調用插入 到小組件以拼合對裝置100惡意的操作(例如盜取或刪除來自裝置100的信息,獲得對裝 置100的控制等)。然而,由于裝置100的程序棧不用程序狀態108的重新定位元素的新位 置114更新,因此操作將不訪問期望信息(例如,它們將嘗試訪問原始程序狀態位置110), 并且攻擊將失敗。
[0015] 圖2圖示了按照本公開的至少一個實施例可使用的裝置100'的示例配置。裝置 100'是可用于執行在圖1中所示的操作的設備的示例。雖然與本公開一致的實施例可采 用裝置100',但這些實施例不僅僅局限于具有公開配置的裝置。每個裝置100'可包括配 置成管理裝置操作的系統模塊200。系統模塊200例如可包含處理模塊116'、存儲器模塊 106'、電源模塊202、用戶接口模塊204和通信接口模塊206以便與通信模塊208交互。雖 然通信模塊208已經被圖示為與系統模塊200分開,但這個位置在本文中只是為了說明目 的。與通信模塊208關聯的一些或所有功能性也可被合并在系統模塊200內。
[0016] 在裝置100'中,處理模塊116'可包括位于單獨部件中的一個或多個處理器,或 者備選地,可包括嵌入在單個部件中(例如在片上系統(S0C)配置中)的一個或多個處理 核心以及任何處理器相關的支持電路(例如橋接接口等)。示例處理器可包含從英特爾公 司可得到的各種基于x86的微處理器,包含Pentium?、Xeon?、Itanium?、Celeron?、Atom?、 Core?i系列產品家族、高級RISC(例如精簡指令集計算)機器或"ARM"處理器等中的那些。 支持電路的示例可包含芯片集(例如,從英特爾公司可得到的北橋、南橋等),所述芯片集 配置成提供處理模塊116'可與其它系統部件交互所通過的接口,所述其它系統部件可在 裝置1〇〇'中以不同速度、在不同總線上等操作。通常與支持電路關聯的一些或所有功能性 也可被包含在與處理器相同的物理封裝中(例如S0C封裝,如從英特爾公司可得到的Sandy 橋集成電路)。
[0017] 處理模塊116'可配置成執行裝置100'中的各種指令。指令可包含配置成使處 理模塊116'執行與讀數據、寫數據、處理數據、規劃數據、轉換數據、變換數據等相關的活 動的程序代碼。在一個實施例中,處理模塊116'可配置成執行對所公開的實施例特定的各 種功能,例如,包含二進制轉換器模塊104的一些或所有功能。信息(例如指令、數據等) 可存儲在存儲器模塊106'中。示例信息可包括程序102、二進制轉換器模塊104和程序狀 態108中的一些或所有。存儲器模塊106'可包括以固定或可移動格式的隨機存取存儲器 (RAM)或只讀存儲器(ROM)。RAM可包含配置成在裝置100'(諸如,例如靜態RAM (SRAM)或 動態RAM (DRAM))操作期間保存信息的存儲器。ROM可包含配置為BIOS、UEFI等用于當裝 置100'激活時提供啟動指令的存儲器、可編程存儲器,諸如電子可編程ROM (EPROMS)、閃存 等。其它固定和/或可移動存儲器可包含磁存儲器(諸如,例如軟盤、硬驅動器等)、電子存 儲器(諸如固態閃存(例如嵌入式多媒體卡(eMMC)等))、可移動存儲器卡或存儲器棒(例 如微存儲裝置(uSD)、USB等)、光存儲器(諸如基于壓縮盤的ROM (⑶-ROM))等。在一個 實施例中,存儲器模塊106'可包含用于存儲可執行二進制代碼的代碼高速緩存模塊。
[0018] 電源模塊202可包含內部電源(例如電池)和/或外部電源(例如機電或太陽能 發電機、電網、燃料電池等)以及配置成給裝置100'提供操作所需的電力的相關電路。用 戶接口模塊204可包括配置成允許用戶與裝置100'交互的元件部分,諸如例如各種輸入機 制(例如麥克風、開關、按鈕、旋鈕、鍵盤、揚聲器、觸敏表面、配置成捕獲圖像和/或感測接 近度、距離、運動、手勢等的一個或多個傳感器)以及各種輸出機制(例如揚聲器、顯示器、 發光/閃光指示器、用于振動、運動等的機電部件)。通信接口模塊206可配置成處理通信 模塊208的分組路由和其它控制功能,其可包含配置成支持有線和/或無線通信的資源。有 線通信可包含串行和并行有線介質,諸如,例如以太網、通用串行總線(USB)、火線、數字視 覺接口(DVI)、高清多媒體接口(HDMI)等。無線通信例如可包含近緊密接近無線介質(例 如射頻(RF),諸如基于近場通信(NFC)標準、紅外(IR)、光學字符識別(0CR)、磁字符感測 等)、短程無線介質(例如藍牙、WLAN、Wi-Fi等)和長程無線介質(例如蜂窩、衛星等)。在 一個實施例中,通信接口模塊206可配置成防止在通信模塊208中活動的無線通信彼此干 擾。在執行這個功能時,通信接口模塊206例如可基于等待傳送的消息的相對優先級調度 通信模塊208的活動。
[0019] 在操作的示例中,處理模塊116'可執行程序102,并且然后例如基于調用裝置100 中被保護的功能的嘗試將程序102設陷到二進制轉換器模塊104中。處理模塊116'可包 含在二進制轉換器模塊104中,其重新定位存儲在存儲器模塊106'中的程序狀態108,并基 于修改的程序狀態將程序102轉換成修改察覺代碼118。處理模塊116'可包含在執行修改 察覺代碼118中。重要的是要指出,雖然在以上示例模塊中被標識為初級作用器,但還有可 能圖2中未圖示的其它模塊(例如基于專用硬件/軟件的二進制轉換器模塊104)獨自或 結合以上示例模塊操作。
[0020] 圖3圖示了按照本公開的至少一個實施例添加到程序以實現二進制轉換器驅動 的程序狀態重新定位的示例代碼。圖3的示例演示了通過改變調用約定來重新定位程序狀 態108。示例程序代碼300反映了在與本公開一致的動作之前的程序102的可能內容。如 在300所示的現有調用約定在裝置100中的程序棧上傳遞所有變元(例如引入攻擊漏洞)。
[0021] 具有重新定位302的示例程序代碼示出了如何