999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

面向二進(jìn)制代碼的多線程虛擬化保護(hù)技術(shù)*

2021-01-26 04:00:38王軼駿
通信技術(shù) 2021年1期
關(guān)鍵詞:指令關(guān)鍵分析

丁 寧,王軼駿,薛 質(zhì)

(上海交通大學(xué),上海 200240)

0 引言

隨著計(jì)算機(jī)技術(shù)的不斷累積與進(jìn)步,逆向破解一款軟件的成本變得越來(lái)越低。許多時(shí)候,逆向分析人員只需通過(guò)諸如IDA、OllyDbg 此類軟件,便可以在極短的時(shí)間內(nèi),使用極小成本的情況下,完成對(duì)一款商業(yè)軟件的破解。而遭受軟件破解的商業(yè)公司可能就將面臨開發(fā)成本無(wú)法回本,甚至更嚴(yán)重的經(jīng)濟(jì)損失。為了保護(hù)這些商業(yè)公司的軟件著作權(quán),技術(shù)人員們從技術(shù)角度提出了許多保護(hù)措施,其中最為廣泛使用的是軟件加殼保護(hù)技術(shù)。通過(guò)軟件加殼,可以對(duì)原有的程序代碼進(jìn)行壓縮、加密甚至虛擬化,從而達(dá)到抗反匯編、抗逆向的效果。本文所提出的代碼虛擬化技術(shù)就屬于這種保護(hù)技術(shù)中的一種。在逆向技術(shù)與軟件保護(hù)技術(shù)的不斷對(duì)抗中,代碼虛擬化保護(hù)被證明是現(xiàn)今為止十分有效的一種抗逆向技術(shù)。

代碼虛擬化技術(shù)采用虛擬機(jī)思想,將受保護(hù)程序中的程序邏輯轉(zhuǎn)化為屬于自己虛擬機(jī)的虛擬機(jī)指令,這樣的代碼虛擬化轉(zhuǎn)化使得程序脫離了常規(guī)的寄存器和堆棧,從而使得逆向人員無(wú)法直接通過(guò)原先的知識(shí)積累進(jìn)行逆向分析,若想分析此類受代碼虛擬化保護(hù)的軟件,需要對(duì)獨(dú)特設(shè)計(jì)的虛擬機(jī)指令集、虛擬機(jī)堆棧進(jìn)行分析,這樣的保護(hù)有效地增加了逆向分析人員所需要付出的時(shí)間和經(jīng)濟(jì)成本。

近幾年,研究人員提出了許多對(duì)于代碼虛擬化保護(hù)方法的改進(jìn)和加固方案。Wang 等[1]提出了NISLVMP方案,通過(guò)將虛擬機(jī)上下文復(fù)雜化的思想,實(shí)現(xiàn)了多組虛擬寄存器值的轉(zhuǎn)換算法,獲得最終虛擬機(jī)寄存器值來(lái)提高抗分析能力。Fang[2]等提出了一種多階段代碼虛擬化保護(hù)方法,初始階段對(duì)原生指令進(jìn)行虛擬化保護(hù),后續(xù)通過(guò)對(duì)前一階段產(chǎn)生的處理器中的虛擬指令進(jìn)一步虛擬化,通過(guò)增加語(yǔ)義復(fù)雜度來(lái)提高逆向分析的難度。Averbuch 等[3]通過(guò)對(duì)虛擬指令分發(fā)器進(jìn)行隱藏,防止逆向分析人員找到虛擬機(jī)部分,從而阻止對(duì)于虛擬機(jī)的逆向分析。房鼎益等[4]提出了基于時(shí)間執(zhí)行不同路徑而產(chǎn)生的多樣性來(lái)對(duì)抗時(shí)間積累的逆向分析。侯留洋提出了結(jié)合混淆思想、使用多套虛擬機(jī)環(huán)境隨機(jī)選擇來(lái)執(zhí)行構(gòu)造的混淆基本塊和關(guān)鍵代碼的代碼虛擬化保護(hù)方法[5]。由于私有虛擬環(huán)境使得混淆基本塊難以去除并且是隨機(jī)映射關(guān)系,無(wú)法累積字節(jié)碼知識(shí)進(jìn)行后續(xù)分析,因此顯著增加了逆向分析的難度。

