亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于虛擬機(jī)代碼隔離的軟件保護(hù)技術(shù)研究

        2018-04-09 01:08:36余祥周元璞李強(qiáng)
        指揮與控制學(xué)報(bào) 2018年1期
        關(guān)鍵詞:指令關(guān)鍵分析

        余祥 周元璞 李強(qiáng)

        隨著信息化的不斷發(fā)展和深入,軟件給我們的生產(chǎn)生活方式帶來了巨大的變化,深刻地改變著社會(huì)生產(chǎn)、科技探索和戰(zhàn)爭形態(tài)等.軟件安全問題也顯得愈發(fā)重要.尤其是指揮信息系統(tǒng)軟件等核心軟件一旦被非法攻擊、破解,進(jìn)而通過對(duì)軟件的逆向分析,掌握關(guān)鍵數(shù)據(jù)和重要情報(bào),甚至修改軟件運(yùn)行結(jié)果,從而給國家?guī)砭薮髶p失.

        軟件逆向分析是軟件安全威脅的重要原因.軟件逆向分析是指對(duì)二進(jìn)制文件反匯編的基礎(chǔ)上進(jìn)行理解和再現(xiàn)的過程.一方面,軟件逆向分析技術(shù)可以促進(jìn)軟件產(chǎn)業(yè)的發(fā)展;另一方面,這直接導(dǎo)致了軟件面臨嚴(yán)重的逆向分析威脅.因此,軟件抗逆向分析方面的研究也越來越受到人們的重視,用于抗逆向分析的軟件保護(hù)技術(shù)主要有軟件加殼[1]、代碼混淆[2]、軟件加密[3]、代碼隔離[4]和虛擬機(jī)技術(shù)[5]等.

        隨著軟件攻擊手段的豐富和發(fā)展,單一的軟件保護(hù)技術(shù)已不足以保證軟件安全.將多種軟件保護(hù)技術(shù)結(jié)合使用是提高軟件安全的有效方法.本文提出一種基于虛擬機(jī)代碼隔離的軟件保護(hù)方法,將虛擬機(jī)技術(shù)和代碼隔離方法相結(jié)合,提高軟件抗逆向分析能力.

        1 相關(guān)工作

        基于虛擬機(jī)代碼隔離的軟件保護(hù)方法的基本思想是將軟件的一部分從軟件整體中分隔開,軟件運(yùn)行時(shí)再組合成一個(gè)整體,從而提高軟件抗逆向分析能力.為保證軟件被分隔后運(yùn)行效率,分隔出的部分不宜過大,因此,只分隔軟件關(guān)鍵數(shù)據(jù)和關(guān)鍵代碼,將其從軟件中提取后,轉(zhuǎn)換為虛擬機(jī)代碼添加到重構(gòu)后的軟件文件或直接移植到加密鎖中.

        本文主要研究關(guān)鍵數(shù)據(jù)和代碼的提取、轉(zhuǎn)換和移植方法.關(guān)鍵數(shù)據(jù)和代碼的提取主要包括用戶直接指定[6]、動(dòng)態(tài)調(diào)試定位[7]和靜態(tài)分析定位[8]3種.其中,用戶直接指定需要用戶對(duì)軟件源程序和匯編較為熟悉;動(dòng)態(tài)調(diào)試定位通過動(dòng)態(tài)執(zhí)行軟件獲取軟件的控制流和數(shù)據(jù)流,獲取軟件的關(guān)鍵數(shù)據(jù)和代碼;靜態(tài)分析定位不需要調(diào)試定位,通過關(guān)鍵字匹配、復(fù)雜度計(jì)算等方法定位關(guān)鍵代碼和數(shù)據(jù).

        文獻(xiàn)[9?10]提出通過執(zhí)行軌跡差異定位關(guān)鍵代碼和數(shù)據(jù),即通過兩次運(yùn)行程序,給予程序不同輸入,使其一次執(zhí)行特定功能,另一次不執(zhí)行該功能,分別記錄程序運(yùn)行指令的軌跡,對(duì)比軌跡差異獲取關(guān)鍵代碼.

        文獻(xiàn)[11]設(shè)計(jì)了WBRPE(White Box Remote Program Execution)白盒遠(yuǎn)程程序執(zhí)行架構(gòu),使程序執(zhí)行過程依賴于本地機(jī)器和服務(wù)器,文獻(xiàn)[12]對(duì)其進(jìn)行了改進(jìn),利用混淆器對(duì)傳至服務(wù)器的代碼或數(shù)據(jù)進(jìn)行了混淆.但這種基于服務(wù)器的保護(hù)方法將關(guān)鍵代碼或數(shù)據(jù)在服務(wù)器中執(zhí)行,對(duì)軟件性能影響較大,應(yīng)用環(huán)境有一定限制.

        文獻(xiàn)[13?14]提出的基于虛擬執(zhí)行環(huán)境的保護(hù)方法都是基于指令動(dòng)態(tài)映射完成的,在這個(gè)過程中需要運(yùn)行時(shí)修改內(nèi)存,容易被定位分析,且由于構(gòu)造虛擬執(zhí)行環(huán)境時(shí)間開銷較大,僅適用于保護(hù)分散的少量指令片段,效率和強(qiáng)度較低.

        本文提出的關(guān)鍵代碼和數(shù)據(jù)提取方法基于動(dòng)態(tài)調(diào)試和控制流、數(shù)據(jù)流分析,相較于用戶直接指定的方法,對(duì)用戶要求較低;相較于靜態(tài)分析的方法以及通過關(guān)鍵字查找的方法,定位關(guān)鍵代碼更全面和準(zhǔn)確,但實(shí)現(xiàn)相對(duì)復(fù)雜.關(guān)鍵代碼和數(shù)據(jù)的轉(zhuǎn)換方法基于X86指令集系統(tǒng)進(jìn)行映射,成本開銷相對(duì)較小,實(shí)現(xiàn)復(fù)雜度較低.關(guān)鍵數(shù)據(jù)和代碼移植基于硬件加密鎖的虛擬執(zhí)行環(huán)境,對(duì)軟件的性能影響較小,應(yīng)用環(huán)境也更自由.

        2 關(guān)鍵代碼提取和轉(zhuǎn)換

        關(guān)鍵數(shù)據(jù)和代碼是軟件最核心的部分,關(guān)鍵數(shù)據(jù)是軟件的核心參數(shù),關(guān)鍵代碼一般為軟件的核心算法.確定軟件關(guān)鍵數(shù)據(jù)或代碼的準(zhǔn)則有4條:

        準(zhǔn)則1.去除數(shù)據(jù)或代碼后軟件的核心功能無法正常使用;

        準(zhǔn)則2.去除數(shù)據(jù)或代碼后軟件的運(yùn)行結(jié)果不正確;

        準(zhǔn)則3.數(shù)據(jù)或代碼被修改后軟件的核心功能無法正常使用;

        準(zhǔn)則4.數(shù)據(jù)或代碼被修改后軟件的運(yùn)行結(jié)果不正確.

        軟件關(guān)鍵代碼提取就是要獲取軟件關(guān)鍵代碼的地址信息,即待保護(hù)指令序列的起始地址信息;關(guān)鍵數(shù)據(jù)提取是指獲取軟件關(guān)鍵數(shù)據(jù)的值信息.提取軟件關(guān)鍵數(shù)據(jù)和關(guān)鍵代碼通過分析軟件運(yùn)行時(shí)的指令流和數(shù)據(jù)流,分析軟件代碼的行為特征,將指令流信息劃分為若干代碼塊,采用程序切片和特征匹配的方法獲取.

        找到軟件關(guān)鍵代碼保護(hù)指令序列的起始位置,是進(jìn)行關(guān)鍵代碼提取和轉(zhuǎn)換的首要步驟.將軟件中的關(guān)鍵代碼轉(zhuǎn)換為虛擬機(jī)字節(jié)碼,也就是將源匯編代碼指令系統(tǒng)的可執(zhí)行代碼,轉(zhuǎn)換為自定義的虛擬機(jī)字節(jié)碼,并在其中通過代碼混淆等技術(shù)保護(hù)軟件.其工作過程如圖1所示.從源匯編代碼得到原始指令流,經(jīng)過隨機(jī)映射得到虛擬機(jī)編碼,與待保護(hù)的軟件關(guān)鍵代碼一起通過虛擬機(jī)編譯器編譯成虛擬機(jī)字節(jié)碼,即保護(hù)后的字節(jié)碼.指令處理函數(shù)通過變形引擎進(jìn)行指令轉(zhuǎn)換,轉(zhuǎn)換后的代碼通過解釋器進(jìn)行解釋執(zhí)行.

        2.1 虛擬機(jī)指令集

        指令集是存儲(chǔ)在CPU內(nèi)部,對(duì)CPU運(yùn)算進(jìn)行指導(dǎo)和優(yōu)化的硬程序,一般包括基本指令和擴(kuò)展指令兩部分.基本指令是所有處理器、虛擬機(jī)或運(yùn)行環(huán)境都會(huì)提供的指令集,而擴(kuò)展指令一般只在真實(shí)處理器中.虛擬機(jī)指令集是虛擬機(jī)的基礎(chǔ),規(guī)定了虛擬機(jī)的運(yùn)行方式.

        圖1 基于虛擬機(jī)的軟件保護(hù)過程示意圖

        構(gòu)造用于保護(hù)軟件的虛擬機(jī)并不需要實(shí)現(xiàn)指令集所有指令的功能,部分指令的功能可以通過其他簡單指令進(jìn)行運(yùn)算實(shí)現(xiàn).因此,定義一個(gè)簡化的基本指令集作為虛擬機(jī)指令集可以有效避免復(fù)雜的指令系統(tǒng)帶來的性能損失.據(jù)此定義的虛擬機(jī)指令集如表1所示.

        表1 簡化的虛擬機(jī)指令集

        其中,JMPF指令包括JMP、JLE、JL、JE等.虛擬機(jī)指令代碼由源匯編代碼指令轉(zhuǎn)換而來,因此,每條虛擬機(jī)指令代碼應(yīng)包含指令碼、源操作數(shù)、目的操作數(shù).每條源匯編指令的長度和操作數(shù)并不完全一致,為便于實(shí)現(xiàn),將虛擬機(jī)指令代碼設(shè)為定長,為源匯編代碼指令最長字節(jié),通過隨機(jī)生成的方法進(jìn)行代碼轉(zhuǎn)換.所謂隨機(jī)生成是指對(duì)于某一條具體的虛擬機(jī)代碼指令存在不同的形式,如MOV AX,BX,可以出現(xiàn)在源匯編代碼指令字節(jié)的不同位置.通過處理增加分析和破解的難度.

        2.2 虛擬機(jī)編譯器

        編譯器是將一種語言翻譯成另一種語言的程序,通常是將高級(jí)語言翻譯成低級(jí)語言.虛擬機(jī)編譯器主要是完成可執(zhí)行程序的目標(biāo)代碼到虛擬機(jī)自定義指令的轉(zhuǎn)換過程,主要完成的功能有:

        1)代碼提取:定位程序待保護(hù)關(guān)鍵代碼段,通過反匯編將關(guān)鍵代碼段二進(jìn)制數(shù)據(jù)翻譯成匯編級(jí)別的目標(biāo)平臺(tái)機(jī)器指令,為指令轉(zhuǎn)換做準(zhǔn)備.

        2)指令轉(zhuǎn)換:將匯編級(jí)別的機(jī)器指令按照一定的映射關(guān)系轉(zhuǎn)換成虛擬機(jī)自定義指令,在每一次保護(hù)過程中隨機(jī)構(gòu)造指令映射關(guān)系.

        3)指令編碼:對(duì)虛擬機(jī)自定義指令進(jìn)行編碼,按編碼規(guī)則將轉(zhuǎn)換后的自定義指令序列翻譯成二進(jìn)制數(shù)據(jù),在每一次保護(hù)過程中隨機(jī)生成指令編碼規(guī)則.

        4)虛擬機(jī)生成:根據(jù)保護(hù)過程中的隨機(jī)映射關(guān)系和指令集得到源匯編代碼的指令解析代碼,并添加到虛擬機(jī)解釋器中.

        5)文件重構(gòu):將虛擬機(jī)編譯器、解釋器和指令編碼后的代碼添加到程序源文件中,重新生成新的程序文件.

        虛擬機(jī)編譯器的輸入是軟件反匯編得到的源匯編指令,輸出是虛擬機(jī)指令代碼.為簡化代碼轉(zhuǎn)換規(guī)則和虛擬機(jī)解釋器的設(shè)計(jì),提高虛擬機(jī)執(zhí)行效率,基于表1所示指令集設(shè)計(jì)虛擬機(jī)指令集,使用基于寄存器的體系結(jié)構(gòu)并設(shè)置包含特殊寄存器的多寄存器,同時(shí)引入堆棧,提高虛擬機(jī)執(zhí)行效率.

        2.3 虛擬機(jī)解釋器

        虛擬機(jī)執(zhí)行虛擬機(jī)指令代碼主要有解釋執(zhí)行、即時(shí)編譯和二者結(jié)合3種方法.考慮到轉(zhuǎn)換的關(guān)鍵代碼內(nèi)容較少,為提高執(zhí)行效率,針對(duì)每一個(gè)指令碼設(shè)計(jì)對(duì)應(yīng)的解釋函數(shù),虛擬機(jī)解釋執(zhí)行指令時(shí)先根據(jù)條件找到對(duì)應(yīng)的解釋函數(shù)再解釋執(zhí)行.虛擬機(jī)解釋執(zhí)行示意圖如圖2所示.

        圖2 虛擬機(jī)解釋執(zhí)行示意圖

        簡單和直接實(shí)現(xiàn)的指令分配方式是每一個(gè)指令碼對(duì)應(yīng)一個(gè)函數(shù),然后通過switch進(jìn)行分配,示例代碼是:

        為降低函數(shù)調(diào)用的開銷,將所有函數(shù)代碼放在一起,形成一個(gè)大的switch語句塊,可以避免頻繁的函數(shù)調(diào)用,提高虛擬機(jī)解釋執(zhí)行效率,示例如下:

        但這樣執(zhí)行switch語句需要對(duì)每一條執(zhí)行的指令都進(jìn)行一次線性搜索,通過函數(shù)指針將每個(gè)指令碼對(duì)應(yīng)的操作寫在單獨(dú)的函數(shù)中,然后將每個(gè)指令碼替換為對(duì)應(yīng)的函數(shù)指針,從而省去線性搜索提高效率.替換后的switch語句描述如下:

        2.4 提取準(zhǔn)則

        關(guān)鍵數(shù)據(jù)和關(guān)鍵代碼是軟件核心算法所對(duì)應(yīng)的代碼和重要參數(shù)對(duì)應(yīng)的數(shù)據(jù).關(guān)鍵數(shù)據(jù)和代碼的提取是通過分析軟件運(yùn)行時(shí)的指令流和數(shù)據(jù)流進(jìn)行定位和提取的.

        軟件運(yùn)行時(shí)的指令流和數(shù)據(jù)流都是未經(jīng)解析的二進(jìn)制信息.為便于理解和分析,首先將其轉(zhuǎn)化為字符串信息.然后根據(jù)指令類型分別采用相應(yīng)的方法進(jìn)行分析,獲取關(guān)鍵代碼的地址信息.

        2.4.1 靜態(tài)特征分析

        靜態(tài)特征分析就是通過字符串匹配的方法,在指令流和數(shù)據(jù)流轉(zhuǎn)換后的字符串信息中查找已知的靜態(tài)特征.字符串匹配可以是多個(gè)條件的邏輯運(yùn)算.例如,以調(diào)用外部函數(shù)關(guān)鍵字“Shell”和線程函數(shù)“Thread”作為靜態(tài)特征分析軟件的功能,構(gòu)造邏輯表達(dá)式計(jì)算模糊查詢“Shell”和“Thread”的邏輯與運(yùn)算,根據(jù)匹配結(jié)果定位到代碼處,然后進(jìn)一步通過其他特征的分析,得到分析結(jié)果.

        2.4.2 轉(zhuǎn)移指令分析

        轉(zhuǎn)移指令是不按程序的語句流程執(zhí)行的指令.通過分析轉(zhuǎn)移指令可以分析出軟件多個(gè)代碼塊之間的相互調(diào)用關(guān)系和軟件代碼的執(zhí)行路徑,有助于理解代碼上下文之間的關(guān)系,從而分析軟件行為特征.

        轉(zhuǎn)移指令分析可以通過構(gòu)建指令流的流程圖實(shí)現(xiàn).首先找出指令流信息中所有轉(zhuǎn)移指令,根據(jù)轉(zhuǎn)移指令位置將指令流劃分為多個(gè)代碼塊,并合并多次出現(xiàn)的相同代碼塊為一個(gè)模塊,根據(jù)轉(zhuǎn)移指令的跳轉(zhuǎn)關(guān)系,將代碼塊按順序組合構(gòu)建軟件運(yùn)行時(shí)的指令流的流程圖.

        2.4.3 程序切片分析

        一個(gè)程序切片是軟件程序的部分語句和判定表達(dá)式所組成的集合[15].程序切分分析基于分治算法的思想,主要用于分解程序,將需要分析的問題從復(fù)雜的程序中分隔開單獨(dú)分析,有助于降低問題復(fù)雜度,便于分析和解決.程序切片分析通過分析數(shù)據(jù)的依賴關(guān)系,計(jì)算出影響輸入的數(shù)據(jù)i的語句和判定表達(dá)式,將相關(guān)的指令和數(shù)據(jù)集合作為切片,進(jìn)行分析.程序切片輸入的數(shù)據(jù)i可以是指令、內(nèi)存地址、數(shù)據(jù)值或是寄存器信息等.對(duì)運(yùn)行時(shí)的指令流和數(shù)據(jù)流進(jìn)行程序切片分析,能在復(fù)雜的軟件程序中較快地提取關(guān)鍵信息并分析特征.由上,設(shè)計(jì)軟件關(guān)鍵代碼提取算法如下所示.

        算法.關(guān)鍵代碼提取算法;

        輸入.指令流和數(shù)據(jù)流信息起始語句Sentence,指令集合CommandSet,數(shù)據(jù)集合DataSet,指令集合與數(shù)據(jù)集合的部分映射關(guān)系MapRelation;

        輸出.相關(guān)指令和數(shù)據(jù)集合ResultSet.

        算法描述:

        2.5 代碼轉(zhuǎn)換

        軟件的關(guān)鍵代碼轉(zhuǎn)換是將待保護(hù)軟件中的關(guān)鍵代碼轉(zhuǎn)換為虛擬機(jī)字節(jié)碼,也就是將x86指令系統(tǒng)的可執(zhí)行代碼轉(zhuǎn)換為用戶自定義的虛擬機(jī)字節(jié)碼代碼.轉(zhuǎn)換主要包括指令映射和指令編碼.指令映射是將匯編級(jí)別的機(jī)器指令按照一定的映射關(guān)系轉(zhuǎn)換為自定義的虛擬機(jī)指令,并保存在相應(yīng)的結(jié)構(gòu)和存儲(chǔ)單元中,每一次轉(zhuǎn)換過程中隨機(jī)構(gòu)造指令映射關(guān)系;指令編碼是對(duì)自定義的虛擬機(jī)指令進(jìn)行編碼,按照編碼規(guī)則將轉(zhuǎn)換后的自定義指令序列翻譯成二進(jìn)制數(shù)據(jù),每一次轉(zhuǎn)換過程中隨機(jī)生成指令編碼規(guī)則.其中,指令映射是核心.

        軟件反匯編得到的一條匯編指令記為inm,所有匯編指令組成目標(biāo)指令結(jié)合T={in1,in2,···,inn},ini∈T,≤i≤n.將需要轉(zhuǎn)換的關(guān)鍵代碼指令記為insi,關(guān)鍵代碼指令集合P={ins1,ins2,···,insk},insi∈P,1≤i≤k,P?T.將用于解釋被保護(hù)指令的虛擬指令記為vi,其集合V={v1,v2,···,vw},vi∈V.一條指令可以被一條或多條虛擬指令解釋,解釋一條指令insi的虛擬指令序列記為其中,1≤j≤w.如VI(ins2)={v2,v4,v5}表示通過v2,v4,v53條虛擬指令解釋指令ins2.轉(zhuǎn)換函數(shù)表示虛擬指令和關(guān)鍵代碼指令的轉(zhuǎn)換關(guān)系,記為TFi.轉(zhuǎn)換函數(shù)序列TF(ins)表示解釋指令insi的處理函數(shù)序列,其集合記為TFSet(insx)={TF(ins1),TF(ins2),···,TF(insc)}由此,設(shè)計(jì)關(guān)鍵代碼轉(zhuǎn)換算法如下所示.

        算法.關(guān)鍵代碼轉(zhuǎn)換算法

        輸入.關(guān)鍵代碼指令集合P={ins1,ins2,···,insk};

        輸出.虛擬指令序列VI.

        算法描述:

        1)定義虛擬指令序列為空集合,即VI=?;

        2)for eachinsi∈P

        3)計(jì)算轉(zhuǎn)換函數(shù)序列TF(insi)={hd1···hdn}

        4)for eachhdm∈TF(insi)

        5)計(jì)算虛擬指令vi

        6)將虛擬指令vi加入虛擬指令序列VI;

        7)end each

        8)end each

        3 關(guān)鍵數(shù)據(jù)和代碼隔離

        關(guān)鍵數(shù)據(jù)和代碼隔離是將軟件關(guān)鍵數(shù)據(jù)存儲(chǔ)在加密鎖中,或?qū)㈥P(guān)鍵代碼轉(zhuǎn)換為加密鎖內(nèi)可執(zhí)行的編譯語言代碼,并將編譯生成的文件寫入加密鎖中.

        關(guān)鍵數(shù)據(jù)和代碼在寫入加密鎖前,需要進(jìn)行加密處理,常用的加密算法包括3DES、SM4等,軟件調(diào)用關(guān)鍵數(shù)據(jù)或關(guān)鍵代碼時(shí),通過與加密鎖的通信接口獲取加密鎖獲取存儲(chǔ)在加密鎖中的關(guān)鍵數(shù)據(jù)或關(guān)鍵代碼的運(yùn)行結(jié)果并調(diào)用解密算法將數(shù)據(jù)解密后使用.從而將軟件和加密鎖捆綁為一個(gè)整體,通過基于硬件的方式隱藏關(guān)鍵數(shù)據(jù)和代碼,實(shí)現(xiàn)代碼隔離.軟件關(guān)鍵數(shù)據(jù)和代碼隔離原理示意圖如圖3所示.應(yīng)用軟件小圓圈A即為要隔離的關(guān)鍵數(shù)據(jù)或代碼,軟件“芯”加密鎖小圓圈B即為隔離處理后隱藏在加密鎖中個(gè)關(guān)鍵數(shù)據(jù)或代碼.

        圖3 關(guān)鍵數(shù)據(jù)和代碼隔離原理示意圖

        軟件關(guān)鍵數(shù)據(jù)和代碼隔離是從軟件程序中“切分”出關(guān)鍵代碼片段或關(guān)鍵數(shù)據(jù),通過基于硬件的方式隱藏所切分的關(guān)鍵數(shù)據(jù)或代碼,將關(guān)鍵數(shù)據(jù)或代碼隱藏在加密鎖中,從而使軟件主程序和關(guān)鍵代碼或數(shù)據(jù)相分離,難以通過逆向分析獲取軟件關(guān)鍵數(shù)據(jù)或核心算法.

        加密鎖內(nèi)移植多個(gè)關(guān)鍵代碼塊后,通過計(jì)算時(shí)間間隔可以判斷是否處在動(dòng)態(tài)調(diào)試環(huán)境,從而有效提高軟件抗逆向分析的能力.若加密鎖中包含關(guān)鍵代碼塊S1,S2···Sn,軟件P運(yùn)行時(shí)需要按順序調(diào)用S1和S2,即:S1→S2,則執(zhí)行S1和S2之間的時(shí)間間隔在一個(gè)固定時(shí)間范圍T內(nèi)(范圍值T可以通過軟件測(cè)試計(jì)算獲得),在軟件P調(diào)用S1時(shí),獲取加密鎖時(shí)間T1,在P調(diào)用S2時(shí),獲取加密鎖時(shí)間T2,計(jì)算T0=T2?T1,若T0>T,則可認(rèn)為是軟件正在被調(diào)試,可以通過銷毀加密鎖內(nèi)關(guān)鍵數(shù)據(jù)等方法使軟件P無法正常使用,防止軟件被逆向分析.由此,通過加密鎖調(diào)用關(guān)鍵代碼判斷動(dòng)態(tài)調(diào)試的算法設(shè)計(jì)如下所示.

        算法.加密鎖關(guān)鍵代碼調(diào)用判斷動(dòng)態(tài)調(diào)試算法

        輸入.無

        輸出.判斷結(jié)果

        算法描述:

        4 結(jié)論

        將多種軟件保護(hù)手段相結(jié)合共同保護(hù)軟件能有效提高軟件破解和攻擊的難度.本文提出的基于虛擬機(jī)代碼隔離的軟件保護(hù)方法,通過分析和設(shè)計(jì)虛擬機(jī)指令集、編譯器和解釋器,確定了關(guān)鍵數(shù)據(jù)和代碼的提取準(zhǔn)則和轉(zhuǎn)換方法,通過代碼隔離的方法將軟件關(guān)鍵數(shù)據(jù)和關(guān)鍵代碼分別隔離在構(gòu)建的虛擬機(jī)和硬件加密鎖中,從而使軟件不再是一個(gè)完整的整體,難以通過逆向分析獲取軟件關(guān)鍵數(shù)據(jù)和核心算法,有效提高了軟件攻擊的復(fù)雜度.

        在多個(gè)項(xiàng)目軟件中對(duì)本文提出的方法進(jìn)行了使用,目前軟件運(yùn)行穩(wěn)定,未發(fā)現(xiàn)軟件被攻擊的情況.下一步考慮進(jìn)一步完善虛擬機(jī)技術(shù)的相關(guān)理論,擴(kuò)充虛擬機(jī)指令集,提高虛擬機(jī)編譯和解釋執(zhí)行的效率.

        1王建民,王朝坤,余志偉.軟件保護(hù)技術(shù)[M].北京:清華大學(xué)出版社,2013.

        2 COLLBERG C,THOMBORSON C.A taxonomy of obfuscationg transformations[R].Auckland:Department of Computer Science,University of Auckland,1997.

        3 段剛.加密與解密[M].北京:電子工業(yè)出版社,2003:16?23.

        4 MAUDE T,MAUDE D.Hardware protection against software piracy[J].Communications of the ACM,1984,27(9):950?959.

        5 AVERBUCHA,KIPERBERGM,ZAIDENBERGN J.Truly-Protect:An efficient vm-based software protection[J].IEEE Systems Journal,2013,3(7):455?466.

        6許廣蓮,房鼎益,王懷軍,等.一種白盒環(huán)境中抗動(dòng)態(tài)攻擊的軟件保護(hù)方法[J].小型微型計(jì)算機(jī)系統(tǒng),2015,36(9):2062?2066.

        7王妮.基于攻擊建模的軟件保護(hù)有效性評(píng)估方法研究[D].西安:西北大學(xué),2012.

        8崔寶江,梁曉冰,王禹,等.基于回溯與引導(dǎo)的關(guān)鍵代碼區(qū)域覆蓋的二進(jìn)制程序測(cè)試技術(shù)研究[J].電子與信息學(xué)報(bào),2012,34(1):108?113.

        9康緋,王乾,肖亞南,等.基于軟件執(zhí)行軌跡差異比對(duì)的關(guān)鍵函數(shù)定位技術(shù)研究[J].通信學(xué)報(bào),2013,9(34):177?184.

        10 LIU D,ARCUS A,POSHYVANYYK D.Feature location via information retrieval based filterin of a single scenario execution trace[R].New York:IEEE,2007.

        11 HERZBERG A,SHULMAN H,SAXENA A,et al.Towards a theory of white-box security[M].Berlin:Springer Berlin Heidelberg,2009:342?352.

        12 HERZBERG A,SHULMAN H.Robust combiners for software hardening[M].Berlin:Springer Berlin Heidelberg,2010:282?289.

        13 SHARIF M,LANZI A,GIFFLN J,et al.Automatic reverse engineering of malware emulators[C]//Oakland,California:Washington:IEEE Computer Society,2009.

        14謝鑫,劉粉林,蘆斌,等.一種基于代碼并行化和虛擬機(jī)多樣化的軟件保護(hù)方法[J].小型微型計(jì)算機(jī)系統(tǒng),2015,11(36):2588?2593.

        15 HORWITZ S,REPS T,BINKLEY D.Interprocedural slicing using dependence graphs[J].Acm Transactions on Programming Languages and Systems,1990,12(1):26?28.

        猜你喜歡
        指令關(guān)鍵分析
        聽我指令:大催眠術(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)用
        生意無大小,關(guān)鍵是怎么做?
        中國商人(2013年1期)2013-12-04 08:52:52
        男女啪啪免费视频网址| 特黄熟妇丰满人妻无码| 99热在线观看| 国产网红主播无码精品| 人妻去按摩店被黑人按中出| 国内精品视频成人一区二区| 蜜桃在线一区二区三区| 国产一区精品二区三区四区| 国内偷拍国内精品多白86| 亚洲av无码国产精品色| 久久精品中文闷骚内射| 国产亚洲av手机在线观看 | 激情伊人五月天久久综合| 老太脱裤让老头玩ⅹxxxx| 国产精品一区二区AV不卡| 中文字幕日韩精品亚洲精品| 白嫩丰满少妇av一区二区| 变态 另类 欧美 大码 日韩| 激情内射亚洲一区二区三区爱妻 | 国产精品亚洲αv天堂无码| 亚洲∧v久久久无码精品| 加勒比在线一区二区三区| 国产黄色一区二区三区av| 人妻少妇进入猛烈时中文字幕| 成人无码av一区二区| 精品推荐国产精品店| 新久久久高清黄色国产| 日韩av在线手机免费观看| 后入到高潮免费观看| 欧美亚洲国产精品久久高清| 久久成人黄色免费网站| 亚洲综合中文字幕综合| 人人爽人人爽人人爽人人片av| 亚洲AV永久无码制服河南实里| 久久高潮少妇视频免费| 蜜乳一区二区三区亚洲国产| 少妇性俱乐部纵欲狂欢少妇| 日本做受高潮好舒服视频| 国产成人精品精品欧美| 日本国产在线一区二区| 亚洲欧美国产双大乳头|