跨架構(gòu)二進(jìn)制克隆代碼檢測(cè)與基于代碼重用的修補(bǔ)技術(shù)研究
發(fā)布時(shí)間:2021-08-27 01:10
二進(jìn)制克隆代碼檢測(cè)(也稱為相似性比較)與代碼修補(bǔ)技術(shù)在軟件安全以及軟件工程領(lǐng)域有諸多應(yīng)用。二進(jìn)制克隆代碼檢測(cè)技術(shù)旨在尋找二進(jìn)制代碼之間相似或者相同的代碼片段,分析人員由此可以復(fù)用已知代碼的特性和已有的分析結(jié)果,快速理解對(duì)象代碼,該技術(shù)可用于檢測(cè)已知漏洞代碼、推斷惡意軟件家族、檢測(cè)代碼抄襲等;二進(jìn)制代碼修補(bǔ)技術(shù)用以修補(bǔ)二進(jìn)制程序中的缺陷代碼,在源代碼缺失的情況下,該技術(shù)對(duì)于代碼補(bǔ)強(qiáng)、遺產(chǎn)代碼維護(hù)等有著重要意義。然而,以上技術(shù)當(dāng)前仍然主要依靠人工分析實(shí)現(xiàn),已有的方法在分析精度、效率上還存在許多不足,在現(xiàn)實(shí)復(fù)雜的代碼分析情境下捉襟見(jiàn)肘,因此,我們需要在已有工作的基礎(chǔ)上更進(jìn)一步,提高二進(jìn)制克隆代碼檢測(cè)的精度以及二進(jìn)制代碼修補(bǔ)的質(zhì)量,同時(shí)兼顧分析效率,增強(qiáng)以上技術(shù)在應(yīng)對(duì)現(xiàn)實(shí)應(yīng)用時(shí)的魯棒性,以期降低人工成本、減少人為錯(cuò)誤、提高勞動(dòng)生產(chǎn)率。本文提出了在不同指令架構(gòu)集上檢測(cè)二進(jìn)制克隆代碼以及基于代碼重用修補(bǔ)二進(jìn)制代碼的方法。對(duì)于二進(jìn)制克隆代碼檢測(cè),本文基于語(yǔ)義代碼特征,分別用動(dòng)態(tài)插樁、靜態(tài)模擬執(zhí)行和重用運(yùn)行時(shí)信息模擬執(zhí)行的方法處理二進(jìn)制程序理解、相似代碼比較以及目標(biāo)代碼搜索的問(wèn)題;對(duì)于二進(jìn)制代碼修補(bǔ),...
【文章來(lái)源】:上海交通大學(xué)上海市 211工程院校 985工程院校 教育部直屬院校
【文章頁(yè)數(shù)】:156 頁(yè)
【學(xué)位級(jí)別】:博士
【部分圖文】:
–5 NConvert v6.17函數(shù)png_set_PLTE析取的簡(jiǎn)化控制流圖
接下來(lái),BinPatch借助C的運(yùn)?時(shí)值模擬執(zhí)?D,并且提取相關(guān)的路徑條件。當(dāng)D訪問(wèn)全局變量或者堆變量時(shí),BinPatch根據(jù)訪問(wèn)順序依次將C的相關(guān)值借?過(guò)來(lái),?函數(shù)的返回值也被?類似的?法處理;當(dāng)D訪問(wèn)了?法地址時(shí),?如因?yàn)闂R绯鰧?dǎo)致返回地址被覆寫,BinPatch就停?模擬。圖6–3分別展?了從libpng v1.6.20和NConvert v6.17的函數(shù)png_set_PLTE執(zhí)?獲取的路徑條件。在每幅?圖中,被執(zhí)?的匯編代碼被展?在左側(cè),其中條件分?指令都被點(diǎn)線框標(biāo)記出來(lái)了,展?在右側(cè)的則是BinPatch從這些指令中提取相應(yīng)的路徑條件。對(duì)于路徑條件的每?個(gè)條?(??),前兩個(gè)元素是(模擬)執(zhí)?時(shí)參與條件判斷的操作數(shù)運(yùn)?時(shí)值,?第三個(gè)元素則是該條件判斷的條件碼,說(shuō)明前兩個(gè)操作數(shù)被?較的?式(Z:零、L:?于、BE:?符號(hào)數(shù)的?于或等于),最后?個(gè)元素是條件判斷的結(jié)果。
BinPatch?先需要預(yù)處理路徑條件以?便后續(xù)的對(duì)齊,算法6–7展?了相關(guān)偽代碼。算法6–7路徑條件的預(yù)處理算法BinPatch將路徑上所有條件判斷都轉(zhuǎn)換成語(yǔ)義等價(jià)的嚴(yán)格不等關(guān)系(第4-5?),即嚴(yán)格?于關(guān)系(<),?如圖6–3(b)原本最后?個(gè)條件判斷的條件碼是BE,BinPatch將其改寫成B,則原本的操作數(shù)就需要交換位置,?較結(jié)果也同樣需要置反;此外,對(duì)于對(duì)于路徑上的條件的每?個(gè)變量,BinPatch也會(huì)通過(guò)值集分析獲得其所有可能的值[188,189],圖6–4展?了圖6–3中條件判斷變量的值集分析結(jié)果,arg_*表?函數(shù)的參數(shù)。之后,BinPatch分別識(shí)別PC和PD中的組合邏輯(第10?)。對(duì)于?進(jìn)制代碼,其實(shí)現(xiàn)組合邏輯的順序可能是不同于其對(duì)應(yīng)的源代碼的,這都由編譯器及編譯配置決定(?如優(yōu)化選項(xiàng))。以png_set_PLTE為例,其析取在圖6–3(b)中是以逆序的形式實(shí)現(xiàn)的,即?先檢查的是info_ptr,?后才是png_ptr,?在圖6–3(a),實(shí)現(xiàn)的順序則是和源代碼?致的順序,所以在對(duì)齊組合邏輯時(shí),BinPatch只考慮其內(nèi)容,?不管其中各個(gè)?邏輯的具體實(shí)現(xiàn)順序。圖6–5展?了以上析取的簡(jiǎn)化控制流圖,兩個(gè)條件判斷被認(rèn)為屬于同?組合邏輯,當(dāng)它們所在基本塊bb_0和bb_1滿?:
本文編號(hào):3365339
【文章來(lái)源】:上海交通大學(xué)上海市 211工程院校 985工程院校 教育部直屬院校
【文章頁(yè)數(shù)】:156 頁(yè)
【學(xué)位級(jí)別】:博士
【部分圖文】:
–5 NConvert v6.17函數(shù)png_set_PLTE析取的簡(jiǎn)化控制流圖
接下來(lái),BinPatch借助C的運(yùn)?時(shí)值模擬執(zhí)?D,并且提取相關(guān)的路徑條件。當(dāng)D訪問(wèn)全局變量或者堆變量時(shí),BinPatch根據(jù)訪問(wèn)順序依次將C的相關(guān)值借?過(guò)來(lái),?函數(shù)的返回值也被?類似的?法處理;當(dāng)D訪問(wèn)了?法地址時(shí),?如因?yàn)闂R绯鰧?dǎo)致返回地址被覆寫,BinPatch就停?模擬。圖6–3分別展?了從libpng v1.6.20和NConvert v6.17的函數(shù)png_set_PLTE執(zhí)?獲取的路徑條件。在每幅?圖中,被執(zhí)?的匯編代碼被展?在左側(cè),其中條件分?指令都被點(diǎn)線框標(biāo)記出來(lái)了,展?在右側(cè)的則是BinPatch從這些指令中提取相應(yīng)的路徑條件。對(duì)于路徑條件的每?個(gè)條?(??),前兩個(gè)元素是(模擬)執(zhí)?時(shí)參與條件判斷的操作數(shù)運(yùn)?時(shí)值,?第三個(gè)元素則是該條件判斷的條件碼,說(shuō)明前兩個(gè)操作數(shù)被?較的?式(Z:零、L:?于、BE:?符號(hào)數(shù)的?于或等于),最后?個(gè)元素是條件判斷的結(jié)果。
BinPatch?先需要預(yù)處理路徑條件以?便后續(xù)的對(duì)齊,算法6–7展?了相關(guān)偽代碼。算法6–7路徑條件的預(yù)處理算法BinPatch將路徑上所有條件判斷都轉(zhuǎn)換成語(yǔ)義等價(jià)的嚴(yán)格不等關(guān)系(第4-5?),即嚴(yán)格?于關(guān)系(<),?如圖6–3(b)原本最后?個(gè)條件判斷的條件碼是BE,BinPatch將其改寫成B,則原本的操作數(shù)就需要交換位置,?較結(jié)果也同樣需要置反;此外,對(duì)于對(duì)于路徑上的條件的每?個(gè)變量,BinPatch也會(huì)通過(guò)值集分析獲得其所有可能的值[188,189],圖6–4展?了圖6–3中條件判斷變量的值集分析結(jié)果,arg_*表?函數(shù)的參數(shù)。之后,BinPatch分別識(shí)別PC和PD中的組合邏輯(第10?)。對(duì)于?進(jìn)制代碼,其實(shí)現(xiàn)組合邏輯的順序可能是不同于其對(duì)應(yīng)的源代碼的,這都由編譯器及編譯配置決定(?如優(yōu)化選項(xiàng))。以png_set_PLTE為例,其析取在圖6–3(b)中是以逆序的形式實(shí)現(xiàn)的,即?先檢查的是info_ptr,?后才是png_ptr,?在圖6–3(a),實(shí)現(xiàn)的順序則是和源代碼?致的順序,所以在對(duì)齊組合邏輯時(shí),BinPatch只考慮其內(nèi)容,?不管其中各個(gè)?邏輯的具體實(shí)現(xiàn)順序。圖6–5展?了以上析取的簡(jiǎn)化控制流圖,兩個(gè)條件判斷被認(rèn)為屬于同?組合邏輯,當(dāng)它們所在基本塊bb_0和bb_1滿?:
本文編號(hào):3365339
本文鏈接:http://sikaile.net/kejilunwen/ruanjiangongchenglunwen/3365339.html
最近更新
教材專著