湯 宇
(東華理工大學軟件學院,南昌330013)
?
基于交叉模式編碼的匯編技術研究
湯宇
(東華理工大學軟件學院,南昌330013)
摘要:隨著反匯編和反編譯等逆向技術的不斷發展,軟件版權保護已成為軟件開發過程的重要環節。代碼混淆技術因為其能夠在不改變被保護程序運行行為的前提下,有效地提高逆向分析的難度,因而該技術在近年的研究當中受到諸多關注。以64位Windows系統為操作平臺,根據系統向下兼容的原則,提出交叉模式編碼的匯編技術。
關鍵詞:逆向;交叉模式編碼
所有的64位Windows操作系統都能兼容32位應用程序,這是由Wow64子系統實現的。通過Wow64子系統,處理器模式可以在32位和64位之間動態地切換,但由于64位模式和32位模式的機器碼含義不完全相同,因此,采用32位和64位交叉模式編碼的方式,可以增加程序逆向解碼的難度,保護軟件內部代碼不被泄露。
兼容交叉模式指的是指令的機器碼在32位和64位模式下均有效,并且意義也完全相同。
不兼容交叉模式指的是在32位模式下有效的指令機器碼,在64位模式下意義完全不同或根本無效,反之亦然。例如圖1所示,相同的機器碼在不同模式下產生了歧義。

圖1 不兼容模式
2.1 x64體系與x86體系的區別
●32位的通用寄存器被擴展至64位,新增8個寄存器。
●32位的標志寄存器被擴展為64位。
●64位的尋址空間(Virtaul Address Space):00000000_00000000 -FFFFFFFF_FFFFFFFF,x64體系在64位尋址空間實際上只實現了48位virtual address尋址空間,高16位被保留起來,用作符號擴展。
2.2 REX prefix
REX prefix是一個指令prefix,功能是將缺省32位機器碼改寫為64位的機器碼,REX prefix提供了對64位寄存器和64位地址的訪問的手段。REX prefix的取值范圍是:40 - 4F,如表1所示,而在x86平臺(32位模式)或x64平臺的兼容模式(64位兼容模式)下,40 - 4F這些機器碼表示inc以及dec指令。因此,當采用交叉模式編碼方式時,不支持處理動態模式轉換的分析工具容易遇到問題。

表1 REX prefix結構
64位Windows下的任何應用,在載入到內存中時,都至少存在兩段代碼段映像。其中一段是0x23,為32位代碼段;另一段是0x33,為64位代碼段。圖2是交叉模式編碼的示意圖,這些代碼首先作為32位原生指令于CS 0x23中執行。之后,通過遠跳轉,跳轉到CS 0x33,將處理器模式轉換為64位,并繼續執行64位原生指令(在32位模式中不兼容)。最后,通過遠返回,把處理器切換回32位模式。
圖3中是這個交叉模式編碼在命令行中執行的結果。在十六進制中打印出的代碼段映像證實了,處理器確實從32位轉換到了64位,又從64位轉換成了32位。

圖2 交叉模式編碼的示例程序示意圖

圖3 交叉模式代碼示例在命令行中的執行
利用64位Windows系統兼容32位程序的特點,交叉模式編碼可以作為非常有效的軟件保護手段。目前,大多數的分析工具、調試工具都是基于單一的處理器模式,通過交叉模式編碼,能很好地實現保護軟件版權的目的。
參考文獻:
[1]戴超,龐建民,趙榮彩.采用條件跳轉混淆技術的惡意代碼反匯編[J].計算機工程,2008,34.
[2]許敏,陳前斌.靜態反匯編算法研究[J].計算機與數字工程,2007,35.
[3]Intel Corporation.英特爾64和IA-32架構軟件開發人員手冊[M].
湯宇(1984-),男,江西南昌人,碩士,助教,研究方向為計算機應用技術
Research on Compilation Technology Based on Cross-Mode Encoding
TANG Yu
(School of Software,Donghua Polytechnic University,Nanchang 330013)
Abstract:With the continuous development of disassembly and decompilation reverse technology, software copyright protection has become an important part of the software development process. Code obfuscation technology can be protected without changing the runtime behavior of the program, effectively increase the difficulty of reverse analysis, so the technology has been a lot of attention in recent years of investigation. With 64-bit Windows operating system platform, based on the principle of the system is backward compatible, proposes cross pattern coded assembly technology.
Keywords:Categories: Reverse Technology; Cross-Mode Encoding
收稿日期:2016-01-19修改日期:2016-02-26
作者簡介:
文章編號:1007-1423(2016)09-0027-03
DOI:10.3969/j.issn.1007-1423.2016.09.006