欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種面向二進(jìn)制的混合模糊測(cè)試方法

文檔序號(hào):6638188閱讀:397來(lái)源:國(guó)知局
一種面向二進(jìn)制的混合模糊測(cè)試方法
【專利摘要】本發(fā)明提供了一種面向二進(jìn)制的混合模糊測(cè)試方法,包括:采用模糊測(cè)試作為前端處理,其中利用測(cè)試用例來(lái)驅(qū)動(dòng)被測(cè)試程序的執(zhí)行;采用二進(jìn)制代碼覆蓋率監(jiān)測(cè)處理作為中間層處理,其中在被測(cè)試程序的執(zhí)行過程中,記錄被測(cè)試程序覆蓋的基本塊,由此計(jì)算模糊測(cè)試的覆蓋率;當(dāng)計(jì)算出的模糊測(cè)試的覆蓋率不再提高時(shí),執(zhí)行作為后端處理的符號(hào)執(zhí)行處理,在符號(hào)執(zhí)行處理中生成覆蓋與當(dāng)前測(cè)試用例的路徑不同的其它路徑的新的測(cè)試用例,然后將新的測(cè)試用例反饋至模糊測(cè)試,使得模糊測(cè)試?yán)眯碌臏y(cè)試用例來(lái)驅(qū)動(dòng)被測(cè)試程序的執(zhí)行。
【專利說(shuō)明】一種面向二進(jìn)制的混合模糊測(cè)試方法

【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計(jì)算機(jī)【技術(shù)領(lǐng)域】,更具體地說(shuō),本發(fā)明涉及一種面向二進(jìn)制的混合模 糊測(cè)試方法。

