• 
    <ul id="o6k0g"></ul>
    <ul id="o6k0g"></ul>

    一種符號執(zhí)行方法、裝置及系統(tǒng)制造方法及圖紙

    技術(shù)編號:8532693 閱讀:283 留言:0更新日期:2013-04-04 15:37
    本發(fā)明專利技術(shù)公開了一種符號執(zhí)行方法、裝置及系統(tǒng),主要內(nèi)容包括:應(yīng)用于包含負(fù)載均衡器和至少兩個(gè)控制器的系統(tǒng)中,控制器執(zhí)行待測試程序中的某條路徑的同時(shí)將待測試程序中與該路徑相關(guān)的路徑進(jìn)行分解,生成路徑種子,并將生成的路徑種子發(fā)送至負(fù)載均衡器,由負(fù)載均衡器將路徑種子分發(fā)給多個(gè)空閑的控制器。通過本發(fā)明專利技術(shù)實(shí)施例的方案,一方面由于采用了分布式并行方式對待測試程序進(jìn)行符號執(zhí)行分析,有效解決了基于生成的符號執(zhí)行中遇到的路徑爆炸問題;另一方面,負(fù)載均衡器僅需保存路徑種子,占用的內(nèi)存資源較少,且每個(gè)分布式控制器在執(zhí)行完本次的符號執(zhí)行任務(wù)后就釋放了占用的內(nèi)存資源,因此有效地解決了資源耗盡問題。

    【技術(shù)實(shí)現(xiàn)步驟摘要】

    本專利技術(shù)涉及計(jì)算機(jī)軟件安全領(lǐng)域,尤其涉及一種符號執(zhí)行方法、裝置及系統(tǒng)
    技術(shù)介紹
    符號執(zhí)行是通過使用符號變量取代輸入中的具體值來模擬程序執(zhí)行的程序分析方法(即用靜態(tài)分析的形式完成動(dòng)態(tài)分析的工作)。該方法既具有動(dòng)態(tài)分析方法的可靠性(路徑敏感,無誤報(bào)),又具有靜態(tài)分析方法的完備性(可保證覆蓋率,理論上有可能做到無漏報(bào)),在軟件漏洞檢測中正得到越來越多的關(guān)注。符號執(zhí)行也是一種形式化和自動(dòng)化的軟件分析技術(shù),其核心思想是用符號表示程序的輸入數(shù)據(jù),并將程序的運(yùn)算過程逐指令或逐語句地轉(zhuǎn)換為數(shù)學(xué)表達(dá)式,再在程序控制流圖的基礎(chǔ)上生成符號執(zhí)行樹,并為每一條路徑建立一系列的以輸入數(shù)據(jù)為變量的表達(dá)式。通常,可以使用一個(gè)三元組〈指令指針,路徑函數(shù),路徑條件〉來表示符號執(zhí)行過程。其中,指令指針用于標(biāo)識當(dāng)前被分析的指令,路徑函數(shù)表示程序路徑中不同點(diǎn)處變量的值是變量初始值的函數(shù),路徑條件是程序路徑在各分支點(diǎn)滿足的分支條件的合取。路徑條件是約束在符號執(zhí)行中的一種具體表現(xiàn)形式。約束通常是一組等式或不等式的合取,而約束求解的目的是得到等式或不等式組的可滿足解。根據(jù)獲取約束(路徑條件和分支條件)的不同方法,可將當(dāng)前的符號執(zhí)行方法劃分為基于變異和基于生成兩類。其中,基于生成的符號執(zhí)行依次解釋程序中的每一條指令。具體地說,對于非分支指令,其通常需要更新路徑函數(shù)(通過函數(shù)的復(fù)合實(shí)現(xiàn));而對于分支指令,其可能需要?jiǎng)?chuàng)建新的符號進(jìn)程(執(zhí)行一條新的路徑)以探測每個(gè)分支目標(biāo),并將原路徑條件與每個(gè)分支目標(biāo)滿足的分支條件取合取作為每個(gè)新路徑的路徑條件。當(dāng)有多個(gè)符號進(jìn)程時(shí),按照一定的路徑選擇策略(例如先創(chuàng)建的符號進(jìn)程先分析)依次選擇每一個(gè)符號進(jìn)程進(jìn)行分析。當(dāng)某個(gè)符號進(jìn)程結(jié)束時(shí),調(diào)用約束求解器求解路徑條件以獲取一個(gè)具體輸入向量,該向量可驅(qū)使程序執(zhí)行該路徑。當(dāng)所有符號進(jìn)程結(jié)束時(shí),整個(gè)符號執(zhí)行過程結(jié)束。以示例I所示的程序片段為例,下面對現(xiàn)有技術(shù)中基于生成的符號執(zhí)行處理進(jìn)行說明 01if(a < 100)%判斷a是否小于100; 02printf(a<100);%在&小于 100時(shí),打印;03else if(b < 100)%在3不小于100時(shí),判斷b是否小于100; 04priritf(a>-100&&b<100); %在&不小于丨00且b<IOO時(shí),打印;05else06printf(0 && a>=i00&&b>=100); %否則,a不小干 100且b不小于 100: -j 叩07end:示例 I第一步在行01,查詢(a〈100)在當(dāng)前路徑條件(true)下的恒真與恒假性恒真則前進(jìn)到行02,恒假則前進(jìn)到行03,此處即非恒真又非恒假,因此創(chuàng)建一個(gè)新的符號進(jìn)程(#1)以同時(shí)分析每條路徑,原符號進(jìn)程(#0)前進(jìn)到行02,并更新路徑條件為(a〈100),新符號進(jìn)程(#1)前進(jìn)到行03,并更新路徑條件為i(a〈100),所述原符號進(jìn)程以及新符號進(jìn)程是邏輯上的虛擬進(jìn)程,并不是實(shí)際的一個(gè)進(jìn)程。第二步按照先創(chuàng)建的符號進(jìn)程先分析策略,分析#0符號進(jìn)程,即解釋行02,然后轉(zhuǎn)向行07,求解路徑條件(a〈100)得測試用例(0,0);第三步按照先創(chuàng)建的符號進(jìn)程先分析策略,分析#1符號進(jìn)程,即解釋行03 ;第四步在行03,查詢(KlOO)在當(dāng)前路徑條件(](a〈100))下的恒真與恒假性恒真則前進(jìn)到行04,恒假則前進(jìn)到 行05,此處即非恒真又非恒假,因此創(chuàng)建一個(gè)新的符號進(jìn)程以同時(shí)分析每條路徑,原符號進(jìn)程(#1)前進(jìn)到行04,并更新路徑條件為i(a〈100)八(b〈 100),新符號進(jìn)程(#2)前進(jìn)到行05,并更新路徑條件為I(a〈 100) A^(b<100);第五步按照先創(chuàng)建的符號進(jìn)程先分析策略,分析#1符號進(jìn)程,即解釋行04,然后轉(zhuǎn)向行07,求解路徑條件q(a〈100) A(KlOO)得測試用例(100,0);第六步按照先創(chuàng)建的符號進(jìn)程先分析策略,分析#2符號進(jìn)程,即解釋行05,然后轉(zhuǎn)向行06-07,求解路徑條件q(a〈100) Ai(KlOO)得測試用例(100,100)。目前,基于符號執(zhí)行的程序分析方法在理論上已經(jīng)基本成熟,而阻止其實(shí)用化的最主要問題是路徑爆炸。理論上,符號執(zhí)行技術(shù)能夠遍歷程序中的每一條執(zhí)行路徑并生成測試用例。實(shí)際上,程序中的路徑數(shù)目隨著程序中分支的數(shù)目近似指數(shù)增長,在出現(xiàn)循環(huán)的情況下,路徑數(shù)目的增長更加迅速。由于需要探測的路徑是如此之多,這就會(huì)產(chǎn)生的路徑爆炸問題。在基于生成的符號執(zhí)行中,與路徑爆炸息息相關(guān)的另一個(gè)問題是資源耗盡,這是因?yàn)樯鲜龌谏傻姆枅?zhí)行過程的所有符號進(jìn)程(邏輯上的進(jìn)程,也可稱為虛擬進(jìn)程)均在單個(gè)符號執(zhí)行器進(jìn)程中進(jìn)行,各符號進(jìn)程執(zhí)行過程通常需要在內(nèi)存中存儲與對應(yīng)路經(jīng)相關(guān)的數(shù)據(jù)信息,隨著需要分析的路徑數(shù)量增多,需要的內(nèi)存空間也越來越大,最終不可避免出現(xiàn)資源耗盡。
    技術(shù)實(shí)現(xiàn)思路
    本專利技術(shù)實(shí)施例提供了一種符號執(zhí)行方法、裝置及系統(tǒng),用以解決現(xiàn)有的符號執(zhí)行技術(shù)存在的路徑爆炸問題,以及使用單個(gè)符號執(zhí)行器進(jìn)程而引起的資源耗盡問題。本專利技術(shù)實(shí)施例提供的具體技術(shù)方案如下一種符號執(zhí)行方法,應(yīng)用于包含負(fù)載均衡器和至少兩個(gè)控制器的系統(tǒng)中,所述方法包括負(fù)載均衡器向選擇的一控制器發(fā)送第一指示指令;接收到第一指示指令的控制器,按照設(shè)定的執(zhí)行策略確定待測試程序中的第一條路徑,且在確定第一條路徑過程中在每一條最終引起路徑分叉的分支指令處生成相應(yīng)的路徑種子;將生成的路徑種子發(fā)送至負(fù)載均衡器,并收集該第一條路徑上的路徑條件,獲得滿足所述第一條路徑上的路徑條件的測試用例,向負(fù)載均衡器發(fā)送進(jìn)入空閑狀態(tài)的通知,其中,所述路徑種子是由設(shè)定個(gè)數(shù)的元素組成的順序字節(jié)流,所述元素是表示程序路徑中依次遇到的每個(gè)分支指令的取向;負(fù)載均衡器接收路徑種子后,向至少一個(gè)空閑的控制器分別發(fā)送含有路徑種子的第二指示指令,且每個(gè)空閑的控制器對應(yīng)的第二指示指令中的路徑種子不同;收到第二指示指令的控制器,確定所述第二指示指令中的路徑種子所表示的第一段路徑,在該第一段路徑的基礎(chǔ)上按照設(shè)定的執(zhí)行策略確定能與第一段路徑結(jié)合構(gòu)成第N條路徑的第二段路徑,并在確定第二段路徑過程中在每一條最終引起路徑分叉的分支指令處生成相應(yīng)的路徑種子,將生成的路徑種子發(fā)送至負(fù)載均衡器,收集該第N條路徑上的路徑條件,獲得滿足所述第N條路徑上的路徑條件的測試用例,向負(fù)載均衡器發(fā)送進(jìn)入空閑狀態(tài)的通知,所述N為大于I的正整數(shù)。一種符號執(zhí)行系統(tǒng),所述符號執(zhí)行系統(tǒng)包括負(fù)載均衡器和至少兩個(gè)控制器;所述負(fù)載均衡器,用于向選擇的一控制器發(fā)送第一指示指令,接收來自控制器的路徑種子和進(jìn)入空閑狀態(tài)通知,向至少一個(gè)空閑的控制器分別發(fā)送含有路徑種子的第二指示指令,且每個(gè)空閑的控制器對應(yīng)的第二指示指令中的路徑種子不同;所述控制器,用于在接收到第一指示指令時(shí),按照設(shè)定的執(zhí)行策略確定待測試程序中的第一條路徑,且在確定第一條路徑過程中在每一條最終引起路徑分叉的分支指令處生成相應(yīng)的路徑種子,收集該第一條路徑上的路徑條件,獲得滿足所述第一條路徑上的路徑條件的測試用例,其中,所述路徑種子是由設(shè)定個(gè)數(shù)的元素組成的順序字節(jié)流,所述元素是表示程序路徑中依次遇到的每本文檔來自技高網(wǎng)
    ...

    【技術(shù)保護(hù)點(diǎn)】
    一種符號執(zhí)行方法,其特征在于,應(yīng)用于包含負(fù)載均衡器和至少兩個(gè)控制器的系統(tǒng)中,所述方法包括:負(fù)載均衡器向選擇的一控制器發(fā)送第一指示指令;接收到第一指示指令的控制器,按照設(shè)定的執(zhí)行策略確定待測試程序中的第一條路徑,且在確定第一條路徑的過程中在每一條最終引起路徑分叉的分支指令處生成相應(yīng)的路徑種子;將生成的路徑種子發(fā)送至負(fù)載均衡器,并收集該第一條路徑上的路徑條件,獲得滿足所述第一條路徑上的路徑條件的測試用例,向負(fù)載均衡器發(fā)送進(jìn)入空閑狀態(tài)的通知,其中,所述路徑種子是由設(shè)定個(gè)數(shù)的元素組成的順序字節(jié)流,所述元素是表示程序路徑中依次遇到的每個(gè)分支指令的取向;負(fù)載均衡器接收路徑種子后,向至少一個(gè)空閑的控制器分別發(fā)送含有路徑種子的第二指示指令,且每個(gè)空閑的控制器對應(yīng)的第二指示指令中的路徑種子不同;收到第二指示指令的控制器,確定所述第二指示指令中的路徑種子所表示的第一段路徑,在該第一段路徑的基礎(chǔ)上按照設(shè)定的執(zhí)行策略確定能與第一段路徑結(jié)合構(gòu)成第N條路徑的第二段路徑,并在確定第二段路徑過程中在每一條最終引起路徑分叉的分支指令處生成相應(yīng)的路徑種子,將生成的路徑種子發(fā)送至負(fù)載均衡器,收集該第N條路徑上的路徑條件,獲得滿足所述第N條路徑上的路徑條件的測試用例,向負(fù)載均衡器發(fā)送進(jìn)入空閑狀態(tài)的通知,所述N為大于1的正整數(shù)。...

    【技術(shù)特征摘要】
    1.一種符號執(zhí)行方法,其特征在于,應(yīng)用于包含負(fù)載均衡器和至少兩個(gè)控制器的系統(tǒng)中,所述方法包括 負(fù)載均衡器向選擇的一控制器發(fā)送第一指示指令; 接收到第一指示指令的控制器,按照設(shè)定的執(zhí)行策略確定待測試程序中的第一條路徑,且在確定第一條路徑的過程中在每一條最終引起路徑分叉的分支指令處生成相應(yīng)的路徑種子;將生成的路徑種子發(fā)送至負(fù)載均衡器,并收集該第一條路徑上的路徑條件,獲得滿足所述第一條路徑上的路徑條件的測試用例,向負(fù)載均衡器發(fā)送進(jìn)入空閑狀態(tài)的通知,其中,所述路徑種子是由設(shè)定個(gè)數(shù)的元素組成的順序字節(jié)流,所述元素是表示程序路徑中依次遇到的每個(gè)分支指令的取向; 負(fù)載均衡器接收路徑種子后,向至少一個(gè)空閑的控制器分別發(fā)送含有路徑種子的第二指示指令,且每個(gè)空閑的控制器對應(yīng)的第二指示指令中的路徑種子不同; 收到第二指示指令的控制器,確定所述第二指示指令中的路徑種子所表示的第一段路徑,在該第一段路徑的基礎(chǔ)上按照設(shè)定的執(zhí)行策略確定能與第一段路徑結(jié)合構(gòu)成第N條路徑的第二段路徑,并在確定第二段路徑過程中在每一條最終引起路徑分叉的分支指令處生成相應(yīng)的路徑種子,將生成的路徑種子發(fā)送至負(fù)載均衡器,收集該第N條路徑上的路徑條件,獲得滿足所述第N條路徑上的路徑條件的測試用例,向負(fù)載均衡器發(fā)送進(jìn)入空閑狀態(tài)的通知,所述N為大于I的正整數(shù)。2.如權(quán)利要求1所述的方法,其特征在于,在待測試程序中存在多路分支指令時(shí),在所述按照設(shè)定的執(zhí)行策略確定待測試程序中的第一條路徑之前,所述方法還包括 將多路分支指令轉(zhuǎn)換為多條二路分支指令。3.如權(quán)利要求2所述的方法,其特征在于,所述在確定第一條路徑過程中在每一條最終引起路徑分叉的分支指令處生成相應(yīng)的路徑種子具體包括 確定該第一條路徑中起始分支指令到該第一條路徑中的每一條最終引起路徑分叉的分支指令前的路徑對應(yīng)的路徑種子; 在確定的該路徑種子后添加一個(gè)表示與第一條路徑在該最終引起路徑分叉的分支指令的取向相反的元素,得到一個(gè)新的路徑種子,將該新的路徑種子作為生成的路徑種子; 所述在確定第二段路徑過程中在每一條最終引起路徑分叉的分支指令處生成相應(yīng)的路徑種子,具體包括 確定所述第N條路徑中起始分支指令到該第二段路徑中的每一條最終引起路徑分叉的分支指令前的路徑對應(yīng)的路徑種子; 在確定的該路徑種子后添加一個(gè)表示與第N條路徑在該最終引起路徑分叉的分支指令的取向相反的元素,得到一個(gè)新的路徑種子,將該新的路徑種子作為生成的路徑種子。4.如權(quán)利要求1所述的方法,其特征在于,所述負(fù)載均衡器包括一個(gè)主線程、一個(gè)消費(fèi)者線程、一個(gè)生產(chǎn)者線程和一個(gè)任務(wù)列表,所述主線程作為消費(fèi)者線程和生產(chǎn)者線程的守護(hù)線程,對消費(fèi)者線程和生產(chǎn)者線程進(jìn)行管理; 所述將生成的路徑種子發(fā)送至負(fù)載均衡器具體為 將生成的路徑種子發(fā)送至生產(chǎn)者線程,該路徑種子被生產(chǎn)者線程存放至任務(wù)列表; 所述負(fù)載均衡器接收路徑種子后,向至少一個(gè)空閑的控制器分別發(fā)送含有路徑種子的第二指示指令具體為消費(fèi)者線程從任務(wù)列表中取出路徑種子,并向至少一個(gè)空閑的控制器分別發(fā)送含有該路徑種子的第二指示指令。5.如權(quán)利要求1所述的方法,其特征在于,所述負(fù)載均衡器和至少兩個(gè)控制器運(yùn)行在不同的主機(jī)內(nèi)。6.—種符號執(zhí)行系統(tǒng),其特征在于,所述符號執(zhí)行系統(tǒng)包括負(fù)載均衡器和至少兩個(gè)控制器; 所述負(fù)載均衡器,用于向選擇的一控制器發(fā)送第一指示指令,接收來自控制器的路徑種子和進(jìn)入空閑狀態(tài)通知,向至少一個(gè)空閑的控制器分別發(fā)送含有路徑種子的第二指示指令,且每個(gè)空閑的控制器對應(yīng)的第二指示指令中的路徑種子不同; 所述控制器,用于在接收到第一指示指令時(shí),按照設(shè)定的執(zhí)行策略確定待測試程序中的第一條路徑,且在確定第一條路徑過程中在每一條最終引起路徑分叉的分支指令處生成相應(yīng)的路徑種子,收集該第一條路徑上的路徑條件,獲得滿足所述第一條路徑上的路徑條件的測試用例,其中,所述路徑種子是由設(shè)定個(gè)數(shù)的元素組成的順序字節(jié)流,所述元素是表示程序路徑中依次遇到的每個(gè)分支指令的取向;在接收到第二指示指令時(shí),確定所述第二指示指令中的路徑種子所表示的第一段路徑,在該第一段路徑的基礎(chǔ)上按照設(shè)定的執(zhí)行策略確定能與第一段路徑結(jié)合構(gòu)成第N條路徑的第二段路徑,并在確定第二段路徑過程中在每一條最終引起路徑分叉的分支指令處生成相應(yīng)的路徑種子,收集該第N條路徑上的路徑條件,獲得滿足所述第N條路徑上的路徑條件的測試用例,所述N為大于I的正整數(shù)。7.如權(quán)利要求6所述的符號執(zhí)行系統(tǒng),其特征在于, 所述控制器,具體用于在待測試程序中存在多路分支指令時(shí),在所述按照設(shè)定的執(zhí)行策略確定待測試程序中的第一條路徑之前,將多路分支指令轉(zhuǎn)換為多條二路分支指令。8.如權(quán)利要求7所述的符號執(zhí)行系統(tǒng),其特征在于, 所述控制器,具體用于在接收到第一指示指令時(shí)...

    【專利技術(shù)屬性】
    技術(shù)研發(fā)人員:忽朝儉曲富平左磊趙糧薛一波
    申請(專利權(quán))人:北京神州綠盟信息安全科技股份有限公司北京神州綠盟科技有限公司
    類型:發(fā)明
    國別省市:

    網(wǎng)友詢問留言 已有0條評論
    • 還沒有人留言評論。發(fā)表了對其他瀏覽者有用的留言會(huì)獲得科技券。

    1
    主站蜘蛛池模板: 亚洲av无码专区在线观看亚| 在线a亚洲v天堂网2019无码| 精品无码AV无码免费专区| 免费A级毛片无码A∨免费| 伊人天堂av无码av日韩av| 亚洲人成国产精品无码| 亚洲精品无码专区在线在线播放| 人妻精品久久无码专区精东影业| 人妻丰满熟妇AV无码区免| 国产精品无码午夜福利| 精品无码国产一区二区三区麻豆| 国产丝袜无码一区二区三区视频| 亚洲AV无码资源在线观看| 无码中文字幕乱在线观看| 国产精品无码久久久久| 黑人巨大无码中文字幕无码| 久久久久久亚洲av成人无码国产 | 无码人妻少妇伦在线电影| 亚洲成AV人片在线播放无码| 人妻无码久久精品人妻| 久久亚洲AV成人无码| 中文字幕无码无码专区| 国产日韩精品无码区免费专区国产 | 亚洲成av人片不卡无码| 国产a级理论片无码老男人| 亚洲av无码专区在线观看素人| 日韩爆乳一区二区无码| 无码成人一区二区| 一本一道av中文字幕无码| 亚洲国产精品无码久久青草 | 无码精品人妻一区二区三区中| 久久久精品无码专区不卡| 亚洲成av人片在线观看天堂无码 | 黄A无码片内射无码视频| 国产成人无码AV片在线观看| 一本一道中文字幕无码东京热| 亚洲热妇无码AV在线播放| 中文字幕无码第1页| 国产成人无码精品久久久露脸 | 人妻无码视频一区二区三区| 精品无码久久久久久尤物|