上述加固方法固然有效,但是對(duì)于動(dòng)態(tài)跟蹤的調(diào)試方式,這些方法還是容易被跟蹤到虛擬機(jī)的分發(fā)器與虛擬機(jī)的虛擬機(jī)指令。

1 代碼虛擬化技術(shù)的基本原理

1.1 原理框架

代碼虛擬化技術(shù)的核心原理在于設(shè)計(jì)一套擁有私有的虛擬機(jī)指令集和虛擬上下文,然后將待保護(hù)的關(guān)鍵代碼設(shè)計(jì)成在虛擬機(jī)上下文中執(zhí)行,從而使得逆向分析人員不得不對(duì)這套私有的虛擬機(jī)指令集和虛擬機(jī)上下文進(jìn)行分析,而由于是獨(dú)特設(shè)計(jì)的虛擬機(jī)指令集和虛擬機(jī)上下文,逆向人員無(wú)法輕松定位關(guān)鍵代碼,也無(wú)法利用原有的知識(shí)積累來(lái)完成逆向,這種代碼保護(hù)技術(shù)顯著提升了逆向分析所需的成本[6]。代碼虛擬化保護(hù)方法的基本流程如圖1所示。

圖1 代碼虛擬化保護(hù)方案基本流程圖

通常的虛擬機(jī)軟件保護(hù)加固方法:

(1)函數(shù)識(shí)別:對(duì)目標(biāo)程序中的函數(shù)進(jìn)行識(shí)別,并且記錄所需要保護(hù)的關(guān)鍵部分的位置。

(2)代碼提取:對(duì)選中的關(guān)鍵部分進(jìn)行提取抽離。

(3)代碼生成:用虛擬機(jī)指令集對(duì)待保護(hù)的關(guān)鍵部分進(jìn)行翻譯編碼,生成符合虛擬機(jī)指令集的字節(jié)碼。

(4)目標(biāo)重寫:將步驟3 中生成的字節(jié)碼和虛擬機(jī)運(yùn)行所需的組件添加到目標(biāo)程序的新節(jié)中,并將原來(lái)關(guān)鍵部分的起始處改為跳轉(zhuǎn)指令。關(guān)鍵代碼其余部分使用指定字符進(jìn)行填充,最終生成一個(gè)符合規(guī)范的PE 文件。

代碼虛擬化保護(hù)方法通過(guò)在特別設(shè)計(jì)的虛擬環(huán)境上模擬x86 指令的執(zhí)行,通常來(lái)說(shuō)能夠在任意指令處恢復(fù)原有的CPU 上下文,然后交由原CPU 繼續(xù)執(zhí)行原匯編指令,所以私有的虛擬指令集和原CPU 指令集之間的關(guān)系應(yīng)該為圖靈等價(jià)。

1.2 保護(hù)后的執(zhí)行流程

通常來(lái)說(shuō),軟件在受到代碼虛擬化保護(hù)后,再運(yùn)行時(shí)流程如圖2 所示。

當(dāng)軟件受到代碼虛擬化保護(hù)后,再運(yùn)行時(shí)首先會(huì)對(duì)未被保護(hù)的代碼部分正常執(zhí)行。由于在代碼虛擬化保護(hù)過(guò)程中已經(jīng)將關(guān)鍵代碼處的代碼替換為虛擬機(jī)代碼,而真正的關(guān)鍵代碼部分已經(jīng)轉(zhuǎn)換為特定虛擬指令集對(duì)應(yīng)的虛擬字節(jié)碼放于數(shù)據(jù)段[7],所以運(yùn)行到受保護(hù)的關(guān)鍵代碼部分時(shí),會(huì)直接執(zhí)行代碼虛擬化中的虛擬機(jī)初始化代碼,將原始CPU 上下文環(huán)境保存,并且創(chuàng)建一套虛擬化的CPU 上下文環(huán)境,然后由該虛擬機(jī)中的VMdisaptcher 部分讀取數(shù)據(jù)段中的虛擬字節(jié)碼,通過(guò)虛擬機(jī)字節(jié)碼確定虛擬機(jī)運(yùn)行的指令和數(shù)據(jù),從而改變虛擬化的CPU 上下文環(huán)境。由于虛擬字節(jié)碼與原始關(guān)鍵代碼部分圖靈等價(jià),所以讀取全部虛擬字節(jié)碼后,虛擬機(jī)VMexit 部分直接將虛擬化CPU 上下文環(huán)境恢復(fù)至原始CPU 上下文即可等價(jià)完成對(duì)關(guān)鍵代碼部分的執(zhí)行[8]。