【背景技術(shù)】
[0002] 隨著計(jì)算機(jī)科學(xué)技術(shù)和互聯(lián)網(wǎng)技術(shù)飛速發(fā)展,軟件安全問題層出不窮,軟件安全 一直備受關(guān)注。在軟件安全性測(cè)試領(lǐng)域,模糊測(cè)試和符號(hào)執(zhí)行是兩種使用較為廣泛的測(cè)試 方法。
[0003] 模糊測(cè)試(Fuzzing)是目前安全性測(cè)試領(lǐng)域最常用的技術(shù)手段,其基本思想是向 目標(biāo)程序提供大量的畸形輸入并監(jiān)控目標(biāo)系統(tǒng)的異常結(jié)果來(lái)發(fā)現(xiàn)軟件缺陷。模糊測(cè)試的基 本流程為:
[0004] 1)確定待測(cè)試的目標(biāo)程序,分析程序輸入數(shù)據(jù)的基本結(jié)構(gòu)信息,程序輸入包括命 令行參數(shù)、文件、網(wǎng)絡(luò)數(shù)據(jù)包、環(huán)境變量等;
[0005] 2)依據(jù)待測(cè)目標(biāo)程序和輸入數(shù)據(jù)的基本結(jié)構(gòu)信息的不同,選擇相應(yīng)的測(cè)試用例生 成方案,生成模糊測(cè)試數(shù)據(jù);
[0006] 3)將測(cè)試輸入逐個(gè)推送至目標(biāo)程序,驅(qū)動(dòng)程序執(zhí)行并監(jiān)控程序運(yùn)行狀態(tài);
[0007] 4)將引起程序異常的測(cè)試用例和系統(tǒng)狀態(tài)進(jìn)行記錄;
[0008] 5)進(jìn)一步分析系統(tǒng)異常原因,確定該異常信息是否可被進(jìn)一步利用(該階段為非 必須階段)。
[0009] 模糊測(cè)試技術(shù)的優(yōu)勢(shì)在于其不需要任何關(guān)于軟件或協(xié)議的先驗(yàn)知識(shí),且測(cè)試過程 簡(jiǎn)單、高效,自動(dòng)化程度高。但由于測(cè)試用例生成策略的限制,模糊測(cè)試存在一定的局限性。 其生成的測(cè)試用例具有單一性,多個(gè)用例往往覆蓋程序的同一條路徑,無(wú)法保證測(cè)試的代 碼覆蓋率,致使測(cè)試過程不全面。
[0010] 傳統(tǒng)模糊測(cè)試技術(shù)的不足促進(jìn)了符號(hào)執(zhí)行技術(shù)的發(fā)展。
[0011] 符號(hào)執(zhí)行是一種驗(yàn)證程序正確性的方法,其基本思想是將目標(biāo)程序的具體輸入用 符號(hào)變量表示,根據(jù)程序語(yǔ)義,使用符號(hào)變量解釋執(zhí)行程序,在程序的執(zhí)行過程中使用符號(hào) 變量表示程序變量,在程序的分支跳轉(zhuǎn)處使用符號(hào)表達(dá)式表示跳轉(zhuǎn)條件。程序的最終輸出 是由符號(hào)變量組成的邏輯或算術(shù)表達(dá)式,稱為路徑約束條件。對(duì)路徑約束條件進(jìn)行可滿足 性的判斷,通過對(duì)約束條件取反,進(jìn)行符號(hào)變量的求解,生成新的測(cè)試用例,新生成的測(cè)試 用例可以覆蓋程序中新的路徑。
[0012] 符號(hào)執(zhí)行試圖通過分析程序中所有可執(zhí)行路徑,達(dá)到程序狀態(tài)空間的完全遍歷。 在理論上,符號(hào)執(zhí)行可以保證較高的測(cè)試覆蓋率,但具體使用中存在路徑爆炸,約束求解耗 時(shí)耗能等問題。
[0013] 目前,對(duì)于源代碼的安全性測(cè)試已經(jīng)有將模糊測(cè)試和符號(hào)執(zhí)行相結(jié)合的方法。非 專利文獻(xiàn) I (Internat ional Conference on Software Engineering,29 卷,416-426 頁(yè)) 針對(duì)C程序提出了一種混合執(zhí)行的測(cè)試方法,模糊測(cè)試和符號(hào)執(zhí)行交替執(zhí)行,同時(shí)從廣度 上和深度上探索程序狀態(tài)空間。非專利文獻(xiàn)1在源代碼符號(hào)執(zhí)行工具CUTE上實(shí)現(xiàn)了該算 法,實(shí)驗(yàn)結(jié)果表明在相同的系統(tǒng)開銷下,該方法相比于單獨(dú)的模糊測(cè)試和符號(hào)執(zhí)行都可達(dá) 到較高的測(cè)試覆蓋率,能探索更大的程序狀態(tài)空間。
[0014] 但是,非專利文獻(xiàn)1中提出的方法只適用于源代碼層面,無(wú)法針對(duì)二進(jìn)制程序進(jìn) 行分析。


【發(fā)明內(nèi)容】

