




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
隨著計算機技術(shù)的不斷累積與進步,逆向破解一款軟件的成本變得越來越低。許多時候,逆向分析人員只需通過諸如IDA、OllyDbg此類軟件,便可以在極短的時間內(nèi),使用極小成本的情況下,完成對一款商業(yè)軟件的破解。而遭受軟件破解的商業(yè)公司可能就將面臨開發(fā)成本無法回本,甚至更嚴重的經(jīng)濟損失。為了保護這些商業(yè)公司的軟件著作權(quán),技術(shù)人員們從技術(shù)角度提出了許多保護措施,其中最為廣泛使用的是軟件加殼保護技術(shù)。通過軟件加殼,可以對原有的程序代碼進行壓縮、加密甚至虛擬化,從而達到抗反匯編、抗逆向的效果。本文所提出的代碼虛擬化技術(shù)就屬于這種保護技術(shù)中的一種。在逆向技術(shù)與軟件保護技術(shù)的不斷對抗中,代碼虛擬化保護被證明是現(xiàn)今為止十分有效的一種抗逆向技術(shù)。代碼虛擬化技術(shù)采用虛擬機思想,將受保護程序中的程序邏輯轉(zhuǎn)化為屬于自己虛擬機的虛擬機指令,這樣的代碼虛擬化轉(zhuǎn)化使得程序脫離了常規(guī)的寄存器和堆棧,從而使得逆向人員無法直接通過原先的知識積累進行逆向分析,若想分析此類受代碼虛擬化保護的軟件,需要對獨特設(shè)計的虛擬機指令集、虛擬機堆棧進行分析,這樣的保護有效地增加了逆向分析人員所需要付出的時間和經(jīng)濟成本。近幾年,研究人員提出了許多對于代碼虛擬化保護方法的改進和加固方案。提出了NISLVMP方案,通過將虛擬機上下文復雜化的思想,實現(xiàn)了多組虛擬寄存器值的轉(zhuǎn)換算法,獲得最終虛擬機寄存器值來提高抗分析能力。Fang等提出了一種多階段代碼虛擬化保護方法,初始階段對原生指令進行虛擬化保護,后續(xù)通過對前一階段產(chǎn)生的處理器中的虛擬指令進一步虛擬化,通過增加語義復雜度來提高逆向分析的難度。通過對虛擬指令分發(fā)器進行隱藏,防止逆向分析人員找到虛擬機部分,從而阻止對于虛擬機的逆向分析。房鼎益等提出了基于時間執(zhí)行不同路徑而產(chǎn)生的多樣性來對抗時間積累的逆向分析。侯留洋提出了結(jié)合混淆思想、使用多套虛擬機環(huán)境隨機選擇來執(zhí)行構(gòu)造的混淆基本塊和關(guān)鍵代碼的代碼虛擬化保護方法。由于私有虛擬環(huán)境使得混淆基本塊難以去除并且是隨機映射關(guān)系,無法累積字節(jié)碼知識進行后續(xù)分析,因此顯著增加了逆向分析的難度。上述加固方法固然有效,但是對于動態(tài)跟蹤的調(diào)試方式,這些方法還是容易被跟蹤到虛擬機的分發(fā)器與虛擬機的虛擬機指令。01代碼虛擬化技術(shù)的基本原理1.1?原理框架代碼虛擬化技術(shù)的核心原理在于設(shè)計一套擁有私有的虛擬機指令集和虛擬上下文,然后將待保護的關(guān)鍵代碼設(shè)計成在虛擬機上下文中執(zhí)行,從而使得逆向分析人員不得不對這套私有的虛擬機指令集和虛擬機上下文進行分析,而由于是獨特設(shè)計的虛擬機指令集和虛擬機上下文,逆向人員無法輕松定位關(guān)鍵代碼,也無法利用原有的知識積累來完成逆向,這種代碼保護技術(shù)顯著提升了逆向分析所需的成本。代碼虛擬化保護方法的基本流程如圖1所示。圖1?代碼虛擬化保護方案基本流程圖通常的虛擬機軟件保護加固方法:(1)函數(shù)識別:對目標程序中的函數(shù)進行識別,并且記錄所需要保護的關(guān)鍵部分的位置。(2)代碼提?。簩x中的關(guān)鍵部分進行提取抽離。(3)代碼生成:用虛擬機指令集對待保護的關(guān)鍵部分進行翻譯編碼,生成符合虛擬機指令集的字節(jié)碼。(4)目標重寫:將步驟3中生成的字節(jié)碼和虛擬機運行所需的組件添加到目標程序的新節(jié)中,并將原來關(guān)鍵部分的起始處改為跳轉(zhuǎn)指令。關(guān)鍵代碼其余部分使用指定字符進行填充,最終生成一個符合規(guī)范的PE文件。代碼虛擬化保護方法通過在特別設(shè)計的虛擬環(huán)境上模擬x86指令的執(zhí)行,通常來說能夠在任意指令處恢復原有的CPU上下文,然后交由原CPU繼續(xù)執(zhí)行原匯編指令,所以私有的虛擬指令集和原CPU指令集之間的關(guān)系應(yīng)該為圖靈等價。1.2?保護后的執(zhí)行流程通常來說,軟件在受到代碼虛擬化保護后,再運行時流程如圖2所示。圖2?受保護程序執(zhí)行流程當軟件受到代碼虛擬化保護后,再運行時首先會對未被保護的代碼部分正常執(zhí)行。由于在代碼虛擬化保護過程中已經(jīng)將關(guān)鍵代碼處的代碼替換為虛擬機代碼,而真正的關(guān)鍵代碼部分已經(jīng)轉(zhuǎn)換為特定虛擬指令集對應(yīng)的虛擬字節(jié)碼放于數(shù)據(jù)段,所以運行到受保護的關(guān)鍵代碼部分時,會直接執(zhí)行代碼虛擬化中的虛擬機初始化代碼,將原始CPU上下文環(huán)境保存,并且創(chuàng)建一套虛擬化的CPU上下文環(huán)境,然后由該虛擬機中的VMdisaptcher部分讀取數(shù)據(jù)段中的虛擬字節(jié)碼,通過虛擬機字節(jié)碼確定虛擬機運行的指令和數(shù)據(jù),從而改變虛擬化的CPU上下文環(huán)境。由于虛擬字節(jié)碼與原始關(guān)鍵代碼部分圖靈等價,所以讀取全部虛擬字節(jié)碼后,虛擬機VMexit部分直接將虛擬化CPU上下文環(huán)境恢復至原始CPU上下文即可等價完成對關(guān)鍵代碼部分的執(zhí)行。代碼虛擬化保護的關(guān)鍵部分在于將原有CPU的邏輯轉(zhuǎn)移到私有的虛擬環(huán)境中執(zhí)行。所以如何保護這個虛擬環(huán)境不被攻擊者輕易分析,增加攻擊者分析虛擬環(huán)境所帶來的成本是一個最基本的想法。為此,本文在此提出一種結(jié)合多線程技術(shù)的代碼虛擬化方法,設(shè)計并實現(xiàn)了Muti-Thread-Vmp系統(tǒng),這樣攻擊者在分析私有虛擬環(huán)境時,不得不頻繁切換調(diào)試器所需跟蹤的線程,顯著增加了攻擊者分析所需要的時間和工作量,同時由于程序在被保護時,虛擬字節(jié)碼與虛擬指令之間做了隨機化映射,所以對于不同的受到Muti-Thread-Vmp保護的程序,需要單獨分析,無法形成知識累積型攻擊。02Muti-Thread-Vmp系統(tǒng)2.1?Muti-Thread-Vmp基本原理Muti-Thread-Vmp的保護對象為Windows平臺上的PE文件(.exe和.dll等),使用Muti-Thread-Vmp時需要提供需要保護的關(guān)鍵代碼的函數(shù)地址,Muti-Thread-Vmp將自動識別該函數(shù)的結(jié)束位置,并將該關(guān)鍵代碼進行代碼虛擬化保護。運行Muti-Thread-Vmp系統(tǒng)時,一共經(jīng)過如下幾個步驟:(1)通過使用者提供的關(guān)鍵代碼的函數(shù)地址,自動識別并提取關(guān)鍵代碼的結(jié)束位置。(2)將原生字節(jié)反匯編轉(zhuǎn)換為匯編代碼,常用的反匯編引擎有capstone、ODDisassm、BeaEngine和udis86等,本文采用的反匯編引擎為capstone,反匯編引擎將字節(jié)碼逐條翻譯成匯編指令,如8BC1會被翻譯成moveax,ecx。(3)生成隨機操作碼表,虛擬函數(shù)映射表,按照該操作碼表對原反匯編處的匯編代碼進行翻譯,生成虛擬機字節(jié)碼。(4)在受保護的程序創(chuàng)建兩個新的節(jié)區(qū),一個節(jié)區(qū)命名為VMP-0,用于置入虛擬機代碼,另一個節(jié)區(qū)命名為VMP-1,用于存放生成的虛擬機字節(jié)碼,使用垃圾代碼填充原始關(guān)鍵代碼,在原始關(guān)鍵代碼入口寫入跳轉(zhuǎn)指令,跳轉(zhuǎn)至VMP-0中虛擬機VMinti函數(shù)入口。(5)將改動過的受保護程序另存為新的PE文件,完成保護。2.2?Muti-Thread-Vmp關(guān)鍵技術(shù)在Muti-Thread-Vmp運用到的代碼虛擬化保護技術(shù)中,較以往代碼虛擬化保護技術(shù)的不同點在于以下幾個關(guān)鍵技術(shù),也是因為這些關(guān)鍵技術(shù)加強了保護強度。(1)多線程化的虛擬機設(shè)計。本文設(shè)計的虛擬機將不同指令的模擬實現(xiàn)置于不同的線程中,虛擬CPU上下文通過線程間的全局變量進行操作,通過VMdispatcher讀取虛擬字節(jié)碼選擇線程進行運行,如圖3所示。圖3?多線程化虛擬機運行示意圖目前實現(xiàn)的線程指令集如表1所示。表1?線程指令集統(tǒng)計表MOVIMOVRLODILODRSTRISTRRADDIADDRSUBISUBRANDBANDWANDRYORBYORWYORRXORBXORWXORRNOTRMULIMULRDIVIDIVRSHLISHLRSHRISHRRPUSHPOOPCMPBCMPWCMPRJMPIJMPRJPAIJPARJPBIJPBRJPEIJPERJPNIJPNRCALLRETNSHITNOPEGRMNDEBGNUM_OPS(2)隨機化的線程選擇。在使用多線程將指令集模擬后,攻擊者可以通過跟蹤分析每一個線程,從而了解整個虛擬機運行環(huán)境以及虛擬操作碼和線程之間的關(guān)系。通過一定時間的累積便可完成對本系統(tǒng)的逆向分析。為了解決這個問題,在每一次進行虛擬化保護的時候,將線程與虛擬操作碼之間的關(guān)鍵進行隨機對應(yīng)。如保護A軟件時0x01操作碼原先對應(yīng)的可能是MOVI線程,在保護B軟件時,0x01對應(yīng)的便可能為LODI。這樣的隨機化操作可以有效避免攻擊者對本系統(tǒng)的保護找到統(tǒng)一的分析方法。(3)線程函數(shù)加密。僅從動態(tài)分析的角度進行防御顯然是不全面的,通過靜態(tài)分析,攻擊者可以輕松分析出每一個線程的含義,從而定位每個線程的指令,恢復原始代碼。為了對抗靜態(tài)分析,本系統(tǒng)將所有的線程函數(shù)在VMinit前進行了XOR加密,XOR加密的密鑰為每個線程對應(yīng)的虛擬操作碼,在VMinit運行后,再進行解密操作。這樣可以有效對抗靜態(tài)分析,進一步加強本系統(tǒng)的保護強度。03實驗分析實驗環(huán)境為WIN10-1909,3.6GHzCPU,32G內(nèi)存。由于只實現(xiàn)了部分對32位CPU指令集的模擬,故僅對32位可執(zhí)行程序進行測試。3.1?功能驗證選用樣例程序進行保護,樣例程序源碼如圖3所示,保護前可以輕松使用IDA逆向工具得到其程序邏輯。圖3?未受保護的calc.exe而在經(jīng)過Muti-Thread-Vmp保護后,反編譯時,IDA開始報錯,并且出現(xiàn)大量無法識別的字節(jié)碼,如圖4所示。圖4?受保護的calc.exe通過測試,本文設(shè)計并實現(xiàn)的代碼虛擬化技術(shù)可以有效地對抗逆向分析,增大攻擊者的分析成本,從而對軟件進行保護。3.2?性能驗證對本系統(tǒng)進行實例測試,主要測試文件大小和性能損耗。對比實驗結(jié)果如表2、表3所示。表2?空間損耗測試測試程序原始大小Muti-Thread-Vmp保護后大小calc.exe27.00KB3.5MBtest.exe192.00KB3.8MBmaze.exe8.00KB3.43MB表3?時間損耗測試測試程序原始運行啟動速度Muti-Thread-Vmp保護后速度test.exe3ms14msmaze.exe65ms140ms通過實驗可以看出,本文提出的系統(tǒng)在保護程序時,會將虛擬機加入原始程序,造成額外的空間損耗;在執(zhí)行效率上也會造成額外的時間損耗。但是對于程序保護來說,這些額外的損耗是不可避免的。04結(jié)?語由于目前代碼虛擬化保護技術(shù)仍存在著不斷被破解的情況,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖北鐵道運輸職業(yè)學院《先進材料制備技術(shù)》2023-2024學年第二學期期末試卷
- 柳州城市職業(yè)學院《媒介產(chǎn)業(yè)化經(jīng)營》2023-2024學年第二學期期末試卷
- 貴州財經(jīng)職業(yè)學院《鋼結(jié)構(gòu)設(shè)計》2023-2024學年第二學期期末試卷
- 東北師范大學《爬蟲開發(fā)與實踐》2023-2024學年第二學期期末試卷
- 河南物流職業(yè)學院《資源分析與環(huán)境修復技術(shù)》2023-2024學年第二學期期末試卷
- 青海衛(wèi)生職業(yè)技術(shù)學院《預(yù)算管理》2023-2024學年第二學期期末試卷
- 四川警察學院《日本近代文學講讀》2023-2024學年第二學期期末試卷
- 宣城職業(yè)技術(shù)學院《婦女健康與康復》2023-2024學年第二學期期末試卷
- 漳州城市職業(yè)學院《企業(yè)經(jīng)營管理沙盤》2023-2024學年第二學期期末試卷
- 天津醫(yī)科大學《基礎(chǔ)化學實驗C》2023-2024學年第二學期期末試卷
- 電力運維管理平臺方案設(shè)計
- 機場地震應(yīng)急處理與疏散預(yù)案
- 南京工業(yè)大學《化工廢水處理》2022-2023學年第一學期期末試卷
- 《阻燃材料與技術(shù)》課件 顏龍 第3、4講 阻燃基本理論、阻燃劑性能與應(yīng)用
- 高三第二輪復習之文言翻譯(李麗君)省公開課獲獎?wù)n件市賽課比賽一等獎?wù)n件
- 服務(wù)禮儀培訓課件
- 2024年江蘇省鹽城市中考語文真題
- 外研版小升初必背詞匯
- 咪咕在線測評題
- 2024年全國《勞動教育》基礎(chǔ)知識考試題庫與答案
- 專題13 統(tǒng)計與概率-【好題匯編】五年(2020-2024)高考數(shù)學真題分類匯編(含答案解析)
評論
0/150
提交評論