圖2 受保護(hù)程序執(zhí)行流程

代碼虛擬化保護(hù)的關(guān)鍵部分在于將原有CPU的邏輯轉(zhuǎn)移到私有的虛擬環(huán)境中執(zhí)行。所以如何保護(hù)這個(gè)虛擬環(huán)境不被攻擊者輕易分析,增加攻擊者分析虛擬環(huán)境所帶來(lái)的成本是一個(gè)最基本的想法。為此,本文在此提出一種結(jié)合多線程技術(shù)的代碼虛擬化方法,設(shè)計(jì)并實(shí)現(xiàn)了Muti-Thread-Vmp 系統(tǒng),這樣攻擊者在分析私有虛擬環(huán)境時(shí),不得不頻繁切換調(diào)試器所需跟蹤的線程,顯著增加了攻擊者分析所需要的時(shí)間和工作量,同時(shí)由于程序在被保護(hù)時(shí),虛擬字節(jié)碼與虛擬指令之間做了隨機(jī)化映射,所以對(duì)于不同的受到Muti-Thread-Vmp 保護(hù)的程序,需要單獨(dú)分析,無(wú)法形成知識(shí)累積型攻擊。

2 Muti-Thread-Vmp 系統(tǒng)

2.1 Muti-Thread-Vmp 基本原理

Muti-Thread-Vmp 的保護(hù)對(duì)象為Windows 平臺(tái)上的PE 文件(.exe 和.dll 等),使用Muti-Thread-Vmp 時(shí)需要提供需要保護(hù)的關(guān)鍵代碼的函數(shù)地址,Muti-Thread-Vmp 將自動(dòng)識(shí)別該函數(shù)的結(jié)束位置,并將該關(guān)鍵代碼進(jìn)行代碼虛擬化保護(hù)。運(yùn)行Muti-Thread-Vmp 系統(tǒng)時(shí),一共經(jīng)過(guò)如下幾個(gè)步驟:

(1)通過(guò)使用者提供的關(guān)鍵代碼的函數(shù)地址,自動(dòng)識(shí)別并提取關(guān)鍵代碼的結(jié)束位置。

(2)將原生字節(jié)反匯編轉(zhuǎn)換為匯編代碼,常用的反匯編引擎有capstone、ODDisassm、BeaEngine和udis86 等,本文采用的反匯編引擎為capstone,反匯編引擎將字節(jié)碼逐條翻譯成匯編指令,如8B C1 會(huì)被翻譯成mov eax,ecx。

(3)生成隨機(jī)操作碼表,虛擬函數(shù)映射表,按照該操作碼表對(duì)原反匯編處的匯編代碼進(jìn)行翻譯,生成虛擬機(jī)字節(jié)碼。

(4)在受保護(hù)的程序創(chuàng)建兩個(gè)新的節(jié)區(qū),一個(gè)節(jié)區(qū)命名為VMP-0,用于置入虛擬機(jī)代碼,另一個(gè)節(jié)區(qū)命名為VMP-1,用于存放生成的虛擬機(jī)字節(jié)碼,使用垃圾代碼填充原始關(guān)鍵代碼,在原始關(guān)鍵代碼入口寫入跳轉(zhuǎn)指令,跳轉(zhuǎn)至VMP-0 中虛擬機(jī)VMinti 函數(shù)入口。

(5)將改動(dòng)過(guò)的受保護(hù)程序另存為新的PE 文件,完成保護(hù)。

2.2 Muti-Thread-Vmp 關(guān)鍵技術(shù)

在Muti-Thread-Vmp 運(yùn)用到的代碼虛擬化保護(hù)技術(shù)中,較以往代碼虛擬化保護(hù)技術(shù)的不同點(diǎn)在于以下幾個(gè)關(guān)鍵技術(shù),也是因?yàn)檫@些關(guān)鍵技術(shù)加強(qiáng)了保護(hù)強(qiáng)度。

(1)多線程化的虛擬機(jī)設(shè)計(jì)。本文設(shè)計(jì)的虛擬機(jī)將不同指令的模擬實(shí)現(xiàn)置于不同的線程中,虛擬CPU 上下文通過(guò)線程間的全局變量進(jìn)行操作,通過(guò)VMdispatcher 讀取虛擬字節(jié)碼選擇線程進(jìn)行運(yùn)行,如圖3 所示。