[0015] 本發(fā)明所要解決的技術(shù)問題是針對(duì)現(xiàn)有技術(shù)中存在上述缺陷,提供一種能夠針對(duì) 二進(jìn)制程序的混合模糊測(cè)試方法,該將模糊測(cè)試和符號(hào)執(zhí)行相結(jié)合,同時(shí)從廣度上和深度 上探索程序狀態(tài)空間。通過該方法可以在合理的系統(tǒng)資源開銷下,獲得較高的測(cè)試覆蓋率。
[0016] 為了實(shí)現(xiàn)上述技術(shù)目的,根據(jù)本發(fā)明,提供了一種面向二進(jìn)制的混合模糊測(cè)試方 法,包括:采用模糊測(cè)試作為前端處理,其中利用測(cè)試用例來(lái)驅(qū)動(dòng)被測(cè)試程序的執(zhí)行;采用 二進(jìn)制代碼覆蓋率監(jiān)測(cè)處理作為中間層處理,其中在被測(cè)試程序的執(zhí)行過程中,記錄被測(cè) 試程序覆蓋的基本塊,由此計(jì)算模糊測(cè)試的覆蓋率;當(dāng)計(jì)算出的模糊測(cè)試的覆蓋率不再提 高時(shí),執(zhí)行作為后端處理的符號(hào)執(zhí)行處理,在符號(hào)執(zhí)行處理中生成覆蓋與當(dāng)前測(cè)試用例的 路徑不同的其它路徑的新的測(cè)試用例,然后將新的測(cè)試用例反饋至模糊測(cè)試,使得模糊測(cè) 試?yán)眯碌臏y(cè)試用例來(lái)驅(qū)動(dòng)被測(cè)試程序的執(zhí)行。
[0017] 優(yōu)選地,符號(hào)執(zhí)行處理采用動(dòng)態(tài)符號(hào)執(zhí)行技術(shù)。
[0018] 優(yōu)選地,在符號(hào)執(zhí)行處理中,對(duì)被測(cè)試程序的輸入進(jìn)行符號(hào)化處理,抓取當(dāng)前測(cè)試 用例的執(zhí)行軌跡,使用中間語(yǔ)言對(duì)軌跡文件進(jìn)行形式化描述,生成當(dāng)前路徑的約束條件,采 用基于代的路徑搜索算法對(duì)路徑約束條件取反,借助約束求解器求解路徑約束條件,最終 生成覆蓋與當(dāng)前測(cè)試用例的路徑不同的其它路徑的新的測(cè)試用例。
[0019] 優(yōu)選地,模糊測(cè)試在接收到從符號(hào)執(zhí)行處理反饋來(lái)的新的測(cè)試用例之前,利用基 于變異的策略生成的測(cè)試用例來(lái)驅(qū)動(dòng)被測(cè)試程序的執(zhí)行。
[0020] 優(yōu)選地,所述面向二進(jìn)制的混合模糊測(cè)試方法用于軟件安全性測(cè)試。
[0021] 本發(fā)明的混合模糊測(cè)試方法針對(duì)的是二進(jìn)制程序,相比于源代碼測(cè)試更具適用性 和實(shí)際價(jià)值。本發(fā)明的混合模糊測(cè)試方法在每次切換到符號(hào)執(zhí)行時(shí),只進(jìn)行一次符號(hào)執(zhí)行 操作,并非重復(fù)執(zhí)行符號(hào)執(zhí)行,增強(qiáng)了符號(hào)執(zhí)行的可用性。將模糊測(cè)試和符號(hào)執(zhí)行相結(jié)合提 出混合模糊測(cè)試方法,該方法引入符號(hào)執(zhí)行指導(dǎo)部分測(cè)試用例的生成,構(gòu)成一個(gè)帶反饋式 的模糊測(cè)試系統(tǒng),消除了傳統(tǒng)模糊測(cè)試生成測(cè)試用例的盲目性,整個(gè)系統(tǒng)在合理的資源開 銷下,可以達(dá)到更高的測(cè)試覆蓋率。

【專利附圖】

【附圖說(shuō)明】
[0022] 結(jié)合附圖,并通過參考下面的詳細(xì)描述,將會(huì)更容易地對(duì)本發(fā)明有更完整的理解 并且更容易地理解其伴隨的優(yōu)點(diǎn)和特征,其中:
[0023] 圖1示意性地示出了根據(jù)本發(fā)明優(yōu)選實(shí)施例的面向二進(jìn)制的混合模糊測(cè)試方法 的系統(tǒng)架構(gòu)簡(jiǎn)圖。
[0024] 圖2示意性地示出了根據(jù)本發(fā)明優(yōu)選實(shí)施例的面向二進(jìn)制的混合模糊測(cè)試方法 的系統(tǒng)架構(gòu)詳圖。
[0025] 圖3示意性地示出了根據(jù)本發(fā)明優(yōu)選實(shí)施例的混合模糊測(cè)試系統(tǒng)的偽代碼實(shí)現(xiàn) 的示例。
[0026] 圖4示意性地示出了本發(fā)明具體實(shí)施例采用的基于代的路徑遍歷算法。
[0027] 圖5示意性地示出了根據(jù)本發(fā)明優(yōu)選實(shí)施例的針對(duì)Linux系統(tǒng)下的常用二進(jìn)制程 序Is的中間語(yǔ)言片段的具體示例。
[0028] 需要說(shuō)明的是,附圖用于說(shuō)明本發(fā)明,而非限制本發(fā)明。注意,表示結(jié)構(gòu)的附圖可 能并非按比例繪制。并且,附圖中,相同或者類似的元件標(biāo)有相同或者類似的標(biāo)號(hào)。

