• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于程序局部性引導的有界模型檢測優(yōu)化方法

    2018-04-19 05:42:08王舜杜曄韓臻劉吉強
    通信學報 2018年3期
    關鍵詞:局部性代碼程序

    王舜,杜曄,韓臻,劉吉強

    ?

    基于程序局部性引導的有界模型檢測優(yōu)化方法

    王舜,杜曄,韓臻,劉吉強

    (北京交通大學智能交通數(shù)據(jù)安全與隱私保護技術北京市重點實驗室,北京 100044)

    基于多種模型檢測方法組合的復合檢測方式是當前軟件模型檢測領域開展研究的熱點之一。在當前的研究中,提高檢測的規(guī)模和檢測的對象復雜程度的關鍵在于如何有效處理抽象的擴張和收縮。證明通過對程序模式或驗證信息的利用可以加快狀態(tài)空間的探索速度。面向有界模型檢測(BMC)加速方法展開研究,使用程序中額外的信息和知識對其處理以協(xié)助檢測器刪除冗余和無效的狀態(tài)。在對程序局部性進行定義的基礎上,對其加速性進行討論,提出一種加速有界檢測的方法和一種改進策略,對算法進行了詳細描述,并通過實驗驗證了方法在檢測效率和性能上的優(yōu)越性。

    模型檢測;BMC;軟件檢測;局部性;優(yōu)化

    1 引言

    軟件模型檢測是提高軟件可靠性的一種非常重要的方法。在工業(yè)環(huán)境中,一些對于軟件可靠性要求高的安全苛求系統(tǒng)已大量地使用這種方法。軟件模型檢測是基于程序的形式化理論發(fā)展出的一種技術,它的基本思想是對當前需要檢測程序的整體狀態(tài)空間進行遍歷,從而尋找其中是否包含問題狀態(tài)。對于使用基本的遍歷思想來檢測程序的方法來講,狀態(tài)空間爆炸使它在很小的程序上都會耗盡其所有的運算和存儲資源,因此,這種檢測方法并不具備成規(guī)模的實用性。

    針對上述問題,現(xiàn)代的軟件模型檢測方法使用了多重的優(yōu)化策略來緩解,這些策略可以按照枚舉型和推理型來進行分類[1,2],2種類型分別體現(xiàn)了具象和抽象的邏輯思想。而隨著研究的進展和深入,很多新的研究使用了同時綜合2種方法特征的混合策略。特別是隨著近年來各種各樣的方法被陸續(xù)提出,研究者逐漸發(fā)現(xiàn),區(qū)分和指導各種方法的根本不同在于如何使用源代碼中的信息來引導狀態(tài)空間的搜索。當然與之相對地,還可以通過表象對軟件模型檢測的方法進行分類,例如,模型檢測算法是否有界。

    有界模型檢測器(BMC)是一種常見的和使用廣泛的軟件模型檢測工具。在近幾年的相關研究中,已經(jīng)有不少基于其思想的成熟的實現(xiàn),如文獻[3~7]。使用有界模型檢測器對程序進行檢測的實踐可能會因為使用了不合適的參數(shù)而導致檢測無法完成或檢測失敗。同時,由于其原理的制約,這種檢測方法也無法直接對整個程序的狀態(tài)空間進行檢測。從這個角度來講,阻礙有界模型檢測對大規(guī)模代碼進行檢測的障礙之一在于缺乏一種有效的將代碼分解為可以檢測的片段并且自動引導檢測器來進行檢驗的方法。

    SAT求解問題是另一個更加基礎的研究領域,需要求解的SAT問題同樣是類似的會引起狀態(tài)爆炸的NP完全問題。在這個研究領域中,前向—后向搜索是常用的加速求解的方法之一,而最為經(jīng)典的SAT前向—后向搜索算法的實現(xiàn)則是DPLL算法[8]。這種算法的核心思想是,在遍歷搜索時記憶和學習關于邏輯樹的結構信息,并使用這個信息來指導新一輪的搜索。在整個SAT求解器的研究領域中,大量的優(yōu)化方法都采用了類似的思路為指導,也就是使用在有限的搜索中發(fā)現(xiàn)的信息來縮減后續(xù)的搜索樹,或選擇最優(yōu)的后續(xù)搜索?;谙闰炐畔⒌膯l(fā)式算法[9~12]是另一類常用的優(yōu)化方法。與前一類方法相比,它最大的不同是并不能保證總是有效。但是相對地,啟發(fā)式算法在狀態(tài)空間的規(guī)模和邏輯復雜度快速增長的情況下是一種更有潛力的方法。

    最后,程序在設計和運行中具有一個非常本質和重要的特征,即程序的局部性。在調研中,當前模型檢測領域并沒有相關研究聚焦在程序的局部性和模型檢測的優(yōu)化結合以及程序的局部性對模型檢測加速的可能性上。因此,本文主要研究聚焦以上層面。首先,本文給出了一種可能的程序局部性形式化定義,然后,設計了一個策略來對程序進行劃分,并提出了一種算法自動化地使用這種劃分來指導有界模型檢測器的自動運行,最后,通過實驗驗證了本文方法在加速有界模型檢測器對程序的檢測上具有較為明顯作用。

    2 相關工作

    近年來,大量的研究關注和聚焦了模型檢測和模型檢測的相關算法和應用。其中,基于邏輯的枚舉和基于邏輯的推理是2種重要的類型。在這些研究中,最為活躍和引人注目的部分集中在以下2個方向:1) 基于推理的模型檢測方法,包括基于符號演算的模型檢測方法;2) 不同模型檢測方法的可組裝性的研究。

    其中,第一類研究方向使用歸結原理和插值規(guī)則通過定理證明的方法[13~15]來進行模型檢測。另外,還有一些研究設計并實現(xiàn)了一類框架[16~19],并在這類框架下實現(xiàn)了基于前向—后向搜索的遍歷式模型檢測方法。這類方法的基本思想是將目標狀態(tài)空間簡化為一類抽象狀態(tài)空間,并在其上進行檢測。在這類框架之上,文獻[20,21]設計了一種懶惰方法,它是針對狀態(tài)展開的優(yōu)化,使算法在展開狀態(tài)時不需要一次性完全展開,而是按照需要展開必要的層數(shù),從而避免狀態(tài)空間一次性展開過大。最后,文獻[22~24]的研究則著眼于設計和實施一套全新的軟件模型檢測方法。

    第二類研究方向中包含了一類構建通用的模型檢測方法基礎的理論以及其相關的實現(xiàn),它們都基于一套可以嵌入和組合大量不同方法的基礎框架之上。文獻[25~30]是其中非常重要的組成部分。它們建立了一個稱為CPA的模型檢測框架。這個框架實際上是一個基于格的狀態(tài)抽象,在這個抽象之上,使用融合、加強以及停止運算符來將各種算法組合在一起。除了這些工作以外,文獻[31]使用了另一種上近似和下近似結合的方法來對不同的模型檢測方法進行組合。

    本文方法是一類組合方法,但是其手段并非直接組合已有的方法,而是結合第一類的研究和第二類的研究,提出一種基于新的局部性啟發(fā)式檢測加速方法。

    3 基本模型

    3.1 程序模型

    為了簡化問題的分析和討論,本文使用一個簡單程序模型來表示需要檢測輸入的程序抽象。這個模型是一個基于簡單命令式程序語言的擴展,使用這個模型可以描述C語言的邏輯結構,而其他的細節(jié)則直接交給BMC工具處理即可。

    一個簡單命令式程序包含了一系列的操作符,這些操作符包括:賦值操作符、假設操作符、整形變量。簡單命令式程序的描述細節(jié)可以參考文獻[1]。這里對簡單命令式程序進行一個擴展,使其可以滿足對本文形式化描述的要求,其包含了一些額外的程序結構:函數(shù)、分支、循環(huán)。它可以通過分支循環(huán)展開和函數(shù)嵌入的方式很容易地轉換回經(jīng)典的簡單命令式程序。實際上,可以通過這個擴展給基礎定義添加一些高級結構。

    一個帶條件語句的命令式程序可以轉換為一個簡單命令式程序,這個轉換可以通過合取條件變量(以中的元素為變量的布爾表達式)與賦值表達式來獲得。

    循環(huán)語句的處理比條件語句要稍微復雜一些。首先對需要轉換的循環(huán)語句設定一個展開層數(shù)限制,然后展開這個循環(huán)為順序程序。如果循環(huán)在到達限制前沒有展開完畢,則停止在展開限制處(圖1為一個簡單的例子)。這個展開實際上是一種懶惰(lazy)的循環(huán)展開方式。使用這種方法可以在一定程度上阻止可能的狀態(tài)空間發(fā)生爆炸問題。而在循環(huán)展開以后,可能會遺留下一個未被展開的循環(huán)體,這個尾巴可以被表示為一個特殊的節(jié)點,它被標記為尚未被轉換和翻譯。這也是一個在懶惰策略中常用的技巧。函數(shù)的翻譯和循環(huán)的翻譯類似,但是更為簡單直接。一個函數(shù)既可以被展開成一段平坦的程序片段,同時也可以不翻譯。在形式化的語言表達中,可以采用一個函數(shù)集合去統(tǒng)一地表示2種翻譯方法。

    上面所述的描述方式可以表示一個具體的程序。這個具體的程序模型描述了一個程序精確的運行特性,但是它的狀態(tài)集通常都十分巨大甚至難以使用有限的描述來表示。如果使用這個較為接近底層的模型去指導一個狀態(tài)空間的搜索,難免會遇到困難和失敗。因此,需要一個更加抽象的模型去描述一個更小以及更有限的狀態(tài)空間。

    3.2 抽象可達圖

    3.3 有界模型檢測

    有界模型檢測(BMC)只檢測步以內的可達性,其形式化的表達如下。

    其中,表示初始狀態(tài)集合,表示程序的轉換關系集合,前方下標是轉換關系索引,表示程序不變的屬性集合,這些屬性需要在程序的整個執(zhí)行期中保證不被違反。一個有界模型檢測方法的工作過程就是對這個命題進行驗證,證明它恒為真或找到一個使它為假的證明。如果一個有界模型檢測方法找到了一個使命題為假的證明,這個證明肯定可以應用在原始的程序中,使程序也有一條相應的在這個賦值下的路徑,這條路徑通常被稱為反例。如果反例存在,那它一定是充分的。但是當這個有界模型檢測方法給出了一個恒為真的證明時,這個證明卻不足以說明整個原始程序的安全是充分的。所以,有界模型檢測方法是一種下近似的驗證方法。這樣的有界模型檢測可以保證整個驗證過程一定能在一定步驟后停止,無論它檢測的程序是什么結構。因此,這種方法配合其他一些優(yōu)化方法對于檢測實用的程序非常有效。

    有界模型檢測的基本算法框架如算法1所示。這種方法需要配合使用一個SAT或SMT求解器來作為內部的核心組件。一個基本的有界模型檢測算法也可以看作是符號模型檢測算法添加一個界限的產(chǎn)物。

    算法1 有界模型檢測的基本算法

    輸出 如果程序安全則輸出SAFE,如果程序檢測逾越邊界則輸出UNKNOWN,否則輸出UNSAFE

    步數(shù)設置為0

    while 工作列表非空 do

    步數(shù)加1

    if 步數(shù)大于,則返回 UNKNOWN

    為工作集添加元素的像

    if 可達集在錯誤點非空,則返回 UNSAFE

    否則,返回SAFE

    如果把有界模型檢測算法看作是對程序模型的樹型遍歷,那么很顯然,這種方法使用的是深度優(yōu)先策略。

    4 程序局部性定義與局部性模型描述

    局部性又被稱為參考局部性或者局部性原理,是計算機工程領域的一個重要的原理。這個原理描述了計算機系統(tǒng)在數(shù)據(jù)訪問和程序執(zhí)行的過程中會大概率地優(yōu)先訪問或者執(zhí)行上一個訪問位置附近的相關數(shù)據(jù),對于指導計算機工程上的很多問題的優(yōu)化方案有重要的作用。在局部性中,2種重要的類型分別是時間局部性和空間局部性。時間局部性描述了在一段連續(xù)的時間片段中,特定的數(shù)據(jù)或位置會被頻繁地訪問。相似地,空間局部性描述了數(shù)據(jù)的訪問會經(jīng)常地發(fā)生在相距很近的地方。在很多啟發(fā)式算法中,局部性是指導優(yōu)化內在原理。

    當前的程序設計語言給予了程序設計人員強大的能力,這個能力體現(xiàn)在程序中就是程序的多維度上的自由度。具體來講,例如,在面向對象的程序設計(OOP)范式中,2個重要的自由度是繼承和包含關系。另一個重要的例子是,在堆棧式語言編碼的程序當中,2個重要的維度是深度和廣度。程序的局部性在這2個例子中就可以體現(xiàn)在它們的自由維度上。在每一個維度上,程序本身都具有依賴這個維度的局部性。形式化地,這些局部性可以體現(xiàn)在相關程序的語法和語義的鄰接關系上。在這里將要給出一個基于擴展版本的簡單命令程序的局部性的定義。首先,需要先介紹幾個前置概念。

    在分層抽象可達圖中,節(jié)點的有向連接體現(xiàn)了程序執(zhí)行序列的方向。實際上,分層抽象可達圖是一個二維視角下程序流語義的展現(xiàn)。

    在分層抽象可達圖中,量化的距離定義不妨借鑒經(jīng)典的距離表達方法,即曼哈頓距離來表示。在這個前提下,可以進一步定義一個曼哈頓抽象可達圖為一種分層抽象可達圖,其中,每一層都是一個由分支、循環(huán)或函數(shù)節(jié)點展開得到的子抽象可達圖。在曼哈頓抽象可達圖中,每一層的子分支,循環(huán)和函數(shù)都默認不被展開。在這個抽象可達圖上,可以比較方便地定義距離,同時,程序語法和語義上的信息也被有效地保留了下來。

    假設1一個程序的執(zhí)行路徑會有較大概率選擇局部性強的路徑。

    本文給出的假設1是合理的。首先,其符合程序員的編程直覺。使用局部性較強的路徑更加容易設計邏輯連貫的程序,因為在處理邏輯的連接時,需要進行的額外記憶將會降低。其次,局部性符合計算機體系結構的基本原理,程序在執(zhí)行時選擇局部性較強的路徑會節(jié)約計算機運算的時間資源和空間資源。

    為了將程序的局部性性質應用到傳統(tǒng)的有界模型檢測算法中去,原始的算法需要進行一定的擴展,從而使它可以接受和處理現(xiàn)代程序設計語言中蘊含的特定的因果關系。具體地,就是讓原始的有界模型檢測算法可以接受和處理來自廣度方向上的局部性信息。有界模型檢測算法是一個典型的深度優(yōu)先搜索算法,這個算法只接受具體的符號化程序作為輸入,然后按照這個程序的運行路徑進行搜索和計算。綜上所述,本文的程序局部性的定義是包含抽象狀態(tài)的,因此,有界模型檢測算法并不能直接應用在其上。特別地,如果搜索方向是廣度優(yōu)先,那么在執(zhí)行過程中將會有很大概率碰到抽象狀態(tài)。所以需要讓有界模型檢測算法可以處理一些抽象狀態(tài)。

    不翻譯函數(shù)(uninterpreted function)是SAT求解領域里的一個重要的理論模型。這個模型擴展了SAT求解器的能力,使它可以處理的邏輯范圍不僅限于命題邏輯[32]。不翻譯函數(shù)的基本理念是使用一個不展開的符號來表示一組命題,而這組命題中的符號被當作這個符號的參數(shù)來處理。這樣一來,這個不展開的符號就符合了一般函數(shù)的定義,而它的值就是這組命題計算式的合取。這種表示方式可以跳過對這組計算式的原地求值(on-site evaluation),從而形成一個懶惰求值的節(jié)點。因此,可以仿照不翻譯函數(shù)的形式邏輯來表示本文的抽象可達圖中的抽象部分。

    定義7 不翻譯函數(shù)的擴展邏輯。一個定義了不翻譯函數(shù)的擴展邏輯包含以下語法。

    這種擴展邏輯利用了不翻譯函數(shù)的能力并且可以處理多重返回值以及各種各樣的二元關系運算符。它可以將程序片段轉換成邏輯公式使特定的SAT或SMT求解器得以求解。對應地,它也可以將程序變?yōu)榭杀籅MC接受的抽象程序。

    5 局部性引導的BMC算法

    本節(jié)將會討論如何使用局部性來指導有界模型檢測算法。先從設計和實現(xiàn)一個簡單的、使用局部性策略的算法開始,接著討論一個添加了更多優(yōu)化的版本。

    5.1 基礎算法

    直接使用程序的局部性來指導有界模型檢測算法可以通過計算目標程序的2個節(jié)點間的局部性度量來實現(xiàn)。這個想法相對比較易于實現(xiàn),同時又易于理解。通過搜索當前節(jié)點到錯誤點的局部度量可以獲得一個整體局部性。反復進行搜索便可以得到一個迭代更新的局部性參考。

    與原始的有界模型檢測算法類似,每一輪有界模型檢測算法的運行并不是完全覆蓋整個程序的狀態(tài)集。但對比傳統(tǒng)的算法,本文算法可以降低在深度或廣度方向上的運行消耗。另外,將一個大型的有界模型檢測搜索拆分成數(shù)個較小檢測可以增加檢測的靈活性,使檢測可以在有限的空間下對更大型的狀態(tài)空間執(zhí)行搜索。

    函數(shù)是遞歸逐層檢測程序的抽象可達圖的方法。其他一些參數(shù)的定義如下。

    是分層抽象可達圖的有序列表。

    用來獲取抽象可達圖的根元素的函數(shù)。

    是一個獲取目標程序后置操作的迭代器。

    是一個獲取抽象可達圖中父節(jié)點的函數(shù)。

    是一個獲取抽象可達圖中子節(jié)點的函數(shù)。

    是一個使用擴展邏輯將節(jié)點變?yōu)閷某橄蠊?jié)點的函數(shù)。

    是一個獲取分層抽象可達圖當前層的節(jié)點的迭代器。

    是一個從目標抽象可達圖的節(jié)點上獲取其所包含的具體狀態(tài)的函數(shù)。這些狀態(tài)包括所選擇節(jié)點在深度或廣度方向上的狀態(tài)。如果深度或廣度方向沒有在參數(shù)上被指定,那么就直接獲取節(jié)點在所有方向上的具體狀態(tài),這時,這個函數(shù)與函數(shù)互逆。

    是一個統(tǒng)計集合內元素個數(shù)的函數(shù)。

    是一個獲得節(jié)點和路徑間具有因果關系的所有節(jié)點的集合。

    是獲取當前節(jié)點沿特定方向到錯誤點的路徑。

    算法2 基礎算法

    輸出 如果程序安全則輸出SAFE,否則輸出UNSAFE

    初始化結果為UNKNOWN,抽象狀態(tài)為空

    調用函數(shù)創(chuàng)建分層,賦值給

    while 結果是UNKNOWN do

    調用函數(shù)(,(),)并把結果傳遞給檢測結果和

    for 對于集合的元素 do

    對元素調用函數(shù)

    返回結果

    函數(shù)創(chuàng)建分層ARG():

    初始化為

    for 對于程序執(zhí)行的各步驟 do

    if 該步驟符合曼哈頓條件 then

    調用函數(shù)(,)并給其結果賦值為該步驟調用函數(shù)的返回值。

    否則,調用函數(shù)()并為其結果賦值為該步驟調用函數(shù)的返回值

    函數(shù)(,,):

    調用函數(shù)分別計算廣度方向上的距離和深度上的距離,并求二者之差t

    設置探索方向為深度

    ift大于1 then

    設置探索方向為廣度

    調用函數(shù)((,當前探索方向),, 1)并賦值給結果

    else if 結果是UNKNOW then

    初始化和為空

    for 集合(,)的元素 do

    調用函數(shù)(, 當前元素,)并將結果賦值給和

    if取值為UNKNOWN then 將合并入

    返回(UNKNOWN,)

    否則,返回SAFE

    函數(shù)(,):

    if 方向是深度方向 then

    返回((,last()))

    否則返回((,last()))

    5.2 改進算法

    算法3 改進算法

    輸出 如果程序安全則輸出SAFE,否則,輸出UNSAFE

    調用函數(shù)創(chuàng)建分層ARG()并將結果賦予

    調用函數(shù)分別計算廣度方向上的距離和深度上的距離,并求二者之差t

    設置探索方向為深度

    if 結果為UNSAFE then

    返回 (UNSAFE,)

    else if 結果為UNKNOWN then

    初始化,為空

    初始化為真

    for 集合(,)的元素 do

    if取值為UNSAFE then 將合并入

    否則返回SAFE

    在整個改進的算法中,參考了反例引導的抽象—精煉模型檢測方法(counterexample-guided abstraction-refinement)中的反例引導思想。通過提取每次有界模型檢測器獲取的一個證明來加強算法中的局部性尋找,從而使局部性引導過程的搜索空間可以被有效限制,并且避免了一些重復的狀態(tài)遍歷。這種做法可以加強在局部性尋找失敗時的算法效率。

    6 實驗設計與性能分析

    本文方法使用有界模型檢測工具作為內部的實現(xiàn)核心,這個工具本身具有獨立地檢測軟件可靠性的能力。綜上所述,本文的目標是針對傳統(tǒng)的有界模型檢測工具的一個改進和優(yōu)化。將優(yōu)化方法實施在一個現(xiàn)有的有界模型檢測器上而不是使用一個定制的檢測器具有多重優(yōu)勢。其中之一是,現(xiàn)有的模型檢測器除了實施基本的有界模型檢測算法以外,同時還考慮了多種與模型檢測和程序分析相關的優(yōu)化措施。使用現(xiàn)有的模型檢測工具可以充分地利用領域里已經(jīng)實施的相關優(yōu)化方法,從而可以獲得更佳的性能表現(xiàn)。另外一點是,使用現(xiàn)有的工具可以充分利用其對于程序的表達和處理的能力,從而可以使方法能夠應對更多樣和復雜的樣本。

    通過對現(xiàn)有各種有界模型檢測工具進行考察發(fā)現(xiàn),其中很多工具并不能很好地分析和處理實際的代碼片段,例如代碼具有復雜的循環(huán)結構、跳轉、指針或內存操作。在部分有界模型檢測工具中,對這些結構的檢測體現(xiàn)為直接跳過或出現(xiàn)誤報或者提示錯誤并拒絕,因此本文實驗還需要對測試樣本進行篩選,以去除不良用例。

    實驗使用了來自SV-COMP和其他項目中的工業(yè)代碼作為測試用的樣本。這些樣本中包含了規(guī)模不一的代碼片段。其中,最長的代碼片段長度為1 762行,最短的片段長度為341行。使用這個長度范圍內的片段是因為短于這個長度的片段有界模型檢測工具可以很快地完成代碼的檢查,無法區(qū)分本文所述方案的優(yōu)越性;而長于最長片段的代碼將會導致內部的有界模型檢測工具出現(xiàn)錯誤中止,從而使比較產(chǎn)生系統(tǒng)性誤差。在測試樣本中,除了代碼長度不同,代碼的類型也有所區(qū)別。樣本中的代碼包含順序代碼、分支代碼、循環(huán)代碼、跳轉代碼、指針及內存操作代碼。所檢查的程序安全性屬性包含可達、不可達、控制邏輯以及一些訪問相關的屬性。

    大多有界模型檢測器最大的問題都是對指針和內存的支持不完整,導致實際生產(chǎn)中的代碼難以進行有效的檢測。通過大量的研究和測試發(fā)現(xiàn),LLBMC[33]對于工業(yè)代碼的支持最為完整,同時因為其使用了顯式內存分析,它對代碼規(guī)模的支持也很強大。同時根據(jù)SV-COMP[34]的測試結果顯示,其在整個模型檢測業(yè)界也具有很好的性能表現(xiàn)?;谶@些研究,在測試中使用LLBMC作為算法中有界模型檢測器的實現(xiàn)。

    本文實驗平臺配置如下。Intel Core 2,4核8線程處理器,64 GB物理內存以及64位Ubuntu 12.04操作系統(tǒng)。保留測試代碼中的各種瑕疵以及不好的編程范式,從而使其更加貼近真實的生產(chǎn)中會產(chǎn)生的代碼。同時,也使程序員在編寫代碼時遺留在程序中的局部性得以保留。實驗分為2個部分,第一個部分將實驗樣本按照代碼規(guī)模從低到高分為5個階梯。因為代碼的行數(shù)與其復雜程度具有一定的關系但又不是嚴格的線性關系,使用這種階梯式的分類方法可以更好地體現(xiàn)出代碼復雜程度的演進。第二個部分將代碼按照其邏輯類型分為4個大類。使用這個分類的目的是觀察程序的邏輯類型對算法的影響。

    本文實驗并未涉及比較算法在空間上的復雜度差異,其原因是本文方法涉及多次使用檢測工具,其內存消耗包括了多次的預分配和其他支持庫的共享部分與單一使用不具備可比性。同時,本文用以比較的其他算法來自不同框架,其本身內存分配和回收機理不同,也會造成結果的說明性不佳。

    實驗使用的測試樣本代碼總共有115段,來自于其他測試樣例和一些實際項目中的典型代碼片段。在實驗的第一個部分中,按照大約200行代碼為一塊對這些代碼進行分片。

    單獨使用LLBMC以及2種算法在這些分片上運行的時間消耗比較如表1所示。其中所列的時間是代碼檢測的平均時間。通過比較可以發(fā)現(xiàn),本文所述的算法在規(guī)模較小的程序檢測中體現(xiàn)出更高的時間消耗。這是因為本文方案對代碼進行了多次掃描,這種掃描造成了潛在的時間消耗。同時,本文使用的方法具有一個啟動過載,這個因素同樣影響了時間消耗。在規(guī)模較大的代碼檢測中,本文方法展現(xiàn)出了優(yōu)勢。

    表1 算法時間消耗比較

    第二部分實驗結果如表2所示。其中,數(shù)據(jù)代表當前類別在所列算法的檢測中成功返回并返回正確結果的數(shù)量。在前面實驗中已經(jīng)發(fā)現(xiàn)當代碼規(guī)模增大到一定程度時,傳統(tǒng)的有界模型檢測器已無法完成針對代碼的檢測。因此也將代碼規(guī)模限制在這個邊界的附近,從而可以獲得具有比較意義的結果。在第二部分的實驗中也可以發(fā)現(xiàn),LLBMC在各個類型的代碼中均有檢測失敗的案例。由于給LLBMC設置了無限長的代碼展開,所以這種檢測失敗基本上都是由于狀態(tài)空間過大所引起。本文的2種方案在其上表現(xiàn)很好,這是由于本文方法將模型檢測空間進行了有效限制。

    表2 算法成功檢測數(shù)量比較

    從實驗結果可以看到,本文方法在LLBMC上可以有效地運行并成功地對相對大規(guī)模的代碼進行檢測,比單純的有界模型檢測算法在規(guī)模上更加強壯,同時在相對較大的規(guī)模代碼上具有一定的時間優(yōu)勢。當然,在實驗中也發(fā)現(xiàn)了在不同的代碼片段上有一定的不穩(wěn)定性。這個現(xiàn)象的原因可能是代碼的局部性在不同的代碼片段上的強弱程度表現(xiàn)不一,這也同時說明了實現(xiàn)屬于一種啟發(fā)式的算法實例。

    7 結束語

    本文提出了局部性在模型檢測方法中應用的可能性,在描述了形式化定義的基礎之上提出了對應的算法,并通過實驗驗證了其有效性。該方法實際上屬于一種上近似的算法,通過獲取一種局部性的上近似來對目標程序模型的狀態(tài)空間進行分片,然后使用有界模型檢測工具來完成狀態(tài)子空間的檢測。算法理論上可以結合各種有界模型檢測算法,具有可擴展性,同時也具有結合其他模型檢測算法的潛力。在未來的研究中,可以進一步地探討將本文算法嵌入其他模型檢測算法中或將其他模型檢測算法嵌入本文算法中的可能性。

    [1] JHALA R, MAJUMDAR R. Software model checking[J]. ACM Computing Surveys. 2009, 41(4): 1-54.

    [2] BJORNER N, MCMILLAN K, RYBALCHENKO A. On solving universally quantified horn clauses[C]//The International Symposium on Static Analysis. 2013: 105-125.

    [3] CLARKE E, KROENING D, LERDA F. A tool for checking ansi-c programs[C]//The 10th International Conference on Tools and Algorithms for the Construction and Analysis of Systems. 2004: 168-176.

    [4] CORDEIRO L, LISCHER B, MARQUES S J. SMT-based bounded model checking for embedded ANSIC software[J]. IEEE Transactions on Software Engineering, 2012, 38(4): 137-148.

    [5] YANG Z, GANAI M K, GUPTA A, et al. Efficient SAT-based bounded model checking for software verification[J]. Theoretical Computer Science, 2008, 404 (3) : 256-274.

    [6] MERZ F, FALKE S, SINZ C. LLBMC: bounded model checking of C and C++ programs using a compiler IR[C]//The International Conference on Verified Software: Theories, Tools, Experiments. 2012: 146-161.

    [7] MORSE J, CORDEIRO D, NICOLE D, et al. Handling unbounded loops with ESBMC 1.20[C]//The International Conference on Tools and Algorithms for the Construction and Analysis of Systems. 2013: 619-622.

    [8] DAVIS M, LOGEMANN G, LOVELAND D. A machine program for theorem-proving[J]. Communications of the ACM, 1967, 5(5): 394-397.

    [9] HOOKER J N, VINAY V. Branching rules for satisfiability[J]. Journal of Automated Reasoning, 1995 , 15 (3) :359-383.

    [10] LI C M, ANBULAGAN A. Heuristics based on unit propagation for satisfiability problems[C]//The 15th International Joint Conference on Artificial Intelligence. 1997 :366-371.

    [11] MOURA D, BJORNER N. Z3: an efficient SMT solver[C]//The International Conference on Tools and Algorithms for the Construction and Analysis of Systems. 2008: 337-340.

    [12] LIU L, KONG W, ANDO T. A survey of acceleration techniques for SMT-based bounded model checking[C]//The International Conference on Computer Sciences and Applications. 2013: 554-559.

    [13] HENZINGER T A, JHALA R, MAJUMDAR R, et al. Abstractions from proofs[J]. ACM SIGPLAN Notices, 2004 , 39 (1) :232-244.

    [14] JHALA R, MCMILLAN K L. Array abstractions from proofs[C]//The International Conference on Computer Aided Verification. 2004: 232-244.

    [15] MCMILLAN K L. Lazy abstraction with interpolants[C]//The International Conference on Computer Aided Verification. 123-136.

    [16] GULAVANI B S, RAJAMANI S K. Counterexample driven refinement for abstract interpretation[C]//The International Conference on Tools and Algorithms for the Construction and Analysis of Systems. 2006: 474-488.

    [17] FLANAGAN C, QADEER S. Predicate abstraction for software verification[J]. ACM SIGPLAN Notices, 2002, 37 (1) :191-202.

    [18] KOMURAVELLI A, GURFINKEL A, CHAKI S. Automatic abstraction in SMT-based unbounded software model checking[C]//The International Conference on Computer Aided Verification. 2013: 846-862.

    [19] APEL S, BEYER D, FRIEDBERGER K. Domain types: abstract- domain selection based on variable usage[C]//The International Conference on Hardware and Software: Verification and Testing. 2013: 262-278.

    [20] BEYER D, HENZINGER T A, THEODULOZ G. Lazy shape analysis[C]//International Conference on Computer Aided Verification. 2006: 532-546.

    [21] HENZINGER T A, JHALA R, MAJUMDAR R, et al. Lazy abstraction[J]. ACM SIGPLAN Notices, 2002, 37(1): 58-70.

    [22] BRADLEY A R. SAT-based model checking without unrolling[C]//The International Conference on Verification, Model Checking, and Abstract Interpretation. 2011: 70-87.

    [23] RRADLEY A R, MANNA Z. Checking safety by inductive generalization of counterexamples to induction[C]//The International Conference on Formal Methods in Computer Aided Design. 2007: 173-180.

    [24] CHAKI S, CLARKE E M, GROCE A, et al. Modular verification of software components in C[J]. IEEE Transactions on Software Engineering, 2004 , 30 (6) :388-402.

    [25] BEYER D, KEREMOGLU M E. CPAchecker: a tool for configurable software verification[C]//The International Conference on Computer Aided Verification. 2011:184-190.

    [26] BEYER D, LEMBERGER T. Symbolic execution with CEGAR[M]// Leveraging Applications of Formal Methods, Verification and Validation: Foundational Techniques. Springer International Publishing, 2016.

    [27] BEYER D, DANGL M, WENDLER P. Boosting K-induction with Continuously-refined Invariants[M]//Computer Aided Verification. Springer International Publishing, 2015: 622-640.

    [28] BEYER D, LOWE S. Interpolation for value analysis[J]. Software-Engineering and Management, 2015: 73-74.

    [29] BEYER D, WENDLER P. Reuse of verification results[C]//The International Symposium on Model Checking Software. 2013: 1-17.

    [30] BEYER D, LOWE S. Explicit-State software model checking based on CEGAR and interpolation[C]//The International Conference on Fundamental Approaches to Software Engineering. 2013: 146-162.

    [31] ALBARGHOUTHI A, GURFINKEL A, CHECHIK M. From Under-Approximations to Over-Approximations and Back[C]//The International Conference on Tools and Algorithms for the Construction and Analysis of Systems. 2012: 157-172.

    [32] KROENING D, STRICHMAN O. Decision procedures: an algorithmic point of view[M]. Springer Publishing Company, 2008.

    [33] SINZ C, MERZ F, FALKE S. LLBMC: a bounded model checker for LLVM’s intermediate representation[C]//The International Conference on Tools and Algorithms for the Construction and Analysis of Systems. 2012: 542-544.

    [34] BEYER D. Status report on software verification[C]//The International Conference on Tools and Algorithms for the Construction and Analysis of Systems. 2014: 373-388.

    Locality-guided based optimization method for bounded model checker

    WANG Shun, DU Ye, HAN Zhen, LIU Jiqiang

    Beijing Key Laboratory of Security and Privacy in Intelligent Transportation, Beijing Jiaotong University, Beijing 100044, China

    For software model checking, approaches that combine with different kind of verification methods are now under research. The key to improve scale and complexity of verifiable software is handling the method for abstraction widening and strengthening wisely and precisely. To archive that, using extra knowledge that extracted from programming pattern or learned through verifying procedure to help eliminate the redundant state has been proved effective. Definition of program locality was given. It took the important role in accelerating software verification, then the strategy was raised and an algorithm was implemented to take advantage of program locality. This method exploits the features of modern BMC (bounded model checker) and scales up the capability of its power in large scale and comprehensive software modules.

    model checking, BMC, software verification, locality, optimization

    TP311.1

    A

    10.11959/j.issn.1000-436x.2018050

    2017-06-14;

    2018-01-11

    北京高校青年英才計劃基金資助項目(No.YETP0548);國家自然科學基金資助項目(No.61672092)

    Beijing Higher Education Young Elite Teacher Project (No.YETP0548), The National Natural Science Foundation of China (No.61672092)

    王舜(1988-),男,陜西西安人,北京交通大學博士生,主要研究方向為形式化方法、程序分析技術、信息安全等。

    杜曄(1978-),男,黑龍江哈爾濱人,博士,北京交通大學副教授、博士生導師,主要研究方向為網(wǎng)絡安全、態(tài)勢感知、軟件可靠性分析與評估等。

    韓臻(1962-),男,浙江寧波人,北京交通大學教授、博士生導師,主要研究方向為可信計算、系統(tǒng)安全、保密技術等。

    劉吉強(1973-),男,山東海陽人,北京交通大學教授、博士生導師,主要研究方向為密碼學、可信計算、隱私保護技術等。

    猜你喜歡
    局部性代碼程序
    基于MOLS 的最優(yōu)二元局部修復碼構造*
    基于彈性網(wǎng)和直方圖相交的非負局部稀疏編碼
    計算機應用(2019年3期)2019-07-31 12:14:01
    試論我國未決羈押程序的立法完善
    人大建設(2019年12期)2019-05-21 02:55:44
    創(chuàng)世代碼
    動漫星空(2018年11期)2018-10-26 02:24:02
    創(chuàng)世代碼
    動漫星空(2018年2期)2018-10-26 02:11:00
    創(chuàng)世代碼
    動漫星空(2018年9期)2018-10-26 01:16:48
    創(chuàng)世代碼
    動漫星空(2018年5期)2018-10-26 01:15:02
    “程序猿”的生活什么樣
    英國與歐盟正式啟動“離婚”程序程序
    創(chuàng)衛(wèi)暗訪程序有待改進
    亚洲av日韩在线播放| 国产在线免费精品| 高清在线视频一区二区三区| 国产日韩欧美在线精品| 99re6热这里在线精品视频| 99精国产麻豆久久婷婷| 亚洲精品乱码久久久久久按摩| 超色免费av| 亚洲国产av影院在线观看| 啦啦啦在线观看免费高清www| 国产一区二区在线观看日韩| 日日啪夜夜爽| 香蕉精品网在线| 999精品在线视频| 成年av动漫网址| 免费黄频网站在线观看国产| 日韩在线高清观看一区二区三区| 久久99精品国语久久久| 美女国产视频在线观看| 国产成人av激情在线播放 | 亚洲欧美一区二区三区黑人 | 九九爱精品视频在线观看| 亚洲精品国产av蜜桃| 精品99又大又爽又粗少妇毛片| 国产一区有黄有色的免费视频| 日韩在线高清观看一区二区三区| 伦理电影大哥的女人| 精品国产露脸久久av麻豆| 精品人妻偷拍中文字幕| 久久久久久久久大av| 日日摸夜夜添夜夜添av毛片| 久久国产精品大桥未久av| 午夜福利在线观看免费完整高清在| 这个男人来自地球电影免费观看 | 18禁在线播放成人免费| 国产免费视频播放在线视频| 午夜91福利影院| 丝袜脚勾引网站| 精品99又大又爽又粗少妇毛片| 日韩精品免费视频一区二区三区 | 老女人水多毛片| 国产av一区二区精品久久| www.av在线官网国产| 免费av不卡在线播放| 纵有疾风起免费观看全集完整版| 国产精品成人在线| 有码 亚洲区| 天美传媒精品一区二区| 下体分泌物呈黄色| 婷婷色av中文字幕| 黄色欧美视频在线观看| 成年人免费黄色播放视频| 国产成人精品无人区| 男人操女人黄网站| 18禁在线无遮挡免费观看视频| 人妻少妇偷人精品九色| 久久久国产欧美日韩av| 免费看不卡的av| 老司机影院毛片| 欧美亚洲 丝袜 人妻 在线| 国产精品成人在线| 久久ye,这里只有精品| 视频中文字幕在线观看| 亚洲欧美中文字幕日韩二区| 午夜福利视频在线观看免费| 亚洲无线观看免费| 制服丝袜香蕉在线| 男女高潮啪啪啪动态图| 亚洲国产最新在线播放| 韩国av在线不卡| 久久精品国产亚洲av天美| 亚洲经典国产精华液单| 欧美bdsm另类| 一级a做视频免费观看| 久久青草综合色| 飞空精品影院首页| 日日摸夜夜添夜夜添av毛片| 亚洲av国产av综合av卡| 狂野欧美激情性xxxx在线观看| 午夜91福利影院| 999精品在线视频| 午夜免费男女啪啪视频观看| 国产精品偷伦视频观看了| 亚洲精品色激情综合| 日本爱情动作片www.在线观看| 水蜜桃什么品种好| 国产欧美日韩一区二区三区在线 | 成年女人在线观看亚洲视频| 国产成人精品福利久久| 亚洲欧美一区二区三区黑人 | 丝袜喷水一区| 一级毛片黄色毛片免费观看视频| 亚洲av成人精品一二三区| 欧美少妇被猛烈插入视频| 91久久精品国产一区二区成人| 性色avwww在线观看| 久久久精品区二区三区| 成人综合一区亚洲| 欧美日韩综合久久久久久| 欧美精品一区二区大全| 搡女人真爽免费视频火全软件| 亚洲国产精品一区三区| 免费黄色在线免费观看| av专区在线播放| 男的添女的下面高潮视频| 黑人高潮一二区| 中文字幕av电影在线播放| 久久久久国产精品人妻一区二区| 在线观看人妻少妇| 亚洲精品乱码久久久久久按摩| 国产欧美另类精品又又久久亚洲欧美| 99久久综合免费| 亚洲精品成人av观看孕妇| 日韩成人伦理影院| 亚洲av国产av综合av卡| 国产亚洲最大av| 精品卡一卡二卡四卡免费| 国产精品一二三区在线看| 十八禁高潮呻吟视频| a级片在线免费高清观看视频| 国产免费福利视频在线观看| 69精品国产乱码久久久| 国产精品久久久久成人av| 欧美成人精品欧美一级黄| 91精品一卡2卡3卡4卡| 制服丝袜香蕉在线| 亚洲欧美精品自产自拍| 老司机亚洲免费影院| 久久精品国产亚洲av涩爱| 成人二区视频| 成人二区视频| 在线亚洲精品国产二区图片欧美 | 中文字幕最新亚洲高清| 交换朋友夫妻互换小说| 秋霞伦理黄片| av免费在线看不卡| 成人毛片60女人毛片免费| 国产成人一区二区在线| 欧美日韩亚洲高清精品| 大又大粗又爽又黄少妇毛片口| 人妻制服诱惑在线中文字幕| 视频在线观看一区二区三区| 九色成人免费人妻av| 国产成人免费观看mmmm| 久久精品国产亚洲av涩爱| 亚洲丝袜综合中文字幕| 天美传媒精品一区二区| 黑人欧美特级aaaaaa片| 日韩成人av中文字幕在线观看| 精品少妇久久久久久888优播| 免费观看性生交大片5| 亚洲精品av麻豆狂野| 我要看黄色一级片免费的| 中文字幕av电影在线播放| 亚洲五月色婷婷综合| 大香蕉97超碰在线| 久久人人爽av亚洲精品天堂| 9色porny在线观看| 久久人人爽人人爽人人片va| 99热网站在线观看| 麻豆成人av视频| 99久久精品一区二区三区| 亚洲欧美成人精品一区二区| 亚洲丝袜综合中文字幕| 一级爰片在线观看| 精品亚洲成国产av| 国产成人精品一,二区| 国产日韩欧美在线精品| 欧美激情 高清一区二区三区| 成人免费观看视频高清| 少妇高潮的动态图| 国产精品人妻久久久久久| 亚洲无线观看免费| 欧美日韩综合久久久久久| 亚洲中文av在线| 伦理电影大哥的女人| 男女啪啪激烈高潮av片| 久久99精品国语久久久| 国产永久视频网站| 亚洲第一区二区三区不卡| 你懂的网址亚洲精品在线观看| 国产一区二区三区综合在线观看 | 亚洲午夜理论影院| 成人18禁高潮啪啪吃奶动态图| 老司机午夜十八禁免费视频| 最新在线观看一区二区三区| 黄色a级毛片大全视频| 777米奇影视久久| 人妻久久中文字幕网| 老司机午夜十八禁免费视频| 午夜久久久在线观看| 久久久精品94久久精品| 1024视频免费在线观看| 夜夜爽天天搞| 久久中文字幕人妻熟女| 国产一区二区激情短视频| 午夜91福利影院| 窝窝影院91人妻| 精品少妇内射三级| 亚洲精品成人av观看孕妇| 亚洲精品中文字幕在线视频| 欧美黑人精品巨大| 少妇裸体淫交视频免费看高清 | 91老司机精品| 欧美在线一区亚洲| 少妇猛男粗大的猛烈进出视频| 精品国产一区二区三区四区第35| 亚洲精品自拍成人| 日日摸夜夜添夜夜添小说| 国产在线观看jvid| 如日韩欧美国产精品一区二区三区| 咕卡用的链子| 大香蕉久久网| 午夜激情久久久久久久| 黑人巨大精品欧美一区二区蜜桃| 亚洲一区二区三区欧美精品| 日韩大片免费观看网站| 五月开心婷婷网| 亚洲黑人精品在线| 国产亚洲午夜精品一区二区久久| 欧美日韩精品网址| 亚洲中文av在线| 国产成人一区二区三区免费视频网站| 亚洲五月色婷婷综合| 亚洲,欧美精品.| 欧美精品一区二区免费开放| 国产成+人综合+亚洲专区| 乱人伦中国视频| 精品国产一区二区三区久久久樱花| 久9热在线精品视频| 国产精品秋霞免费鲁丝片| 亚洲成人手机| 波多野结衣av一区二区av| 天天躁狠狠躁夜夜躁狠狠躁| 国产黄色免费在线视频| 精品国产乱码久久久久久小说| 青青草视频在线视频观看| 欧美日韩亚洲高清精品| 叶爱在线成人免费视频播放| 免费不卡黄色视频| 黄网站色视频无遮挡免费观看| 亚洲男人天堂网一区| 波多野结衣一区麻豆| 夜夜骑夜夜射夜夜干| 日韩欧美一区视频在线观看| 18禁黄网站禁片午夜丰满| 精品久久久久久电影网| 另类亚洲欧美激情| 亚洲人成伊人成综合网2020| 操出白浆在线播放| 久久午夜综合久久蜜桃| 一级黄色大片毛片| tube8黄色片| 老熟女久久久| 国产不卡av网站在线观看| 亚洲伊人色综图| 国产无遮挡羞羞视频在线观看| 女性被躁到高潮视频| 午夜精品国产一区二区电影| 国产一卡二卡三卡精品| 国产av精品麻豆| 免费在线观看黄色视频的| 91大片在线观看| 777久久人妻少妇嫩草av网站| 男女午夜视频在线观看| 久久精品国产亚洲av香蕉五月 | 亚洲国产毛片av蜜桃av| 亚洲av日韩精品久久久久久密| 高清毛片免费观看视频网站 | 两性午夜刺激爽爽歪歪视频在线观看 | 日本欧美视频一区| 久久久精品免费免费高清| 捣出白浆h1v1| 国产精品av久久久久免费| 欧美在线黄色| 久久久国产欧美日韩av| 亚洲 国产 在线| 亚洲第一av免费看| 精品人妻在线不人妻| 美女高潮到喷水免费观看| 久热这里只有精品99| 午夜视频精品福利| 国产精品.久久久| 国产精品亚洲av一区麻豆| 久久精品亚洲熟妇少妇任你| 叶爱在线成人免费视频播放| 国产激情久久老熟女| 国产精品一区二区精品视频观看| 亚洲九九香蕉| 久久影院123| 在线观看66精品国产| 一个人免费在线观看的高清视频| 在线观看免费午夜福利视频| 欧美黄色淫秽网站| 午夜老司机福利片| 亚洲第一欧美日韩一区二区三区 | av超薄肉色丝袜交足视频| 国产色视频综合| 日本av免费视频播放| 女人精品久久久久毛片| 丰满人妻熟妇乱又伦精品不卡| 日日爽夜夜爽网站| 亚洲专区国产一区二区| 啦啦啦免费观看视频1| 亚洲,欧美精品.| 在线永久观看黄色视频| 久久人妻福利社区极品人妻图片| 午夜福利在线观看吧| 丰满人妻熟妇乱又伦精品不卡| av欧美777| 80岁老熟妇乱子伦牲交| 久久久久久久国产电影| 热re99久久国产66热| 纯流量卡能插随身wifi吗| 亚洲少妇的诱惑av| 人人妻人人爽人人添夜夜欢视频| 国产精品久久久久久人妻精品电影 | 9色porny在线观看| 欧美激情久久久久久爽电影 | 在线播放国产精品三级| 亚洲午夜理论影院| 国产成人欧美| av视频免费观看在线观看| 日韩大码丰满熟妇| 亚洲精品国产一区二区精华液| 在线观看舔阴道视频| 人人妻,人人澡人人爽秒播| 免费观看av网站的网址| 国产成人一区二区三区免费视频网站| 青青草视频在线视频观看| 女同久久另类99精品国产91| 日本a在线网址| xxxhd国产人妻xxx| 午夜两性在线视频| 性高湖久久久久久久久免费观看| 国产激情久久老熟女| 飞空精品影院首页| 中文字幕人妻熟女乱码| 国产精品免费视频内射| 国产有黄有色有爽视频| 久久久精品国产亚洲av高清涩受| 欧美激情 高清一区二区三区| 啦啦啦 在线观看视频| 免费看十八禁软件| √禁漫天堂资源中文www| 成年人午夜在线观看视频| 国产免费av片在线观看野外av| 一个人免费在线观看的高清视频| 麻豆国产av国片精品| 中文字幕色久视频| 99国产精品99久久久久| a级毛片黄视频| 免费在线观看完整版高清| 久久中文字幕人妻熟女| 亚洲精品乱久久久久久| 国产精品1区2区在线观看. | 欧美人与性动交α欧美软件| 亚洲国产欧美日韩在线播放| 亚洲伊人色综图| 女人高潮潮喷娇喘18禁视频| 亚洲熟女精品中文字幕| 久热爱精品视频在线9| 日韩三级视频一区二区三区| 国产av国产精品国产| 在线观看人妻少妇| 狂野欧美激情性xxxx| 国产高清视频在线播放一区| 69精品国产乱码久久久| 午夜激情av网站| 欧美老熟妇乱子伦牲交| 久久久久视频综合| www.自偷自拍.com| 老司机午夜十八禁免费视频| 国产一区二区三区视频了| 久久性视频一级片| 黄色成人免费大全| 国产在线免费精品| 一区二区三区国产精品乱码| 国产精品国产av在线观看| 中文字幕人妻熟女乱码| 自线自在国产av| 久久天躁狠狠躁夜夜2o2o| 热99国产精品久久久久久7| 日韩三级视频一区二区三区| 欧美大码av| 91麻豆精品激情在线观看国产 | 色婷婷久久久亚洲欧美| 亚洲国产毛片av蜜桃av| 亚洲一卡2卡3卡4卡5卡精品中文| 黄色视频在线播放观看不卡| 啦啦啦 在线观看视频| 欧美精品av麻豆av| 男女床上黄色一级片免费看| av国产精品久久久久影院| 国产真人三级小视频在线观看| 国产熟女午夜一区二区三区| 大型黄色视频在线免费观看| 两性夫妻黄色片| 亚洲专区字幕在线| 久久久久久久久久久久大奶| 欧美乱码精品一区二区三区| 黄频高清免费视频| 精品卡一卡二卡四卡免费| 久久久欧美国产精品| 亚洲欧洲精品一区二区精品久久久| 国产在线观看jvid| 国产精品久久电影中文字幕 | 国产亚洲av高清不卡| 久久中文字幕人妻熟女| 伦理电影免费视频| 精品视频人人做人人爽| 久久香蕉激情| 精品亚洲成a人片在线观看| 两性夫妻黄色片| 久久久久久人人人人人| 汤姆久久久久久久影院中文字幕| 色播在线永久视频| 亚洲精品美女久久av网站| 男人操女人黄网站| 91字幕亚洲| 1024视频免费在线观看| 热re99久久精品国产66热6| 俄罗斯特黄特色一大片| 国产老妇伦熟女老妇高清| 久久精品人人爽人人爽视色| 亚洲国产中文字幕在线视频| 亚洲欧美色中文字幕在线| 这个男人来自地球电影免费观看| 12—13女人毛片做爰片一| 这个男人来自地球电影免费观看| 不卡一级毛片| 汤姆久久久久久久影院中文字幕| 欧美激情久久久久久爽电影 | 久久精品亚洲av国产电影网| 老司机在亚洲福利影院| 久久精品亚洲av国产电影网| 国产精品1区2区在线观看. | 精品人妻熟女毛片av久久网站| 人人妻人人添人人爽欧美一区卜| 国产一卡二卡三卡精品| 窝窝影院91人妻| 国产伦理片在线播放av一区| 久久99热这里只频精品6学生| 国产主播在线观看一区二区| 亚洲av成人不卡在线观看播放网| 一区二区三区激情视频| 亚洲五月色婷婷综合| 免费在线观看完整版高清| 黄色片一级片一级黄色片| 2018国产大陆天天弄谢| 99九九在线精品视频| 国产不卡av网站在线观看| 黄片大片在线免费观看| 精品一区二区三区av网在线观看 | 国产精品熟女久久久久浪| 精品一品国产午夜福利视频| 一区二区三区精品91| 99国产精品99久久久久| 韩国精品一区二区三区| 桃红色精品国产亚洲av| 久久国产亚洲av麻豆专区| 久久狼人影院| 国产黄频视频在线观看| 淫妇啪啪啪对白视频| 国产精品香港三级国产av潘金莲| 欧美亚洲 丝袜 人妻 在线| 美女国产高潮福利片在线看| 99国产极品粉嫩在线观看| 99香蕉大伊视频| 中文字幕精品免费在线观看视频| 一区福利在线观看| 国产精品成人在线| 国产区一区二久久| 日本撒尿小便嘘嘘汇集6| 午夜福利影视在线免费观看| 日韩精品免费视频一区二区三区| 后天国语完整版免费观看| 一级毛片精品| 黄色成人免费大全| 亚洲中文av在线| 精品久久蜜臀av无| 中文亚洲av片在线观看爽 | 精品一区二区三区视频在线观看免费 | 亚洲欧美一区二区三区黑人| 精品卡一卡二卡四卡免费| 十八禁网站网址无遮挡| 久久热在线av| 1024香蕉在线观看| av一本久久久久| av在线播放免费不卡| 人成视频在线观看免费观看| 高潮久久久久久久久久久不卡| 深夜精品福利| 黄色怎么调成土黄色| 欧美av亚洲av综合av国产av| 亚洲av日韩精品久久久久久密| 日本一区二区免费在线视频| 看免费av毛片| 精品国产一区二区三区四区第35| 一区在线观看完整版| 在线观看免费视频日本深夜| 久久久水蜜桃国产精品网| 久久人人爽av亚洲精品天堂| 久久天堂一区二区三区四区| 亚洲免费av在线视频| 亚洲美女黄片视频| 最近最新免费中文字幕在线| 18禁观看日本| 久久香蕉激情| 日韩 欧美 亚洲 中文字幕| 久久久精品国产亚洲av高清涩受| av欧美777| 国产精品久久电影中文字幕 | 欧美精品亚洲一区二区| 亚洲精品自拍成人| 精品少妇一区二区三区视频日本电影| 亚洲一码二码三码区别大吗| 国产精品久久久久久精品古装| 麻豆av在线久日| 丝瓜视频免费看黄片| 一区二区av电影网| av欧美777| 在线播放国产精品三级| 免费黄频网站在线观看国产| 黄片播放在线免费| 一进一出好大好爽视频| av天堂久久9| 97在线人人人人妻| 日本a在线网址| 成年版毛片免费区| 天天操日日干夜夜撸| 亚洲专区国产一区二区| 国产精品 国内视频| 天天躁夜夜躁狠狠躁躁| 免费在线观看黄色视频的| 国产日韩欧美在线精品| 多毛熟女@视频| 日本黄色视频三级网站网址 | 精品人妻在线不人妻| 中文字幕av电影在线播放| 欧美日韩中文字幕国产精品一区二区三区 | 亚洲第一欧美日韩一区二区三区 | 久久精品aⅴ一区二区三区四区| 精品国内亚洲2022精品成人 | 美女视频免费永久观看网站| 亚洲熟女精品中文字幕| 成人av一区二区三区在线看| 亚洲人成电影观看| 欧美 日韩 精品 国产| 成人手机av| 精品人妻1区二区| 性少妇av在线| 亚洲精品一二三| 久久ye,这里只有精品| 99精国产麻豆久久婷婷| 不卡av一区二区三区| 香蕉国产在线看| 亚洲精品国产区一区二| 精品久久蜜臀av无| 国产精品久久久人人做人人爽| 亚洲精品乱久久久久久| 国产高清激情床上av| 一区二区av电影网| 欧美老熟妇乱子伦牲交| 天堂8中文在线网| 国产伦人伦偷精品视频| 热99国产精品久久久久久7| 欧美日韩一级在线毛片| 精品亚洲乱码少妇综合久久| 黑人欧美特级aaaaaa片| 国产午夜精品久久久久久| 九色亚洲精品在线播放| 欧美亚洲 丝袜 人妻 在线| 亚洲美女黄片视频| 欧美中文综合在线视频| 国产精品麻豆人妻色哟哟久久| 大片电影免费在线观看免费| 99re在线观看精品视频| 亚洲精品国产一区二区精华液| 1024香蕉在线观看| 老司机午夜福利在线观看视频 | 日韩欧美免费精品| 9191精品国产免费久久| 久久午夜亚洲精品久久| 三上悠亚av全集在线观看| 午夜成年电影在线免费观看| 欧美激情 高清一区二区三区| 无限看片的www在线观看| 亚洲黑人精品在线| 黄网站色视频无遮挡免费观看| 在线av久久热| 国产精品影院久久| 人人澡人人妻人| 精品人妻1区二区| 黄片播放在线免费| 欧美在线一区亚洲| 午夜免费成人在线视频| 国产aⅴ精品一区二区三区波| 久久中文字幕一级| 超碰97精品在线观看| 国产激情久久老熟女| 国产精品自产拍在线观看55亚洲 | 亚洲国产欧美日韩在线播放| 精品国产乱码久久久久久小说| 无遮挡黄片免费观看| 亚洲精品国产一区二区精华液| 一本一本久久a久久精品综合妖精| 丰满迷人的少妇在线观看| 99国产精品一区二区蜜桃av | 一边摸一边做爽爽视频免费| 久久精品成人免费网站| 十八禁高潮呻吟视频| 欧美日韩福利视频一区二区| 亚洲精品一二三| 欧美精品av麻豆av|