圖3 多線程化虛擬機(jī)運(yùn)行示意圖

目前實(shí)現(xiàn)的線程指令集如表1 所示。

表1 線程指令集統(tǒng)計(jì)表

(2)隨機(jī)化的線程選擇。在使用多線程將指令集模擬后,攻擊者可以通過(guò)跟蹤分析每一個(gè)線程,從而了解整個(gè)虛擬機(jī)運(yùn)行環(huán)境以及虛擬操作碼和線程之間的關(guān)系。通過(guò)一定時(shí)間的累積便可完成對(duì)本系統(tǒng)的逆向分析。為了解決這個(gè)問(wèn)題,在每一次進(jìn)行虛擬化保護(hù)的時(shí)候,將線程與虛擬操作碼之間的關(guān)鍵進(jìn)行隨機(jī)對(duì)應(yīng)。如保護(hù)A 軟件時(shí)0x01 操作碼原先對(duì)應(yīng)的可能是MOVI 線程,在保護(hù)B 軟件時(shí),0x01 對(duì)應(yīng)的便可能為L(zhǎng)ODI。這樣的隨機(jī)化操作可以有效避免攻擊者對(duì)本系統(tǒng)的保護(hù)找到統(tǒng)一的分析方法。

(3)線程函數(shù)加密。僅從動(dòng)態(tài)分析的角度進(jìn)行防御顯然是不全面的,通過(guò)靜態(tài)分析,攻擊者可以輕松分析出每一個(gè)線程的含義,從而定位每個(gè)線程的指令,恢復(fù)原始代碼。為了對(duì)抗靜態(tài)分析,本系統(tǒng)將所有的線程函數(shù)在VMinit 前進(jìn)行了XOR 加密,XOR 加密的密鑰為每個(gè)線程對(duì)應(yīng)的虛擬操作碼,在VMinit 運(yùn)行后,再進(jìn)行解密操作。這樣可以有效對(duì)抗靜態(tài)分析,進(jìn)一步加強(qiáng)本系統(tǒng)的保護(hù)強(qiáng)度。

3 實(shí)驗(yàn)分析

實(shí)驗(yàn)環(huán)境為WIN10-1909,3.6GHz CPU,32G 內(nèi)存。由于只實(shí)現(xiàn)了部分對(duì)32 位CPU 指令集的模擬,故僅對(duì)32 位可執(zhí)行程序進(jìn)行測(cè)試。

3.1 功能驗(yàn)證

選用樣例程序進(jìn)行保護(hù),樣例程序源碼如圖4所示,保護(hù)前可以輕松使用IDA 逆向工具得到其程序邏輯。

圖4 未受保護(hù)的calc.exe

而在經(jīng)過(guò)Muti-Thread-Vmp 保護(hù)后,反編譯時(shí),IDA 開始報(bào)錯(cuò),并且出現(xiàn)大量無(wú)法識(shí)別的字節(jié)碼,如圖5 所示。

通過(guò)測(cè)試,本文設(shè)計(jì)并實(shí)現(xiàn)的代碼虛擬化技術(shù)可以有效地對(duì)抗逆向分析,增大攻擊者的分析成本,從而對(duì)軟件進(jìn)行保護(hù)。

圖5 受保護(hù)的calc.exe

3.2 性能驗(yàn)證

對(duì)本系統(tǒng)進(jìn)行實(shí)例測(cè)試,主要測(cè)試文件大小和性能損耗。對(duì)比實(shí)驗(yàn)結(jié)果如表2、表3 所示。

表2 空間損耗測(cè)試

表3 時(shí)間損耗測(cè)試

通過(guò)實(shí)驗(yàn)可以看出,本文提出的系統(tǒng)在保護(hù)程序時(shí),會(huì)將虛擬機(jī)加入原始程序,造成額外的空間損耗;在執(zhí)行效率上也會(huì)造成額外的時(shí)間損耗。但是對(duì)于程序保護(hù)來(lái)說(shuō),這些額外的損耗是不可避免的。

4 結(jié)語(yǔ)