【具體實(shí)施方式】
[0029] 為了使本發(fā)明的內(nèi)容更加清楚和易懂,下面結(jié)合具體實(shí)施例和附圖對(duì)本發(fā)明的內(nèi) 容進(jìn)行詳細(xì)描述。
[0030] 對(duì)二進(jìn)制代碼分析,相比源代碼分析具有以下優(yōu)勢(shì):首先,對(duì)二進(jìn)制可執(zhí)行程序分 析不依賴于源代碼,可以很好地保護(hù)商業(yè)機(jī)密。其次,在源代碼編譯成最終的二進(jìn)制程序的 過程中,可能會(huì)有編譯器優(yōu)化或代碼混淆器引入的隱蔽軟件缺陷。因此,源代碼正確,二進(jìn) 制程序不一定正確,只有對(duì)最終的二進(jìn)制程序進(jìn)行測(cè)試分析,才可能發(fā)現(xiàn)此類問題。最后, 現(xiàn)有的不同軟件是由不同的編程語(yǔ)言((:工++、從¥八、腳本語(yǔ)言等)編寫而來(lái),目前還不存在 跨編程語(yǔ)言的源代碼安全性分析系統(tǒng),對(duì)源代碼進(jìn)行分析,需要對(duì)不同的編程語(yǔ)言的語(yǔ)法 和語(yǔ)義信息建立不同的模型后進(jìn)行分析。但它們最終的二進(jìn)制代碼都是統(tǒng)一形式的機(jī)器指 令,因此,對(duì)二進(jìn)制程序分析不受編程語(yǔ)言差異的影響。
[0031] 本發(fā)明提出的混合模糊測(cè)試方法的系統(tǒng)架構(gòu)簡(jiǎn)圖如圖1所示,系統(tǒng)架構(gòu)詳圖如圖 2所示。
[0032] 如圖1和圖2所示,根據(jù)本發(fā)明優(yōu)選實(shí)施例的面向二進(jìn)制的混合模糊測(cè)試方法包 括:
[0033] 采用模糊測(cè)試100作為前端處理,其中利用測(cè)試用例來(lái)驅(qū)動(dòng)被測(cè)試程序的執(zhí)行 (模糊測(cè)試1〇〇初始地可以利用基于變異的策略生成的測(cè)試用例來(lái)驅(qū)動(dòng)被測(cè)試程序的執(zhí) 行,即,模糊測(cè)試1〇〇在接收到從符號(hào)執(zhí)行處理300反饋來(lái)的新的測(cè)試用例400之前,利用 基于變異的策略生成的測(cè)試用例來(lái)驅(qū)動(dòng)被測(cè)試程序的執(zhí)行);
[0034] 采用二進(jìn)制代碼覆蓋率監(jiān)測(cè)處理200作為中間層處理,其中在被測(cè)試程序的執(zhí)行 過程中,記錄被測(cè)試程序覆蓋的基本塊,由此計(jì)算模糊測(cè)試100的覆蓋率;
[0035] 當(dāng)計(jì)算出的模糊測(cè)試100的覆蓋率不再提高時(shí),執(zhí)行作為后端處理的符號(hào)執(zhí)行處 理300,其中符號(hào)執(zhí)行處理300生成覆蓋與當(dāng)前測(cè)試用例的路徑不同的其它路徑的新的測(cè) 試用例400,然后將新的測(cè)試用例400反饋至模糊測(cè)試100,使得模糊測(cè)試100利用新的測(cè) 試用例400來(lái)驅(qū)動(dòng)被測(cè)試程序的執(zhí)行。
[0036] 具體地說(shuō),例如如圖2所示,符號(hào)執(zhí)行處理300可采用動(dòng)態(tài)符號(hào)執(zhí)行技術(shù),首先對(duì) 被測(cè)試程序的輸入進(jìn)行符號(hào)化處理,抓取當(dāng)前測(cè)試用例的執(zhí)行軌跡,使用中間語(yǔ)言對(duì)軌跡 文件進(jìn)行形式化描述,生成當(dāng)前路徑的約束條件,采用基于代的路徑搜索算法對(duì)路徑約束 條件取反,借助約束求解器求解路徑約束條件,最終生成覆蓋與當(dāng)前測(cè)試用例的路徑不同 的其它路徑的新的測(cè)試用例400 ;然后將新的測(cè)試用例400反饋至模糊測(cè)試100,使得模糊 測(cè)試100利用新的測(cè)試用例400來(lái)驅(qū)動(dòng)被測(cè)試程序的執(zhí)行。
[0037] 而且,在具體實(shí)施時(shí),可以重復(fù)執(zhí)行上述方法的過程。
[0038] 上述面向二進(jìn)制的混合模糊測(cè)試方法用于軟件安全性測(cè)試。
[0039] 為了更詳細(xì)地描述本發(fā)明的具體實(shí)施細(xì)節(jié),下面將詳細(xì)描述本發(fā)明的具體實(shí)施方 式及具體實(shí)例。
[0040] 混合模糊測(cè)試系統(tǒng)的偽代碼實(shí)現(xiàn)的實(shí)例如圖3所示。算法的基本流程為:算法輸 入為可執(zhí)行程序和本次測(cè)試的目標(biāo)(例如測(cè)試用例數(shù)量,覆蓋率),3-15行是循環(huán)的主體: 循環(huán)過程首先將覆蓋率提高標(biāo)志( C〇Verage_flag)設(shè)為真(3行);在執(zhí)行模糊測(cè)試的同 時(shí)監(jiān)測(cè)代碼覆蓋率情況,直到程序覆蓋的基本塊數(shù)量不再增加時(shí),將c 〇Verage_flag設(shè)為 假(4-10行);此時(shí)結(jié)束內(nèi)層循環(huán),轉(zhuǎn)為符號(hào)執(zhí)行,產(chǎn)生新的輸入,繼續(xù)執(zhí)行循環(huán)體(13-15 行)。
[0041] 傳統(tǒng)的模糊測(cè)試作為整個(gè)混合模糊測(cè)試系統(tǒng)的前端,采用基于變異或者基于生成 的測(cè)試用例生成方法,持續(xù)不斷地產(chǎn)生測(cè)試用例,將生成的測(cè)試用例注入到目標(biāo)程序中,驅(qū) 動(dòng)程序執(zhí)行。在目標(biāo)程序的執(zhí)行過程中,通過二進(jìn)制代碼覆蓋率監(jiān)測(cè)實(shí)時(shí)計(jì)算測(cè)試覆蓋率。 [0042] 混合模糊測(cè)試系統(tǒng)在代碼覆蓋率不再提高時(shí)轉(zhuǎn)入后端符號(hào)執(zhí)行,代碼覆蓋率不再 提高意即所覆蓋的基本塊的數(shù)量不再增加。符號(hào)執(zhí)行模塊作為混合模糊測(cè)試系統(tǒng)的后端, 主要任務(wù)是在程序執(zhí)行過程中收集路徑約束條件,通過一定的路徑搜索策略生成新的路徑 約束條件,最后使用特定的約束求解器求解生成覆蓋其他路徑的測(cè)試用例,以此提高模糊 測(cè)試的測(cè)試覆蓋率。在符號(hào)執(zhí)行過程中,對(duì)二進(jìn)制程序的分析,實(shí)質(zhì)上是對(duì)內(nèi)存單元和寄 存器分析。匯編指令雖然能表示出機(jī)器語(yǔ)言的所有操作,但并未將這些操作所產(chǎn)生的影響 (s ide effect)體現(xiàn)出來(lái),也就無(wú)法將標(biāo)志寄存器EFlags的狀態(tài)體現(xiàn)出來(lái)。程序執(zhí)行到 分支跳轉(zhuǎn)指令時(shí),會(huì)根據(jù)EFlags中的某些標(biāo)志位決定是否跳轉(zhuǎn),EFlags是一個(gè)32位寄存 器,由狀態(tài)標(biāo)志位,控制標(biāo)志位和系統(tǒng)標(biāo)志位組成。符號(hào)執(zhí)行系統(tǒng)收集路徑約束條件時(shí),主 要依據(jù)軌跡中的條件轉(zhuǎn)移指令(jcc),條件轉(zhuǎn)移指令依據(jù)EFlags的值決定執(zhí)行不同的分 支。而EFlags中的值又依賴于前面能影響EFlags寄存器的機(jī)器指令,因此在將該機(jī)器指 令轉(zhuǎn)換成匯編指令的同時(shí)將其對(duì)EFlags寄存器的影響表示出來(lái),就可以確定條件轉(zhuǎn)移指 令處該選擇的路徑。需采用某種中間語(yǔ)言(Intermediate Language)來(lái)表示指令及指令對(duì) 于EFlags寄存器的影響。
[0043] 符號(hào)執(zhí)行得到的路徑約束條件是由符號(hào)變量表示的表達(dá)式組成的函數(shù),為構(gòu)造新 的路徑約束條件,需采用一定的路徑搜索策略。本發(fā)明的具體實(shí)施例可以采用一種基于代 的路徑遍歷算法(Generat ion Search, GS),如圖4所示。GS算法的基本思想是:對(duì)于當(dāng) 前輸入所產(chǎn)生的路徑約束條件,依次對(duì)約束條件進(jìn)行取反操作,生成下一代路徑約束條件 集,重復(fù)該過程,即可遍歷程序中所有可執(zhí)行路徑。相比于深度遍歷和廣度遍歷每次產(chǎn)生一 個(gè)新的路徑,GS算法每次可產(chǎn)生多個(gè)新的路徑約束,從而求解產(chǎn)生多個(gè)新的輸入。符號(hào)執(zhí) 行模塊作為模糊測(cè)試系統(tǒng)的后端,是當(dāng)模糊測(cè)試在執(zhí)行過程中監(jiān)測(cè)到代碼覆蓋率不再提高 時(shí),轉(zhuǎn)為符號(hào)執(zhí)行,由符號(hào)執(zhí)行產(chǎn)生通往其他路徑的新輸入,并不是循環(huán)執(zhí)行符號(hào)執(zhí)行以搜 索程序中所有的路徑,因此本文在符號(hào)執(zhí)行過程中只產(chǎn)生第一代的新的約束條件,通過約 束求解器求解產(chǎn)生新的輸入。
[0044] 【具體實(shí)例】
[0045] 對(duì)Linux系統(tǒng)下的常用二進(jìn)制程序Is(以列表形式顯示目錄內(nèi)容)進(jìn)行安全性分 析。目標(biāo)程序Is的外部輸入由一系列選項(xiàng)參數(shù)及目標(biāo)路徑組成,采用基于變異的測(cè)試用例 生成策略隨機(jī)產(chǎn)生測(cè)試用例。使用生成的測(cè)試用例驅(qū)動(dòng)目標(biāo)程序Is運(yùn)行。
[0046] Is程序開始運(yùn)行,同時(shí)啟動(dòng)二進(jìn)制代碼覆蓋率監(jiān)測(cè)模塊。每個(gè)測(cè)試用例執(zhí)行完畢 后,分析該用例覆蓋的基本塊,將該測(cè)試用例加入到以往所有執(zhí)行過的測(cè)試用例中,構(gòu)成一 個(gè)新的測(cè)試用例集,然后計(jì)算整個(gè)測(cè)試用例集的代碼覆蓋率(也可以計(jì)算用例集覆蓋的不 同的基本塊數(shù)量)。
[0047] 當(dāng)二進(jìn)制代碼覆蓋率監(jiān)測(cè)模塊監(jiān)測(cè)到新執(zhí)行的測(cè)試用例無(wú)法提高整個(gè)測(cè)試用例 集的覆蓋率時(shí),暫停模糊測(cè)試的執(zhí)行過程,轉(zhuǎn)入后端的符號(hào)執(zhí)行。符號(hào)執(zhí)行模塊將最后一次 執(zhí)行的測(cè)試用例作為具體輸入,抓取Is程序執(zhí)行該測(cè)試用例的執(zhí)行軌跡。將軌跡文件通 過逆向工程提升為某種中間語(yǔ)言,收集本次執(zhí)行過程的路徑約束條件。約束條件關(guān)注條件 跳轉(zhuǎn)類指令,以Is軌跡文件的中間語(yǔ)言片段圖5為例,對(duì)于比較指令"cmp$Oxffffffff,% ecx",其含義是比較寄存器ecx的值與立即數(shù)Oxffffffff的大小,BIL顯式表達(dá)并計(jì)算出 該比較指令所影響到的EFlags寄存器中各個(gè)標(biāo)志位的變化,其中零標(biāo)志位ZF由于兩操作 數(shù)相減結(jié)果不為零置為"false"。下一條指令"je 0x000000009d4e403e"為條件轉(zhuǎn)移類指 令,當(dāng)EFf lags寄存器的ZF標(biāo)志位為1時(shí)跳轉(zhuǎn)到0x000000009d4e403e地址處繼續(xù)執(zhí)行,否 則順序執(zhí)行接下來(lái)的指令。在這里,由于ZF = 0,程序沒有發(fā)生跳轉(zhuǎn)。此時(shí)收集到的路徑 約束條件為"…八(ECX〈-1)八…",省略號(hào)表示其他約束條件,各個(gè)約束條件使用"且"連 接。
[0048] 為構(gòu)造新的路徑約束條件,從而探索到其他新的路徑,采用GS算法較為關(guān)鍵的一 步是對(duì)約束取反。對(duì)于圖4的約束條件進(jìn)行取反的結(jié)果為:"…八=(ECX〈-1)",(ECX〈-1) 之后的約束條件舍棄,之前的約束條件保留。由于新的約束條件是對(duì)原約束條件取反,使得 程序在"je 0X000000009d4e403e"指令處發(fā)生跳轉(zhuǎn),從而探索到程序中新的路徑。若本條 路徑上有n個(gè)約束條件,經(jīng)過一次符號(hào)執(zhí)行后采用GS算法得到第一代的結(jié)果,就可以構(gòu)造 n個(gè)新的路徑約束條件,借助約束求解器進(jìn)行可滿足性判斷及約束求解,可以生成覆蓋特定 路徑的具體的測(cè)試用例。
[0049] 將經(jīng)過符號(hào)執(zhí)行生成的測(cè)試用例注入到Is程序中,同樣地進(jìn)行代碼覆蓋率的監(jiān) 測(cè)和計(jì)算。最后,繼續(xù)執(zhí)行模糊測(cè)試。重復(fù)該過程。直到達(dá)到Is程序的測(cè)試需求(如要求 達(dá)到的覆蓋率、執(zhí)行的測(cè)試用例數(shù))時(shí),終止混合模糊測(cè)試的執(zhí)行。
[0050] 可以理解的是,雖然本發(fā)明已以較佳實(shí)施例披露如上,然而上述實(shí)施例并非用以 限定本發(fā)明。對(duì)于任何熟悉本領(lǐng)域的技術(shù)人員而言,在不脫離本發(fā)明技術(shù)方案范圍情況下, 都可利用上述揭示的技術(shù)內(nèi)容對(duì)本發(fā)明技術(shù)方案作出許多可能的變動(dòng)和修飾,或修改為等 同變化的等效實(shí)施例。因此,凡是未脫離本發(fā)明技術(shù)方案的內(nèi)容,依據(jù)本發(fā)明的技術(shù)實(shí)質(zhì)對(duì) 以上實(shí)施例所做的任何簡(jiǎn)單修改、等同變化及修飾,均仍屬于本發(fā)明技術(shù)方案保護(hù)的范圍 內(nèi)。
【權(quán)利要求】
1. 一種面向二進(jìn)制的混合模糊測(cè)試方法,其特征在于包括: 采用模糊測(cè)試作為前端處理,其中利用測(cè)試用例來(lái)驅(qū)動(dòng)被測(cè)試程序的執(zhí)行; 采用二進(jìn)制代碼覆蓋率監(jiān)測(cè)處理作為中間層處理,其中在被測(cè)試程序的執(zhí)行過程中, 記錄被測(cè)試程序覆蓋的基本塊,由此計(jì)算模糊測(cè)試的覆蓋率; 當(dāng)計(jì)算出的模糊測(cè)試的覆蓋率不再提高時(shí),執(zhí)行作為后端處理的符號(hào)執(zhí)行處理,在符 號(hào)執(zhí)行處理中生成覆蓋與當(dāng)前測(cè)試用例的路徑不同的其它路徑的新的測(cè)試用例,然后將新 的測(cè)試用例反饋至模糊測(cè)試,使得模糊測(cè)試?yán)眯碌臏y(cè)試用例來(lái)驅(qū)動(dòng)被測(cè)試程序的執(zhí)行。
2. 根據(jù)權(quán)利要求1所述的面向二進(jìn)制的混合模糊測(cè)試方法,其特征在于,符號(hào)執(zhí)行處 理采用動(dòng)態(tài)符號(hào)執(zhí)行技術(shù)。
3. 根據(jù)權(quán)利要求1或2所述的面向二進(jìn)制的混合模糊測(cè)試方法,其特征在于,在符號(hào)執(zhí) 行處理中,對(duì)被測(cè)試程序的輸入進(jìn)行符號(hào)化處理,抓取當(dāng)前測(cè)試用例的執(zhí)行軌跡,使用中間 語(yǔ)言對(duì)軌跡文件進(jìn)行形式化描述,生成當(dāng)前路徑的約束條件,采用基于代的路徑搜索算法 對(duì)路徑約束條件取反,借助約束求解器求解路徑約束條件,最終生成覆蓋與當(dāng)前測(cè)試用例 的路徑不同的其它路徑的新的測(cè)試用例。
4. 根據(jù)權(quán)利要求1或2所述的面向二進(jìn)制的混合模糊測(cè)試方法,其特征在于,模糊測(cè)試 在接收到從符號(hào)執(zhí)行處理反饋來(lái)的新的測(cè)試用例之前,利用基于變異的策略生成的測(cè)試用 例來(lái)驅(qū)動(dòng)被測(cè)試程序的執(zhí)行。
5. 根據(jù)權(quán)利要求1或2所述的面向二進(jìn)制的混合模糊測(cè)試方法,其特征在于,所述面向 二進(jìn)制的混合模糊測(cè)試方法用于軟件安全性測(cè)試。
【文檔編號(hào)】G06F11/36GK104375942SQ201410758900
【公開日】2015年2月25日 申請(qǐng)日期:2014年12月11日 優(yōu)先權(quán)日:2014年12月11日
【發(fā)明者】董芳泉, 董超群, 張慧, 張垚, 楊書軒, 程來(lái)旺 申請(qǐng)人:無(wú)錫江南計(jì)算技術(shù)研究所
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
莆田市| 贵溪市| 蓝山县| 民丰县| 浠水县| 宁安市| 龙州县| 兴山县| 长丰县| 富川| 铁岭县| 石狮市| 屏东县| 万荣县| 巨野县| 满城县| 宝山区| 泊头市| 阳朔县| 西乌珠穆沁旗| 乌恰县| 台北市| 通化县| 梨树县| 商南县| 商水县| 陆河县| 绥德县| 确山县| 盘山县| 莱州市| 信宜市| 黑龙江省| 卢湾区| 马尔康县| 巴南区| 蓝田县| 新昌县| 涡阳县| 昭平县| 达尔|