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

    基于形式化規(guī)約的缺陷規(guī)則庫(kù)構(gòu)建與檢測(cè)方法

    2014-02-28 10:27:26佟超王建新齊建東
    關(guān)鍵詞:控制流原子命題

    佟超,王建新,齊建東

    北京林業(yè)大學(xué)信息學(xué)院,北京100083

    1 引言

    程序缺陷分析是軟件質(zhì)量保證的重要組成部分,它能夠在程序交付測(cè)試之前檢測(cè)出影響系統(tǒng)及其運(yùn)行環(huán)境的一般缺陷、惡意代碼及后門(mén)程序,能發(fā)現(xiàn)編譯器不能捕獲的錯(cuò)誤,很大程度上降低了程序的出錯(cuò)率。但隨著軟件系統(tǒng)日趨復(fù)雜,一般缺陷分析方法已不能滿(mǎn)足用戶(hù)日益增長(zhǎng)的需求,其中有兩方面的需求尤為突出。首先,一般缺陷分析方法都將缺陷規(guī)則內(nèi)置在缺陷分析工具之中,用戶(hù)只能選擇工具已有的缺陷,不能自行定義缺陷規(guī)則;其次,傳統(tǒng)缺陷分析方法一般只指出了缺陷發(fā)生的最終位置[1],無(wú)法確定實(shí)際缺陷與模式缺陷之間的詳細(xì)對(duì)應(yīng)情況,開(kāi)發(fā)人員仍需手動(dòng)調(diào)試以確定導(dǎo)致缺陷的路徑,不能很好地幫助其對(duì)錯(cuò)誤進(jìn)行快速排查和修正。

    本文結(jié)合形式化規(guī)約及模型檢測(cè)中的反例輸出技術(shù)提出了一種缺陷規(guī)則庫(kù)構(gòu)建與源碼檢測(cè)方法。利用形式化規(guī)約中的模型規(guī)約對(duì)程序進(jìn)行建模,用性質(zhì)規(guī)約抽象化待檢測(cè)缺陷,即從一般控制流結(jié)構(gòu)中提取出適用于缺陷分析的通用原子命題,結(jié)合分支時(shí)序邏輯CTL的量詞集合,構(gòu)建缺陷規(guī)則庫(kù)元數(shù)據(jù)。用戶(hù)可按照分支時(shí)序邏輯CTL的語(yǔ)法規(guī)則選取原子命題構(gòu)建積木式靜態(tài)缺陷集。規(guī)則庫(kù)引擎從缺陷集中拆分出元數(shù)據(jù)以設(shè)計(jì)表示靜態(tài)缺陷的CTL判定公式,形成相關(guān)原子命題,從源程序中抽取控制流信息并激活相關(guān)原子命題的標(biāo)記模塊,并將控制流信息轉(zhuǎn)換為模型檢測(cè)可接受的K ripke結(jié)構(gòu)。最后,結(jié)合NuSMV模型驗(yàn)證器對(duì)轉(zhuǎn)換所得的有限狀態(tài)系統(tǒng)進(jìn)行檢測(cè),若存在某種缺陷,則返回帶有源程序行信息的反例路徑。

    2 缺陷規(guī)則庫(kù)整體框架

    作為一種形式化的自動(dòng)驗(yàn)證方法,模型檢測(cè)將“一個(gè)有限狀態(tài)系統(tǒng)是否滿(mǎn)足某種規(guī)范”抽象為“一個(gè)結(jié)構(gòu)是否滿(mǎn)足某個(gè)命題邏輯公式”,若不滿(mǎn)足則返回導(dǎo)致該錯(cuò)誤的反例[2]。其一般過(guò)程分為三步:對(duì)系統(tǒng)進(jìn)行建模;對(duì)規(guī)約進(jìn)行時(shí)態(tài)邏輯描述;利用模型檢測(cè)工具結(jié)合以上兩步實(shí)現(xiàn)驗(yàn)證。模型檢測(cè)需要對(duì)有限狀態(tài)系統(tǒng)進(jìn)行狀態(tài)檢索,經(jīng)過(guò)對(duì)各類(lèi)程序分析方法的研究[3],本文采用程序控制流分析手段,展開(kāi)基于形式化規(guī)約的缺陷規(guī)則庫(kù)構(gòu)建。

    圖1給出了規(guī)則庫(kù)模型的整體框架,從功能角度可將其流程概括為三個(gè)步驟,每個(gè)步驟涉及到框架中模塊間的通信和交互:

    步驟1 用戶(hù)通過(guò)元數(shù)據(jù)自定義所需分析的缺陷規(guī)則,加入規(guī)則庫(kù)。

    步驟2 導(dǎo)入待檢測(cè)程序,由規(guī)則庫(kù)引擎抽取其控制流結(jié)構(gòu),同時(shí)從規(guī)則集中取得待分析缺陷,經(jīng)過(guò)命題動(dòng)態(tài)匹配和模型轉(zhuǎn)換兩個(gè)模塊實(shí)現(xiàn)程序建模以及規(guī)則集中缺陷的實(shí)例化,得到模型驗(yàn)證器可接受的有限狀態(tài)系統(tǒng)。

    步驟3 通過(guò)NuSMV模型驗(yàn)證器對(duì)有限狀態(tài)系統(tǒng)進(jìn)行檢驗(yàn),通過(guò)檢測(cè)結(jié)果轉(zhuǎn)換與輸出模塊返回檢測(cè)結(jié)果及導(dǎo)致缺陷的反例路徑。

    圖1 整體框架圖

    步驟1與步驟2是本文的重點(diǎn)。其中,用戶(hù)通過(guò)自定義缺陷規(guī)則形成缺陷規(guī)則集,該功能的實(shí)現(xiàn)采用了積木式設(shè)計(jì)模式,并設(shè)計(jì)了相應(yīng)的匹配機(jī)制和邏輯描述形式,使缺陷的抽象化更為靈活。規(guī)則庫(kù)引擎負(fù)責(zé)元數(shù)據(jù)匹配機(jī)制的動(dòng)態(tài)喚醒和程序與實(shí)際缺陷的關(guān)系建模,同時(shí)完成了模型結(jié)構(gòu)的轉(zhuǎn)換。

    3 積木式缺陷規(guī)則庫(kù)模型

    缺陷規(guī)則庫(kù)模型的構(gòu)建基礎(chǔ)是對(duì)單一缺陷規(guī)則的抽象化描述。本文采用時(shí)態(tài)邏輯描述系統(tǒng)所要滿(mǎn)足的規(guī)范,在此基礎(chǔ)上對(duì)缺陷的行為邏輯進(jìn)行分析,取得構(gòu)成規(guī)則集的通用原子命題集和邏輯量詞集,為規(guī)則庫(kù)的積木式構(gòu)建準(zhǔn)備元數(shù)據(jù)。

    3.1 缺陷的行為抽象

    時(shí)態(tài)邏輯是一種包含有時(shí)間概念的邏輯,是在命題邏輯的基礎(chǔ)上加入了時(shí)態(tài)算子而形成的邏輯,其基本組成元素為:原子命題、邏輯連接詞、時(shí)態(tài)連接詞[4]。CTL即分支時(shí)序邏輯,是一種典型的時(shí)態(tài)邏輯,缺陷規(guī)則庫(kù)的構(gòu)建需要用戶(hù)理解缺陷抽象為CTL公式的過(guò)程以實(shí)現(xiàn)缺陷自定義,通過(guò)分析M itre通用缺陷列表[5](Common Weakness Enumeration,CWE),不難發(fā)現(xiàn)程序缺陷產(chǎn)生的原因與人為因素、編程語(yǔ)言以及缺陷本身都具備一定關(guān)聯(lián),即缺陷的產(chǎn)生與缺陷本身具備一定的規(guī)律性,對(duì)靜態(tài)缺陷而言,該特點(diǎn)在缺陷的語(yǔ)法及語(yǔ)義特征上尤為明顯。根據(jù)該特征與CTL分支時(shí)序邏輯的相似性,同時(shí)考慮到缺陷間不可提取的非共性因素,本文定義了靜態(tài)缺陷的一般缺陷模式,使針對(duì)缺陷的CTL抽象過(guò)程更為清晰,同時(shí)為構(gòu)造規(guī)則庫(kù)的元數(shù)據(jù)集提供研究基礎(chǔ)。

    3.1.1 靜態(tài)缺陷的一般缺陷模式

    通過(guò)對(duì)靜態(tài)缺陷語(yǔ)法及語(yǔ)義特征的分析,本文將靜態(tài)缺陷的一般缺陷模式定義如下:

    定義1 基于語(yǔ)法及語(yǔ)義的靜態(tài)缺陷模式是一個(gè)三元組,M=(S,T,C),其中S表示一個(gè)或多個(gè)狀態(tài),T表示由狀態(tài)和狀態(tài)存在性構(gòu)成的事件,C表示事件發(fā)生的范圍。

    定義2 狀態(tài)存在性包括:不存在、存在、狀態(tài)組合邏輯(例如狀態(tài)間的與或關(guān)系)下的存在性。

    定義3 缺陷有關(guān)事件發(fā)生的范圍可劃分為:全局范圍,在某事件之前,在某事件之后,在事件A與事件B之間,直到發(fā)生某事件。

    以Java語(yǔ)言中的空指針異常為例,其缺陷的語(yǔ)義描述為“對(duì)一個(gè)不存在的對(duì)象調(diào)用其屬性或方法而導(dǎo)致的異常”,從該描述中可以提取出缺陷模式的基本表示S={s1,s2},s1表示對(duì)象值為null,s2表示調(diào)用對(duì)象的屬性或方法;T={t1,t2},t1表示“存在”s1,t2表示“存在”s2;C表示事件t1出現(xiàn)在事件t2之前。

    3.1.2 缺陷模式與CTL

    作為一種非線(xiàn)性的時(shí)態(tài)邏輯,CTL在命題邏輯的基礎(chǔ)上加入了時(shí)態(tài)算子,同時(shí)解決了線(xiàn)性時(shí)序邏輯中對(duì)所有路徑做全程量詞的限制。CTL的組成元素包括:原子命題、邏輯連接詞、時(shí)態(tài)連接詞及路徑量詞,其巴克斯范式如下:

    其中,F(xiàn)指某個(gè)未來(lái)狀態(tài),X表示下一個(gè)狀態(tài),G指所有未來(lái)狀態(tài),U指直到,A指所有路徑,E指存在一條路徑;?則指某個(gè)原子命題,它是CTL的基本單位[6]。舉例說(shuō)明CTL的用法:以started表示開(kāi)始狀態(tài),ready表示就緒狀態(tài)。則語(yǔ)句“存在一個(gè)某未來(lái)狀態(tài),使得開(kāi)始狀態(tài)成立且就緒狀態(tài)不成立”的CTL描述為:

    從CTL的基本描述可以分析得出其與缺陷模式M的對(duì)應(yīng)關(guān)系:S映射為原子命題?,T映射為S與邏輯連接詞的組合關(guān)系,C映射為T(mén)與時(shí)態(tài)連接詞和路徑量詞的組合關(guān)系。根據(jù)這一對(duì)應(yīng)關(guān)系結(jié)合CTL的邏輯規(guī)則,即可實(shí)現(xiàn)缺陷模式的CTL抽象[7]。以靜態(tài)缺陷分析中的文件輸入流關(guān)閉異常和空指針異常為例,本文通過(guò)以下兩步來(lái)抽象化缺陷。

    步驟1 根據(jù)缺陷含義分析缺陷模式,獲取相關(guān)原子命題。兩種缺陷的具體含義為:

    (1)文件輸入流關(guān)閉異常,指在開(kāi)啟了輸入流后,沒(méi)有對(duì)其進(jìn)行關(guān)閉而導(dǎo)致的異常。

    (2)空指針異常,指對(duì)一個(gè)不存在的對(duì)象(其指針為null)調(diào)用其屬性或方法而導(dǎo)致的異常。

    與以上兩種缺陷相關(guān)的原子命題,如表1所示。

    表1 缺陷及相關(guān)原子命題表示

    步驟2 根據(jù)缺陷模式,確定所要采用的邏輯連接詞、時(shí)態(tài)連接詞以及路徑量詞,得到最終的CTL公式表示形式如下所示。

    文件輸入流關(guān)閉異常:

    AG(malloc_fin_s→AF free_fin_s)

    該公式的含義:對(duì)于任意路徑下的所有狀態(tài),若某一狀態(tài)開(kāi)啟了文件輸入流s,則任意路徑的所有未來(lái)狀態(tài)會(huì)存在針對(duì)s的文件流關(guān)閉操作。

    空指針異常:

    AG(assign_null_s→!(EFinvoked_s))

    該公式的含義:對(duì)于任意路徑下的所有狀態(tài),若某一狀態(tài)將對(duì)象s賦值為null,則不存在未來(lái)狀態(tài)中會(huì)調(diào)用s的屬性或方法的路徑。

    以上兩個(gè)步驟可以成功地抽象出缺陷的規(guī)則化描述,并能分析出與該規(guī)則有關(guān)的原子命題和邏輯量詞。通過(guò)分析缺陷的一般模式,發(fā)現(xiàn)大部分原子命題都存在一定的復(fù)用性,若在分析過(guò)程中進(jìn)行統(tǒng)一管理與匹配,將顯著提高靜態(tài)缺陷分析的可擴(kuò)展性,這一發(fā)現(xiàn)正是積木式規(guī)則庫(kù)構(gòu)建的出發(fā)點(diǎn),也是規(guī)則庫(kù)中元數(shù)據(jù)集的原型。

    3.2 積木式構(gòu)建模式

    規(guī)則庫(kù)中會(huì)內(nèi)置缺陷規(guī)則的元數(shù)據(jù),因?yàn)槌绦蚍治鱿到y(tǒng)會(huì)涉及到大量的實(shí)時(shí)事件分析,若采用傳統(tǒng)的狀態(tài)機(jī)模式處理,會(huì)將元數(shù)據(jù)的事件關(guān)聯(lián)全部寫(xiě)入基本處理邏輯之中,使得程序臃腫不堪,同時(shí)嚴(yán)重影響到規(guī)則庫(kù)引擎的響應(yīng)與處理速度。因此,本文采取積木式構(gòu)建模式改進(jìn)這種不足。

    積木式構(gòu)建模式將事件分層,通過(guò)簡(jiǎn)單事件來(lái)搭建復(fù)雜事件。其特點(diǎn)是通過(guò)有限種基本事件模型和有限種組合形式,構(gòu)造復(fù)雜的事件。這使得在處理事件的過(guò)程中不用考慮事件間復(fù)雜的因果關(guān)系,符合人們處理事務(wù)時(shí)由簡(jiǎn)單到復(fù)雜的行為習(xí)慣,使事件的處理更為清晰,更專(zhuān)注于事件的關(guān)聯(lián)與匹配。本文利用積木式構(gòu)建模式的優(yōu)點(diǎn),將與規(guī)則有關(guān)的所有原子命題和邏輯量詞作為底層元數(shù)據(jù),通過(guò)積木式方法由用戶(hù)自定義缺陷規(guī)則并加入到缺陷規(guī)則集中,供規(guī)則庫(kù)引擎調(diào)用。

    以3.1節(jié)中的兩種靜態(tài)缺陷為例,其構(gòu)成的簡(jiǎn)易積木式規(guī)則庫(kù)模型如圖2所示,其中原子命題集、邏輯量詞集、缺陷規(guī)則集均以XM L形式描述。原子命題集存儲(chǔ)了表1中與缺陷有關(guān)的所有原子命題,邏輯量詞集存儲(chǔ)了缺陷有關(guān)的所有邏輯量詞,缺陷規(guī)則集中存儲(chǔ)了CTL形式的由以上兩種元素組成的缺陷規(guī)則。與此同時(shí),在規(guī)則庫(kù)引擎中會(huì)設(shè)計(jì)原子命題的匹配模塊,實(shí)現(xiàn)原子命題的動(dòng)態(tài)匹配。

    圖2 積木式缺陷規(guī)則庫(kù)模型示例圖

    需要注意的是,與規(guī)則集有關(guān)的原子命題是原子命題集的一部分,前者由用戶(hù)輸入,后者由系統(tǒng)內(nèi)置。

    規(guī)則庫(kù)引擎中的原子命題動(dòng)態(tài)匹配模塊也是積木式模式中的重要組成部分,將在后文中詳述。

    4 規(guī)則庫(kù)引擎

    規(guī)則庫(kù)引擎是缺陷規(guī)則庫(kù)的核心部分,其功能是將導(dǎo)入的待分析程序建模為K ripke結(jié)構(gòu)的有限狀態(tài)系統(tǒng),在有限狀態(tài)系統(tǒng)上動(dòng)態(tài)匹配并標(biāo)記與規(guī)則集關(guān)聯(lián)的原子命題集,再將其轉(zhuǎn)換為模型驗(yàn)證器可接受的數(shù)據(jù)結(jié)構(gòu)。

    4.1 控制流結(jié)構(gòu)抽取與分析

    該步驟關(guān)聯(lián)框架中的控制流結(jié)構(gòu)抽取模塊和命題動(dòng)態(tài)匹配模塊。規(guī)則庫(kù)引擎中源程序的目標(biāo)模型是一種有限狀態(tài)系統(tǒng),有限狀態(tài)系統(tǒng)的機(jī)制是通過(guò)狀態(tài)變量、輸入變量和常量來(lái)描述不同狀態(tài)下的不同變量;通過(guò)轉(zhuǎn)換關(guān)系來(lái)描述一個(gè)輸入如何導(dǎo)致系統(tǒng)從一個(gè)狀態(tài)轉(zhuǎn)換至多個(gè)狀態(tài);通過(guò)條件來(lái)描述對(duì)系統(tǒng)各可用路徑的限制,它符合K ripke結(jié)構(gòu)。

    4.1.1 控制流結(jié)構(gòu)與K ripke結(jié)構(gòu)

    設(shè)計(jì)控制流結(jié)構(gòu)抽取模塊的原因在于源程序控制流結(jié)構(gòu)與K ripke結(jié)構(gòu)的相似性。程序的控制流圖可以用來(lái)表示程序的控制流信息,它是一個(gè)程序所有可能執(zhí)行路徑的抽象表示,基本元素是節(jié)點(diǎn)和有向邊,其中節(jié)點(diǎn)代表的是無(wú)跳轉(zhuǎn)的代碼塊,有向邊是各代碼塊之間的跳轉(zhuǎn)關(guān)系,其數(shù)據(jù)結(jié)構(gòu)為:

    其中,V表示節(jié)點(diǎn)有限集,vs表示起始節(jié)點(diǎn),vf表示終結(jié)節(jié)點(diǎn),A代表節(jié)點(diǎn)間的有向邊集合。而K ripke結(jié)構(gòu)是添加了原子命題(AP)概念的有限自動(dòng)機(jī)的變種[8],其結(jié)構(gòu)如下:

    其中,S是有限狀態(tài)集;I是初始狀態(tài)集,I?S;R是表示狀態(tài)間轉(zhuǎn)換的二元關(guān)系,R?S×S;L是標(biāo)記方法,L:S→2AP,圖3是一個(gè)簡(jiǎn)單的K ripke結(jié)構(gòu)范例。

    該K ripke結(jié)構(gòu)可描述為:

    由此可見(jiàn),將源程序轉(zhuǎn)換為K ripke結(jié)構(gòu)只需經(jīng)過(guò)兩個(gè)步驟,首先是從源程序抽取出控制流結(jié)構(gòu),然后通過(guò)遍歷控制流節(jié)點(diǎn),對(duì)原子命題集中的原子命題進(jìn)行動(dòng)態(tài)匹配,若某個(gè)節(jié)點(diǎn)滿(mǎn)足某一命題,則在該節(jié)點(diǎn)標(biāo)記該命題為真。

    4.1.2 利用Soot抽取及分析控制流結(jié)構(gòu)

    直接通過(guò)字節(jié)碼取得控制流會(huì)遇到表達(dá)式指令不夠清晰,表達(dá)式樹(shù)構(gòu)造過(guò)于復(fù)雜[9]等情況,本文以Java程序分析為例,選擇Soot代替手工分析字節(jié)碼來(lái)抽取和分析控制流。Soot是開(kāi)源的Java字節(jié)碼分析與轉(zhuǎn)換工具[10],既可以作為單獨(dú)的類(lèi)優(yōu)化與檢查工具來(lái)使用,也可以作為Java字節(jié)碼的優(yōu)化與轉(zhuǎn)換框架,其最新版本可支持嵌入集成開(kāi)發(fā)環(huán)境,使得程序的分析更為易用和高效。本文在獲得控制流結(jié)構(gòu)的同時(shí)還需對(duì)控制流節(jié)點(diǎn)進(jìn)行分析,因此需要觸及到Soot的表現(xiàn)形式并深入到類(lèi)結(jié)構(gòu)。

    首先,要抽取出控制流結(jié)構(gòu),需要認(rèn)識(shí)Soot的中間表示——IR。Soot提供了四種用于代碼分析的中間表現(xiàn)形式,它們分別是:Baf、Grimp、Jimple、Shim ple[11]。每種IR都針對(duì)不同的分析做了不同程度的抽象,其中,Jimple是Soot的最主要IR,也是本文抽取和分析控制流信息時(shí)的主要操作對(duì)象。

    由于待分析程序結(jié)構(gòu)的多樣化,控制流的抽取也需針對(duì)不同場(chǎng)景[12],Soot構(gòu)建了五種場(chǎng)景結(jié)構(gòu):Scene、SootClass、SootM ethod、SootField及Body,分別表示待檢測(cè)程序本身、某個(gè)待檢測(cè)類(lèi)、類(lèi)中的某個(gè)方法、類(lèi)中的某個(gè)成員、函數(shù)體。Body與不同的IR相對(duì)應(yīng),本文分析采用了Jimple作為IR,故使用Jim pleBody作為方法的主要載體,以方法為單位,抽取程序的控制流信息。

    目前人們多通過(guò)Soot的命令行工具和Eclipse插件來(lái)查看程序的控制流結(jié)構(gòu)[13],這不利于在抽取過(guò)程中對(duì)控制流節(jié)點(diǎn)進(jìn)行分析,因此本文采用了繼承Soot的Transformer類(lèi)并重寫(xiě)其InternalTransform方法來(lái)解決該問(wèn)題,流程如下:

    (1)根據(jù)取得的JmpleBody,通過(guò)getMethod方式取得method。

    (2)以Body為參數(shù),通過(guò)BriefUnitGraph構(gòu)建Unit-Graph,得到控制流圖的基本結(jié)構(gòu)。

    (3)遍歷UnitGraph,對(duì)每個(gè)節(jié)點(diǎn)使用getSuccsof遍歷分支節(jié)點(diǎn)。

    由此即可實(shí)現(xiàn)控制流結(jié)構(gòu)的抽取及遍歷,為下一步原子命題的動(dòng)態(tài)匹配提供基礎(chǔ)。

    4.2 動(dòng)態(tài)匹配原子命題

    原子命題的動(dòng)態(tài)匹配是控制流結(jié)構(gòu)轉(zhuǎn)換的輔助模塊,它是在遍歷程序控制流節(jié)點(diǎn)的過(guò)程中,對(duì)與規(guī)則集相關(guān)的原子命題按照一定的匹配規(guī)則進(jìn)行動(dòng)態(tài)匹配。下面將從匹配規(guī)則和動(dòng)態(tài)匹配機(jī)制兩方面介紹該模塊。

    4.2.1 原子命題匹配規(guī)則

    圖3 K ripke結(jié)構(gòu)

    本文詳細(xì)分析了Jimple之后,發(fā)現(xiàn)可以通過(guò)Jim ple的聲明(Statement)實(shí)現(xiàn)原子命題的匹配,因?yàn)镴imple是類(lèi)型化的基于聲明的IR,與Java字節(jié)碼中約200個(gè)指令數(shù)相比,Jimple只需掌握15種Statement就能更加方便、標(biāo)準(zhǔn)地描述程序。在遍歷控制流節(jié)點(diǎn)過(guò)程中,針對(duì)每個(gè)節(jié)點(diǎn),取得其Statement類(lèi)型,以此為基礎(chǔ)取得命題匹配條件以及標(biāo)記命題所需的其他參數(shù),完成原子命題的匹配。

    對(duì)不同的原子命題而言,其匹配條件也各有不同,前文已經(jīng)提到,完善功能的系統(tǒng)中會(huì)內(nèi)置與一般缺陷或某一類(lèi)缺陷有關(guān)的所有原子命題,構(gòu)成原子命題集。因此,需要為原子命題集中的每種命題定義匹配規(guī)則。以圖2中的原子命題集為例,其對(duì)應(yīng)的匹配條件如表2。

    表2 原子命題的Jim ple匹配條件

    文中,原子命題的匹配與缺陷類(lèi)型是分開(kāi)的,在原子命題集體積較小時(shí),原子命題的匹配機(jī)制并不會(huì)對(duì)規(guī)則庫(kù)引擎的處理速度造成很大影響,但隨著原子命題集涵蓋范圍逐漸變廣,則需要定義更為高效的動(dòng)態(tài)匹配機(jī)制。

    4.2.2 改進(jìn)的原子命題匹配機(jī)制

    常見(jiàn)的元素匹配機(jī)制是通過(guò)分支判定語(yǔ)句if-else進(jìn)行逐層比對(duì),直至進(jìn)入判定結(jié)果為真的分支,該做法存在三方面的隱患:

    (1)當(dāng)待判定元素過(guò)多時(shí),將會(huì)相應(yīng)產(chǎn)生更多的判定語(yǔ)句,這可能會(huì)導(dǎo)致某些元素要經(jīng)過(guò)很長(zhǎng)的時(shí)間才能進(jìn)入其判定分支,影響處理速度。

    (2)若判定分支中的處理語(yǔ)句過(guò)于復(fù)雜,當(dāng)判定元素過(guò)多時(shí),會(huì)造成判定程序體積過(guò)大。

    (3)判定程序與各原子命題的匹配方法耦合性過(guò)高,無(wú)法有效地管理每種元素的判定規(guī)則。

    為解決該匹配機(jī)制造成的隱患,本文結(jié)合IOC思想設(shè)計(jì)了一種新的匹配方式,基于接口依賴(lài)注入的原子命題動(dòng)態(tài)匹配機(jī)制。

    IOC即控制反轉(zhuǎn),其中心思想是通過(guò)面向?qū)ο蠓▌t來(lái)解耦程序,也稱(chēng)依賴(lài)注入[14],它通過(guò)外部實(shí)體調(diào)控系統(tǒng)內(nèi)所有對(duì)象,在對(duì)象創(chuàng)建時(shí)返回該對(duì)象所依賴(lài)的引用。本文實(shí)現(xiàn)該機(jī)制的方法與規(guī)則庫(kù)的積木式模式相輔相成,為規(guī)則庫(kù)原子命題集中的每個(gè)原子命題定義匹配對(duì)象APmodelImp,且所有對(duì)象都實(shí)現(xiàn)通用接口Base-APmodel及其方法checkAP(),作為對(duì)應(yīng)的原子命題匹配方法。在主程序中只需遍歷原子命題集,根據(jù)命題集中的匹配對(duì)象名反射出對(duì)象的引用,賦值給通用接口,由通用接口調(diào)用匹配方法,具體實(shí)現(xiàn)見(jiàn)程序1。

    程序1原子命題動(dòng)態(tài)標(biāo)記算法偽代碼

    輸入:程序控制流信息,原子命題集

    輸出:標(biāo)記原子命題的控制流

    Begin

    for控制流節(jié)點(diǎn)node do

    for原子命題集元素ap do

    根據(jù)ap的名稱(chēng)反射出ap對(duì)應(yīng)的匹配類(lèi)APModelImp;

    將APModelImp實(shí)例化所得引用賦給BaseAPModel;

    i

    f BaseAPModel.checkAP()為真then

    創(chuàng)建原子命題標(biāo)記對(duì)象APObject;

    關(guān)聯(lián)node與APObject;

    將APObject加入標(biāo)記對(duì)象集合APLlist;

    end if

    end for

    end for

    end

    4.3 模型轉(zhuǎn)換

    規(guī)則庫(kù)引擎中模型轉(zhuǎn)換模塊的最終目標(biāo),是將前兩個(gè)功能模塊所得的K ripke結(jié)構(gòu)轉(zhuǎn)換為NuSMV模型驗(yàn)證器所接受的SMV語(yǔ)言[15]的同時(shí)保留程序的控制流節(jié)點(diǎn)信息及行信息,構(gòu)造缺陷集中各缺陷的實(shí)例,實(shí)現(xiàn)對(duì)缺陷和缺陷檢測(cè)結(jié)果的管理。

    由此可見(jiàn),該模塊首先要定義符合規(guī)則庫(kù)模型的SMV語(yǔ)言結(jié)構(gòu),同時(shí)需要設(shè)計(jì)大量數(shù)據(jù)結(jié)構(gòu)與相應(yīng)的轉(zhuǎn)換算法。

    規(guī)則庫(kù)引擎將本文分析缺陷所需的SMV結(jié)構(gòu)定義為以下四部分,以缺陷實(shí)例的構(gòu)造為入口,設(shè)計(jì)了對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu),見(jiàn)表3。這四部分的構(gòu)造方式如下:

    (1)遍歷輸出NodeLink中的所有控制流節(jié)點(diǎn)S;

    表3 數(shù)據(jù)結(jié)構(gòu)

    (2)取NodeLink頭節(jié)點(diǎn)作為初始節(jié)點(diǎn)I,遍歷并輸出NodeLink中每個(gè)節(jié)點(diǎn)的后繼節(jié)點(diǎn),得到狀態(tài)轉(zhuǎn)換關(guān)系R;

    (3)遍歷APList得到原子命題集合L;

    (4)遍歷BugList,取出每個(gè)BugObject中的AssertionString,獲得CTL形式的斷言集合A。

    以上數(shù)據(jù)結(jié)構(gòu)均通過(guò)在動(dòng)態(tài)匹配模塊中遍歷控制流節(jié)點(diǎn),分析元數(shù)據(jù)中的原子命題集與規(guī)則集實(shí)現(xiàn)其構(gòu)造。

    5 原型系統(tǒng)與實(shí)驗(yàn)結(jié)果

    依據(jù)圖2中的積木式規(guī)則庫(kù)模型,實(shí)現(xiàn)了原型系統(tǒng)以驗(yàn)證本文提出的構(gòu)造方法的可行性與有效性。首先是規(guī)則集的構(gòu)建,如圖4,用戶(hù)根據(jù)元數(shù)據(jù)來(lái)自定義缺陷,同時(shí)指定缺陷名稱(chēng),加入規(guī)則集,圖中三個(gè)列表分別代表從XM L文件轉(zhuǎn)換而來(lái)的原子命題集、邏輯量詞集和缺陷規(guī)則集。列表頂部為編輯區(qū)域,用于規(guī)則的添加和更新。缺陷規(guī)則列表中顯示了規(guī)則名稱(chēng)和規(guī)則的邏輯公式,可以通過(guò)點(diǎn)擊“edit”或“del”按鈕實(shí)現(xiàn)規(guī)則的編輯和刪除;點(diǎn)擊“添加規(guī)則”按鈕,實(shí)現(xiàn)規(guī)則的添加。

    圖4 原型系統(tǒng)-規(guī)則庫(kù)管理

    添加規(guī)則成功后,即可進(jìn)入原型系統(tǒng)的檢測(cè)界面,如圖5,左側(cè)是被檢測(cè)的源程序,首先根據(jù)缺陷集和元數(shù)據(jù)集對(duì)源程序進(jìn)行建模,得到SMV結(jié)構(gòu)的有限狀態(tài)系統(tǒng),建模結(jié)果如程序2(由于建模結(jié)果較長(zhǎng),只截取其中代表性的部分)。建模結(jié)果的VAR標(biāo)簽下輸出源程序的全部控制流節(jié)點(diǎn),ASSIGN標(biāo)簽下輸出控制流節(jié)點(diǎn)的轉(zhuǎn)換關(guān)系,DEFINE標(biāo)簽下輸出已標(biāo)記的原子命題同時(shí)指出原子命題標(biāo)記的控制流節(jié)點(diǎn)。

    程序2建模結(jié)果

    MODULE main

    VAR

    state:{stat0,stat1,…,stat15};

    ASSIGN

    圖5 原型系統(tǒng)-輸入流關(guān)閉異常的反例路徑

    init(state):=stat0;

    next(state):=case

    state=stat0:{stat1};

    state=stat1:{stat2};

    state=stat2:{stat3};

    state=stat3:{stat4,stat6};

    state=stat4:{stat5};

    ...

    state=stat14:{stat15};

    TRUE:state;

    esac;

    DEFINE

    param_r0:=state in{stat0};

    assign_null_n0:=state in{stat1};

    invoked_r0:=state in{stat2};

    invoked_n0:=state in{stat6};

    malloc_fin_r1:=state in{stat7};

    free_fin_r1:=state in{stat10};

    if_null_r0:=FALSE;

    圖5中右側(cè)為檢測(cè)結(jié)果,源程序共檢測(cè)出三個(gè)缺陷,分別為空指針異常NullException,文件輸入流關(guān)閉異常InputException以及入?yún)⑴锌债惓aram IfNullException。點(diǎn)擊缺陷條目,在“Counter Example”區(qū)域會(huì)顯示反例路徑,同時(shí)代碼區(qū)域會(huì)標(biāo)記反例行信息。反例路徑中的每個(gè)節(jié)點(diǎn)以按鈕方式顯示,以節(jié)點(diǎn)名加行號(hào)作為按鈕名稱(chēng),通過(guò)點(diǎn)擊節(jié)點(diǎn)按鈕,可以定位到代碼中該節(jié)點(diǎn)對(duì)應(yīng)的行,從而實(shí)現(xiàn)反例重現(xiàn)。從反例路徑可以很容易得出導(dǎo)致輸入流未關(guān)閉異常的原因:在行12處開(kāi)啟了輸入流后,跳轉(zhuǎn)至catch塊繼續(xù)執(zhí)行至結(jié)束,因而導(dǎo)致輸入流未關(guān)閉。

    空指針異常的反例路徑如圖6所示??梢缘贸鰧?dǎo)致缺陷的原因是在行5處將變量賦值為null,當(dāng)args.length小于或等于0時(shí),程序運(yùn)行到行9,造成空指針異常。

    圖6 原型系統(tǒng)-空指針異常的反例路徑

    入?yún)⑴锌债惓5姆蠢窂饺鐖D7,其含義是指“因方法入?yún)⒆兞吭谝们拔催M(jìn)行判空而可能引發(fā)的空指針異?!?,其CTL公式的表示形式為:

    AG(param&EF invoked->A[!invoked U if_null])其中原子命題param表示方法的輸入?yún)?shù),invoked指引用對(duì)象的屬性或方法,if_null表示判斷對(duì)象是否為空值。該CTL描述的語(yǔ)義是“對(duì)任意路徑下的所有狀態(tài),若某一個(gè)狀態(tài)定義了方法的入?yún)⒆兞壳椅磥?lái)存在一個(gè)狀態(tài)對(duì)該變量進(jìn)行了引用,則直到對(duì)變量判空之前不會(huì)對(duì)該變量進(jìn)行引用”。由圖7可以得出,方法入?yún)rgs在第6行引用其length屬性之前沒(méi)有進(jìn)行判空,若傳入的args為空則會(huì)導(dǎo)致空指針異常。

    圖7 原型系統(tǒng)-入?yún)⑴锌债惓5姆蠢窂?/p>

    為進(jìn)一步驗(yàn)證方法的適用性,以開(kāi)源軟件JBoss中的部分代碼作為檢測(cè)范例。從圖8中可以發(fā)現(xiàn),原型系統(tǒng)檢測(cè)出一條空指針異常。導(dǎo)致缺陷的原因是:在行20處將對(duì)象response置為null后,在行27調(diào)用了其方法,由此引發(fā)空指針異常。

    圖8 原型系統(tǒng)-JBoss代碼檢測(cè)結(jié)果

    實(shí)驗(yàn)結(jié)果表明,可以利用元數(shù)據(jù)集合中的原子命題將缺陷成功抽象為CTL表示,實(shí)現(xiàn)積木式缺陷規(guī)則集的構(gòu)建;待檢測(cè)程序經(jīng)過(guò)模型抽取、標(biāo)記與轉(zhuǎn)換過(guò)后能夠成功檢測(cè)出存在的缺陷,實(shí)現(xiàn)反例路徑跟蹤。

    同時(shí),在分析實(shí)驗(yàn)結(jié)果的過(guò)程中也發(fā)現(xiàn),與其他基于靜態(tài)分析技術(shù)的源碼檢測(cè)工具類(lèi)似,本文提出的方法不能處理動(dòng)態(tài)代碼關(guān)聯(lián)的原子命題,因此不可避免地會(huì)出現(xiàn)檢測(cè)結(jié)果的漏報(bào)與誤報(bào)。此外,檢測(cè)的準(zhǔn)確性還依賴(lài)于控制流圖的準(zhǔn)確構(gòu)建及狀態(tài)到原子命題的映射??赏ㄟ^(guò)使用高效且準(zhǔn)確的控制流抽取方法以及清晰的控制流節(jié)點(diǎn)的中間表示形式從外部來(lái)降低這兩種依賴(lài)性帶來(lái)的隱患;細(xì)化原子命題匹配規(guī)則及缺陷的邏輯描述,減少靜態(tài)分析方法可控范圍內(nèi)的漏報(bào)與誤報(bào)。

    6 結(jié)束語(yǔ)

    從形式化規(guī)約的角度出發(fā),構(gòu)建積木式缺陷規(guī)則庫(kù),在研究過(guò)程中實(shí)現(xiàn)了規(guī)則集的自動(dòng)構(gòu)建;源程序到有限狀態(tài)系統(tǒng)的動(dòng)態(tài)建模;結(jié)合規(guī)則集和NuSMV模型檢測(cè)器進(jìn)行模型檢查,返回帶有源程序行信息的缺陷路徑,實(shí)現(xiàn)原型系統(tǒng)驗(yàn)證了本文方法的有效性。

    在當(dāng)前的基礎(chǔ)上,仍需進(jìn)一步研究的問(wèn)題是:對(duì)不同原子命題的匹配規(guī)則進(jìn)行分析,提取共性部分,為存在共性的原子命題制定通用轉(zhuǎn)換規(guī)則,提高匹配效率及匹配準(zhǔn)確性;擴(kuò)充原子命題集,以擴(kuò)大缺陷檢測(cè)的覆蓋率,進(jìn)一步提升軟件的可用性。

    [1]A rtzi S,Kiezun A,Dolby J,et al.Finding bugs in Web applications using dynamic test generation and explicitstate model checking[J].IEEE Transactions on Software Engineering,2010,36(4):474-494.

    [2]Ball T,Levin V,Rajamani S K.A decade of software model checking with SLAM[J].Communications of the ACM,2011,54(7):68-76.

    [3]Yoo J,Jee E,Cha S.Formal modeling and verification of safety-critical software[J].Software,2009,26(3):42-49.

    [4]Choppy C,K lai K,Zidani H.Formal verification of UML state diagrams:a petri net based approach[J].ACM SIGSOFT Software Engineering Notes,2011,36(1):1-8.

    [5]Sl?tten V,K raemer F A,Herrmann P.Towards automatic generation of formal specifications to validate and verify reliable distributed systems:a method exemplified by an industrial case study[J].ACM SIGPLAN Notices,2012,47(3):147-156.

    [6]Cordeiro L,F(xiàn)ischer B,Marques-Silva J.SMT-based bounded model checking for embedded ANSI-C software[J].IEEE Transactions on Software Engineering,2012,38(4):957-974.

    [7]Ljungkrantz O,Akesson K,F(xiàn)abian M,et al.Formal specification and verification of industrial control logic components[J].IEEE Transactions on Automation Science and Engineering,2010,7(3):538-548.

    [8]Fioravanti F,Pettorossi A,Proietti M,et al.Generalization strategies for the verification of infinite state systems[J].TPLP,2013,13(2):175-199.

    [9]Liu P,Zhang C.Pert:the application-aware tailoring of java object persistence[J].IEEE Transactions on Software Engineering,2012,38(4):909-922.

    [10]FitzRoy-Dale N,Kuz I,Heiser G.Architecture optimisation with currawong[J].ACM SIGCOMM Computer Communication Review,2011,41(1):115-119.

    [11]Zhou C,F(xiàn)rankl P.JDAMA:Java database application mutation analyser[J].Software Testing,Verification and Reliability,2011,21(3):241-263.

    [12]Eichberg M,Sewe A.Encoding the Java virtual machine’s instruction set[J].Electronic Notes in Theoretical Computer Science,2011,264(4):35-50.

    [13]Girard A,Pola G,Tabuada P.Approximately bisimilar symbolic models for incrementally stable switched systems[J].IEEE Transactions on Automatic Control,2010,55(1):116-126.

    [14]Chang C,Lu C.Pattern-based framework for modularized software development and evolution robustness[J].Information and Software Technology,2011,53(4):307-316.

    [15]A rcaini P,Gargantini A,Riccobene E.A model advisor for NuSMV specifications[J].Innovations in Systems and Software Engineering,2011,7(2):97-107.

    猜你喜歡
    控制流原子命題
    原子究竟有多???
    原子可以結(jié)合嗎?
    帶你認(rèn)識(shí)原子
    抵御控制流分析的Python 程序混淆算法
    工控系統(tǒng)中PLC安全漏洞及控制流完整性研究
    電子科技(2021年2期)2021-01-08 02:25:58
    抵御控制流分析的程序混淆算法
    下一站命題
    基于控制流隱藏的代碼迷惑
    2012年“春季擂臺(tái)”命題
    2011年“冬季擂臺(tái)”命題
    女同久久另类99精品国产91| 可以在线观看的亚洲视频| 美女扒开内裤让男人捅视频| 久久精品亚洲精品国产色婷小说| 日韩欧美 国产精品| 色综合亚洲欧美另类图片| 51午夜福利影视在线观看| 国产真实乱freesex| 色尼玛亚洲综合影院| 亚洲午夜理论影院| 午夜免费成人在线视频| 五月玫瑰六月丁香| 国产成人影院久久av| 成年女人毛片免费观看观看9| 看黄色毛片网站| 成人特级黄色片久久久久久久| 久久这里只有精品中国| 亚洲国产欧美一区二区综合| 高清在线国产一区| 熟女电影av网| 国产精品久久久久久精品电影| 18禁美女被吸乳视频| 国产区一区二久久| 91在线观看av| 欧美av亚洲av综合av国产av| 两个人视频免费观看高清| 欧美色欧美亚洲另类二区| 国产av麻豆久久久久久久| 国产一区二区三区视频了| 久久精品国产清高在天天线| 久久九九热精品免费| 国产av一区在线观看免费| 欧美不卡视频在线免费观看 | 国产高清videossex| 亚洲一区中文字幕在线| 国产蜜桃级精品一区二区三区| 69av精品久久久久久| www国产在线视频色| 国产午夜精品论理片| www.自偷自拍.com| 香蕉丝袜av| xxxwww97欧美| 国产精品乱码一区二三区的特点| 国产又色又爽无遮挡免费看| 亚洲精华国产精华精| 精品久久久久久成人av| 欧美激情久久久久久爽电影| 国产精品久久久久久精品电影| 中亚洲国语对白在线视频| 欧美中文日本在线观看视频| 久久精品国产综合久久久| 成人国产一区最新在线观看| 国产一区二区激情短视频| 麻豆国产av国片精品| 蜜桃久久精品国产亚洲av| 成人国产综合亚洲| avwww免费| 国产成人精品久久二区二区91| 成人国语在线视频| 老司机在亚洲福利影院| 免费电影在线观看免费观看| 久久精品91无色码中文字幕| 久久伊人香网站| 国产精品99久久99久久久不卡| 男女下面进入的视频免费午夜| 欧美zozozo另类| 亚洲av电影不卡..在线观看| 成人高潮视频无遮挡免费网站| 女人高潮潮喷娇喘18禁视频| 露出奶头的视频| 女警被强在线播放| 国产伦一二天堂av在线观看| 免费看a级黄色片| 舔av片在线| 99久久精品国产亚洲精品| 99久久99久久久精品蜜桃| 欧美日本亚洲视频在线播放| 日韩欧美免费精品| www.精华液| 国产精品乱码一区二三区的特点| 美女午夜性视频免费| 最近最新中文字幕大全免费视频| 婷婷丁香在线五月| 国产精品99久久99久久久不卡| 国产免费av片在线观看野外av| 国模一区二区三区四区视频 | 国产精品亚洲一级av第二区| 久久精品国产清高在天天线| 国产亚洲av嫩草精品影院| 精品一区二区三区av网在线观看| 国产一级毛片七仙女欲春2| 91麻豆精品激情在线观看国产| 一本久久中文字幕| 波多野结衣巨乳人妻| 又粗又爽又猛毛片免费看| a级毛片a级免费在线| av片东京热男人的天堂| 国产精品一区二区三区四区免费观看 | 观看免费一级毛片| 黄色 视频免费看| 琪琪午夜伦伦电影理论片6080| 在线观看免费午夜福利视频| 久久久久久久久中文| 午夜福利18| а√天堂www在线а√下载| 亚洲第一欧美日韩一区二区三区| 欧美性长视频在线观看| 国产私拍福利视频在线观看| 午夜福利视频1000在线观看| 在线播放国产精品三级| 精品一区二区三区视频在线观看免费| 嫩草影院精品99| 成年女人毛片免费观看观看9| 免费无遮挡裸体视频| 国产私拍福利视频在线观看| 日韩大码丰满熟妇| 黄色a级毛片大全视频| 国产精品综合久久久久久久免费| 视频区欧美日本亚洲| 亚洲欧美激情综合另类| 亚洲色图av天堂| 搡老岳熟女国产| 麻豆av在线久日| 99热这里只有是精品50| 亚洲成人久久性| videosex国产| 亚洲avbb在线观看| 我的老师免费观看完整版| 亚洲精品美女久久久久99蜜臀| 国产真实乱freesex| 在线观看舔阴道视频| av国产免费在线观看| 免费看十八禁软件| 中文字幕高清在线视频| 色噜噜av男人的天堂激情| 午夜福利在线观看吧| 淫妇啪啪啪对白视频| 又粗又爽又猛毛片免费看| 国产黄色小视频在线观看| 亚洲精品国产一区二区精华液| 亚洲专区国产一区二区| 国产午夜精品久久久久久| x7x7x7水蜜桃| 一边摸一边做爽爽视频免费| АⅤ资源中文在线天堂| 欧美另类亚洲清纯唯美| 每晚都被弄得嗷嗷叫到高潮| 天天添夜夜摸| 中文在线观看免费www的网站 | 欧美3d第一页| 国产亚洲精品久久久久久毛片| 国产午夜精品久久久久久| 久久久国产成人精品二区| 白带黄色成豆腐渣| 国产午夜精品久久久久久| 国产成人欧美在线观看| 动漫黄色视频在线观看| 久久人妻福利社区极品人妻图片| 亚洲精品国产一区二区精华液| 日本黄色视频三级网站网址| 色综合站精品国产| 伦理电影免费视频| 人人妻,人人澡人人爽秒播| 亚洲精品中文字幕一二三四区| 日韩欧美在线二视频| 我的老师免费观看完整版| 国内毛片毛片毛片毛片毛片| 成人亚洲精品av一区二区| 妹子高潮喷水视频| 亚洲av熟女| 久久国产精品人妻蜜桃| 免费看a级黄色片| 午夜福利在线观看吧| 日日爽夜夜爽网站| 日本 av在线| 亚洲成av人片免费观看| 在线十欧美十亚洲十日本专区| 他把我摸到了高潮在线观看| 欧美人与性动交α欧美精品济南到| 久久久久免费精品人妻一区二区| 国产不卡一卡二| 禁无遮挡网站| 国产精品乱码一区二三区的特点| 欧美黄色片欧美黄色片| 成熟少妇高潮喷水视频| 亚洲 国产 在线| 岛国在线免费视频观看| 天堂av国产一区二区熟女人妻 | 很黄的视频免费| 欧美激情久久久久久爽电影| 男女床上黄色一级片免费看| 国产区一区二久久| 12—13女人毛片做爰片一| 国产黄色小视频在线观看| 精品第一国产精品| 亚洲国产精品999在线| 在线观看午夜福利视频| 日本熟妇午夜| 久久精品综合一区二区三区| 老司机福利观看| 999精品在线视频| 男女之事视频高清在线观看| 最近最新中文字幕大全电影3| 男人舔奶头视频| 最近最新免费中文字幕在线| 成人一区二区视频在线观看| 在线视频色国产色| 一本一本综合久久| 欧美精品亚洲一区二区| 免费看美女性在线毛片视频| 国产av一区在线观看免费| 国产精品久久久久久亚洲av鲁大| 啪啪无遮挡十八禁网站| 日韩欧美在线乱码| 老汉色av国产亚洲站长工具| 国产v大片淫在线免费观看| 精品国产超薄肉色丝袜足j| 国产精品自产拍在线观看55亚洲| 日本在线视频免费播放| 亚洲国产精品sss在线观看| 国产精华一区二区三区| 欧美乱码精品一区二区三区| 久久婷婷人人爽人人干人人爱| 别揉我奶头~嗯~啊~动态视频| 天天一区二区日本电影三级| 国产黄a三级三级三级人| 亚洲男人的天堂狠狠| 一进一出抽搐gif免费好疼| 欧美zozozo另类| 国产激情偷乱视频一区二区| avwww免费| 热99re8久久精品国产| 白带黄色成豆腐渣| 在线观看美女被高潮喷水网站 | 国产精品久久久久久精品电影| 免费在线观看亚洲国产| 老熟妇仑乱视频hdxx| 国产精品 国内视频| 真人做人爱边吃奶动态| 五月玫瑰六月丁香| 级片在线观看| 国产一区在线观看成人免费| 久9热在线精品视频| 国产熟女xx| 亚洲18禁久久av| 欧美极品一区二区三区四区| 天天躁夜夜躁狠狠躁躁| a级毛片在线看网站| 级片在线观看| 亚洲片人在线观看| 亚洲免费av在线视频| 亚洲中文字幕日韩| 亚洲国产精品成人综合色| 午夜日韩欧美国产| 麻豆国产97在线/欧美 | 国产蜜桃级精品一区二区三区| 日本撒尿小便嘘嘘汇集6| 亚洲人成网站在线播放欧美日韩| 国产亚洲精品久久久久5区| 国产成人av激情在线播放| 五月伊人婷婷丁香| 亚洲欧美激情综合另类| 伊人久久大香线蕉亚洲五| 嫁个100分男人电影在线观看| 成人永久免费在线观看视频| 天堂动漫精品| xxx96com| 免费电影在线观看免费观看| 成人三级做爰电影| 男女午夜视频在线观看| 日本一区二区免费在线视频| 亚洲午夜精品一区,二区,三区| av有码第一页| 夜夜躁狠狠躁天天躁| av欧美777| 成年免费大片在线观看| 97碰自拍视频| 国产真实乱freesex| 在线观看免费视频日本深夜| 久久中文字幕一级| 9191精品国产免费久久| 久久精品综合一区二区三区| 观看免费一级毛片| 国产91精品成人一区二区三区| 99久久综合精品五月天人人| 99国产极品粉嫩在线观看| 两性夫妻黄色片| 亚洲av五月六月丁香网| 大型av网站在线播放| 亚洲中文日韩欧美视频| 波多野结衣高清作品| 特大巨黑吊av在线直播| 成人国产一区最新在线观看| 一本一本综合久久| 日本黄色视频三级网站网址| 啪啪无遮挡十八禁网站| 老熟妇乱子伦视频在线观看| 舔av片在线| 亚洲精品av麻豆狂野| 亚洲,欧美精品.| 日韩欧美在线二视频| 国产在线观看jvid| 亚洲成a人片在线一区二区| 成人av一区二区三区在线看| 日韩高清综合在线| 亚洲欧美精品综合一区二区三区| 一个人免费在线观看电影 | 神马国产精品三级电影在线观看 | 在线视频色国产色| 狂野欧美激情性xxxx| 婷婷精品国产亚洲av在线| 一级作爱视频免费观看| 身体一侧抽搐| 香蕉国产在线看| 在线观看免费视频日本深夜| 母亲3免费完整高清在线观看| 黑人操中国人逼视频| 国产三级黄色录像| 可以在线观看毛片的网站| 国产91精品成人一区二区三区| 亚洲国产中文字幕在线视频| 亚洲欧美日韩无卡精品| 亚洲免费av在线视频| 波多野结衣高清无吗| 最近在线观看免费完整版| 夜夜看夜夜爽夜夜摸| 1024视频免费在线观看| 小说图片视频综合网站| 亚洲精品久久国产高清桃花| 欧美精品亚洲一区二区| 麻豆av在线久日| 国产乱人伦免费视频| 两个人视频免费观看高清| 国产午夜精品论理片| 精品久久久久久久毛片微露脸| 免费观看精品视频网站| 黄片小视频在线播放| √禁漫天堂资源中文www| 99re在线观看精品视频| 亚洲国产中文字幕在线视频| 国产真人三级小视频在线观看| 性欧美人与动物交配| 此物有八面人人有两片| xxxwww97欧美| 国产男靠女视频免费网站| 精品熟女少妇八av免费久了| 国产一级毛片七仙女欲春2| 黄片大片在线免费观看| 亚洲国产高清在线一区二区三| 久久天躁狠狠躁夜夜2o2o| 激情在线观看视频在线高清| 欧美成人性av电影在线观看| 久久精品亚洲精品国产色婷小说| av在线天堂中文字幕| 一区二区三区国产精品乱码| 久久精品综合一区二区三区| 日日摸夜夜添夜夜添小说| 亚洲18禁久久av| 亚洲在线自拍视频| 国产精品一区二区三区四区久久| 国产又黄又爽又无遮挡在线| 在线永久观看黄色视频| 一本精品99久久精品77| 久久久久久久久久黄片| 人妻丰满熟妇av一区二区三区| 国产精品一区二区三区四区久久| 夜夜躁狠狠躁天天躁| 亚洲精品美女久久久久99蜜臀| 精品久久久久久久久久免费视频| 国产高清视频在线观看网站| 高潮久久久久久久久久久不卡| 国产高清视频在线观看网站| 精品国产乱子伦一区二区三区| 丰满人妻一区二区三区视频av | 午夜福利视频1000在线观看| 动漫黄色视频在线观看| 国产高清有码在线观看视频 | 亚洲国产精品sss在线观看| 最好的美女福利视频网| 国产精品久久久av美女十八| 在线观看日韩欧美| 日韩中文字幕欧美一区二区| 中文字幕熟女人妻在线| 亚洲天堂国产精品一区在线| www日本黄色视频网| 热99re8久久精品国产| 999久久久精品免费观看国产| 久久久久久大精品| 国产aⅴ精品一区二区三区波| 老熟妇乱子伦视频在线观看| 男女下面进入的视频免费午夜| 国产97色在线日韩免费| 日韩欧美国产一区二区入口| 欧美日韩乱码在线| 天堂av国产一区二区熟女人妻 | 国产成人精品久久二区二区91| 国产1区2区3区精品| 中文字幕人成人乱码亚洲影| 久久精品成人免费网站| 看黄色毛片网站| 久久精品国产清高在天天线| 欧美丝袜亚洲另类 | 国产精品一区二区免费欧美| av国产免费在线观看| 免费在线观看黄色视频的| 曰老女人黄片| 精品久久久久久久毛片微露脸| 日本一本二区三区精品| 色噜噜av男人的天堂激情| 在线看三级毛片| 三级国产精品欧美在线观看 | 国产麻豆成人av免费视频| 麻豆成人午夜福利视频| 久久精品亚洲精品国产色婷小说| 欧美日韩亚洲综合一区二区三区_| 国产成+人综合+亚洲专区| 国产亚洲精品久久久久5区| 欧美激情久久久久久爽电影| 欧美成人一区二区免费高清观看 | 亚洲精品美女久久av网站| 99国产精品99久久久久| 男女之事视频高清在线观看| 国语自产精品视频在线第100页| www.www免费av| 日本黄色视频三级网站网址| 757午夜福利合集在线观看| 在线观看美女被高潮喷水网站 | 免费看美女性在线毛片视频| 成人高潮视频无遮挡免费网站| 老鸭窝网址在线观看| 国产精品久久久久久久电影 | 18禁裸乳无遮挡免费网站照片| 中文亚洲av片在线观看爽| 国产熟女午夜一区二区三区| 人人妻人人澡欧美一区二区| 老司机福利观看| 丰满的人妻完整版| 日日夜夜操网爽| 欧美日韩中文字幕国产精品一区二区三区| 一本大道久久a久久精品| 欧美在线一区亚洲| 精品一区二区三区视频在线观看免费| 无人区码免费观看不卡| 亚洲欧美日韩无卡精品| 国产高清videossex| 长腿黑丝高跟| 99久久99久久久精品蜜桃| 亚洲av第一区精品v没综合| 国产精品1区2区在线观看.| 成人手机av| 少妇粗大呻吟视频| 国产成人欧美在线观看| 丰满的人妻完整版| 黄色毛片三级朝国网站| 精品国产乱码久久久久久男人| 亚洲最大成人中文| 亚洲精品久久国产高清桃花| 999久久久国产精品视频| 国产精品亚洲av一区麻豆| 草草在线视频免费看| 久久国产精品人妻蜜桃| 精品久久久久久久毛片微露脸| 757午夜福利合集在线观看| 丝袜人妻中文字幕| www.自偷自拍.com| 欧美极品一区二区三区四区| 深夜精品福利| 精品高清国产在线一区| 51午夜福利影视在线观看| 小说图片视频综合网站| 女警被强在线播放| 午夜福利欧美成人| 午夜精品一区二区三区免费看| or卡值多少钱| 国产精品一区二区三区四区免费观看 | 国产主播在线观看一区二区| 精品国产乱子伦一区二区三区| 国产精品自产拍在线观看55亚洲| 国产精品98久久久久久宅男小说| 欧美日韩福利视频一区二区| 久久国产乱子伦精品免费另类| 日本三级黄在线观看| 天堂√8在线中文| 国产伦在线观看视频一区| 最近最新免费中文字幕在线| 国内少妇人妻偷人精品xxx网站 | 777久久人妻少妇嫩草av网站| 午夜精品在线福利| 久久久国产欧美日韩av| 中文在线观看免费www的网站 | 老熟妇乱子伦视频在线观看| 国产熟女午夜一区二区三区| 18禁黄网站禁片免费观看直播| 观看免费一级毛片| 黄色视频,在线免费观看| av免费在线观看网站| 成人av在线播放网站| 在线视频色国产色| 99热这里只有是精品50| 香蕉丝袜av| 一边摸一边做爽爽视频免费| aaaaa片日本免费| 两个人免费观看高清视频| 中文字幕久久专区| 国产亚洲精品久久久久5区| 国产亚洲精品久久久久久毛片| 三级毛片av免费| 国产真人三级小视频在线观看| 精品久久久久久久久久免费视频| 我要搜黄色片| 在线观看www视频免费| 国产亚洲欧美98| 久久精品国产清高在天天线| 韩国av一区二区三区四区| 18美女黄网站色大片免费观看| 一进一出抽搐gif免费好疼| 精品午夜福利视频在线观看一区| 免费高清视频大片| 欧美精品啪啪一区二区三区| 国产熟女午夜一区二区三区| 日韩 欧美 亚洲 中文字幕| 啦啦啦观看免费观看视频高清| 免费观看人在逋| 动漫黄色视频在线观看| 欧美中文日本在线观看视频| 天堂动漫精品| 成人高潮视频无遮挡免费网站| 亚洲色图 男人天堂 中文字幕| 美女大奶头视频| 久久热在线av| 男女之事视频高清在线观看| 人妻夜夜爽99麻豆av| 非洲黑人性xxxx精品又粗又长| 日本五十路高清| 最新在线观看一区二区三区| 精品电影一区二区在线| www日本黄色视频网| 亚洲一区高清亚洲精品| 亚洲美女黄片视频| 很黄的视频免费| 午夜福利18| 亚洲欧美日韩高清专用| 精品国产超薄肉色丝袜足j| 毛片女人毛片| 夜夜看夜夜爽夜夜摸| 给我免费播放毛片高清在线观看| 一区二区三区激情视频| 亚洲成av人片免费观看| 久久久久久人人人人人| 99热6这里只有精品| 神马国产精品三级电影在线观看 | 国产精品久久久久久久电影 | 久久精品国产亚洲av香蕉五月| 欧洲精品卡2卡3卡4卡5卡区| 国产欧美日韩一区二区三| 亚洲在线自拍视频| 麻豆国产97在线/欧美 | 99re在线观看精品视频| 久久伊人香网站| 欧美黄色片欧美黄色片| 免费一级毛片在线播放高清视频| 99国产综合亚洲精品| 岛国在线观看网站| 日本 欧美在线| 国产一级毛片七仙女欲春2| 久久草成人影院| 国产精品一区二区三区四区久久| 国内精品一区二区在线观看| 亚洲人与动物交配视频| 91麻豆精品激情在线观看国产| 久久精品亚洲精品国产色婷小说| 人成视频在线观看免费观看| 国产亚洲av高清不卡| 国产精品久久久久久人妻精品电影| 日本撒尿小便嘘嘘汇集6| 国产野战对白在线观看| 久久精品国产99精品国产亚洲性色| 嫩草影视91久久| 久久久国产成人免费| 好男人电影高清在线观看| 亚洲一区高清亚洲精品| 巨乳人妻的诱惑在线观看| 午夜成年电影在线免费观看| 久久久久久久久久黄片| 天堂av国产一区二区熟女人妻 | 男人的好看免费观看在线视频 | 可以在线观看的亚洲视频| 男女午夜视频在线观看| 午夜成年电影在线免费观看| 男女床上黄色一级片免费看| 亚洲av片天天在线观看| 久久久久久久精品吃奶| 亚洲电影在线观看av| 久久久精品国产亚洲av高清涩受| 精华霜和精华液先用哪个| 制服人妻中文乱码| 久久久久久久午夜电影| 亚洲成av人片在线播放无| 人成视频在线观看免费观看| 在线观看www视频免费| 欧美乱妇无乱码| 久久国产乱子伦精品免费另类| 日日夜夜操网爽| 在线观看午夜福利视频| 搡老岳熟女国产| 中文字幕高清在线视频| 毛片女人毛片| 亚洲美女视频黄频| 国产成+人综合+亚洲专区| 欧美日韩福利视频一区二区| 国产私拍福利视频在线观看| 成人高潮视频无遮挡免费网站| 久久久精品国产亚洲av高清涩受| 深夜精品福利| av免费在线观看网站|