由于目前代碼虛擬化保護(hù)技術(shù)仍存在著不斷被破解的情況,本文提出一種基于多線程模擬虛擬指令集的方法來(lái)對(duì)抗逆向分析,從而加強(qiáng)代碼虛擬化保護(hù)的強(qiáng)度。本文從設(shè)計(jì)、理論分析、功能驗(yàn)證以及與商用軟件對(duì)比的角度上,介紹并證明了本系統(tǒng)的有效性。

在未來(lái)的研究中,本文提出的方法還可以進(jìn)行進(jìn)一步優(yōu)化與加強(qiáng)。

(1)將可以并行的匯編指令通過(guò)多線程并行運(yùn)行,從而提升程序效率,理想的極端情況下,效率甚至?xí)仍汲绦蜻€要高。

(2)可以設(shè)置真假線程,如滿足一定條件的假線程啟動(dòng)后,真線程才啟動(dòng),這樣可以進(jìn)一步增大分析的難度。

猜你喜歡
指令關(guān)鍵分析
聽(tīng)我指令:大催眠術(shù)
高考考好是關(guān)鍵
隱蔽失效適航要求符合性驗(yàn)證分析
ARINC661顯控指令快速驗(yàn)證方法
LED照明產(chǎn)品歐盟ErP指令要求解讀
電力系統(tǒng)不平衡分析
電子制作(2018年18期)2018-11-14 01:48:24
電力系統(tǒng)及其自動(dòng)化發(fā)展趨勢(shì)分析
獲勝關(guān)鍵
NBA特刊(2014年7期)2014-04-29 00:44:03
坐標(biāo)系旋轉(zhuǎn)指令數(shù)控編程應(yīng)用
生意無(wú)大小,關(guān)鍵是怎么做?
主站蜘蛛池模板: 日韩专区欧美| 国产成人高清精品免费软件| 国产成人亚洲无吗淙合青草| 亚洲精品无码AⅤ片青青在线观看| 国产网站在线看| 二级毛片免费观看全程| 在线视频一区二区三区不卡| 亚洲水蜜桃久久综合网站| 国产欧美日韩精品第二区| 全部无卡免费的毛片在线看| 欧美精品在线免费| 欧美日韩久久综合| 青青青国产免费线在| 欧美日本一区二区三区免费| 又黄又爽视频好爽视频| 国产亚洲欧美日本一二三本道| 青青操视频在线| 99久久亚洲综合精品TS| 午夜视频在线观看免费网站 | 高清无码手机在线观看 | 东京热av无码电影一区二区| 亚洲国产精品久久久久秋霞影院| 久久青草热| 中文字幕无码电影| 精品人妻一区无码视频| 激情综合网址| 国产激情在线视频| 国产福利免费视频| 国产精品不卡片视频免费观看| 国产特一级毛片| 91精品国产麻豆国产自产在线| 成人午夜精品一级毛片| 54pao国产成人免费视频| 91色国产在线| 久久精品人人做人人| 日韩美女福利视频| 国产色婷婷视频在线观看| 老司机午夜精品视频你懂的| 亚洲无码视频喷水| 亚洲免费人成影院| 尤物视频一区| 玖玖精品在线| 日韩中文精品亚洲第三区| 久久 午夜福利 张柏芝| 欧美精品不卡| 影音先锋丝袜制服| 中文字幕av一区二区三区欲色| 红杏AV在线无码| 丁香五月亚洲综合在线| 日本三区视频| 91精品啪在线观看国产| 青青草国产免费国产| 久久久久中文字幕精品视频| 国产美女91呻吟求| AV网站中文| 欧美一区二区啪啪| 亚洲人成网站观看在线观看| 国产微拍一区二区三区四区| 国产精品9| 漂亮人妻被中出中文字幕久久 | 伊人久久精品亚洲午夜| 九色视频最新网址| 久久a级片| 极品av一区二区| 在线色综合| 国产经典免费播放视频| 欧美在线网| 欧美黄色a| 国产在线八区| 日韩黄色大片免费看| 性69交片免费看| 中文字幕亚洲专区第19页| 国产一区二区三区免费观看 | 亚洲天堂久久| 国产小视频免费| 欧美成人影院亚洲综合图| 老司机午夜精品网站在线观看 | 国产精品免费久久久久影院无码| 国产色爱av资源综合区| 色欲不卡无码一区二区| 91精品免费高清在线| 国产99在线|