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

    PPC和MIPS指令集下二進(jìn)制代碼中函數(shù)參數(shù)個(gè)數(shù)的識(shí)別方法

    2020-08-27 02:34:50尹小康劉鎏劉龍劉勝利
    關(guān)鍵詞:分析

    尹小康,劉鎏,劉龍,劉勝利

    PPC和MIPS指令集下二進(jìn)制代碼中函數(shù)參數(shù)個(gè)數(shù)的識(shí)別方法

    尹小康,劉鎏,劉龍,劉勝利

    (數(shù)學(xué)工程與先進(jìn)計(jì)算國家重點(diǎn)實(shí)驗(yàn)室,河南 鄭州 450001)

    函數(shù)參數(shù)個(gè)數(shù)的識(shí)別有助于函數(shù)原型的恢復(fù),是進(jìn)行數(shù)據(jù)流分析以及其他安全分析的基礎(chǔ)。為了提高對(duì)函數(shù)參數(shù)個(gè)數(shù)識(shí)別的準(zhǔn)確率,提出一種依據(jù)函數(shù)調(diào)用關(guān)系的投票機(jī)制來確定函數(shù)參數(shù)個(gè)數(shù)的算法—— Findargs。Findargs從PPC和MIPS指令集的函數(shù)調(diào)用特點(diǎn)出發(fā),利用函數(shù)調(diào)用關(guān)系和參數(shù)傳遞分析,識(shí)別函數(shù)參數(shù)的個(gè)數(shù),為函數(shù)原型的恢復(fù)提供幫助。為了評(píng)估Findargs的識(shí)別效果,選取大型的二進(jìn)制文件進(jìn)行了測試,并與radare2進(jìn)行了對(duì)比。實(shí)驗(yàn)結(jié)果表明,F(xiàn)indargs具有更高的準(zhǔn)確率。對(duì)于PPC指令集,其準(zhǔn)確率達(dá)到90.3%;對(duì)于MIPS指令集,其準(zhǔn)確率為86%。

    靜態(tài)分析;函數(shù)調(diào)用分析;參數(shù)個(gè)數(shù)識(shí)別;投票機(jī)制

    1 引言

    二進(jìn)制分析在安全研究中具有重大意義,在安全分析中的應(yīng)用主要有:二進(jìn)制代碼審計(jì)[1]、控制流完整性分析[2]、污點(diǎn)分析[3-4]、符號(hào)執(zhí)行[5-6]、漏洞修復(fù)[7]、代碼重用[8]、漏洞挖掘[9-11]等。在高級(jí)語言中,函數(shù)名、函數(shù)的參數(shù)個(gè)數(shù)、參數(shù)類型、函數(shù)的返回值等信息能夠有效幫助理解函數(shù)的功能。源代碼經(jīng)過編譯器編譯丟失了如高級(jí)語言C/C++中的數(shù)據(jù)類型、數(shù)據(jù)結(jié)構(gòu)、語義以及控制結(jié)構(gòu)等信息,這給研究者分析二進(jìn)制代碼造成了諸多障礙。因此,如何從二進(jìn)制代碼中恢復(fù)出丟失的信息成為二進(jìn)制分析的關(guān)鍵。對(duì)二進(jìn)制程序進(jìn)行逆向分析的第一步是對(duì)函數(shù)的識(shí)別,確定函數(shù)的起始位置、結(jié)束位置、函數(shù)的調(diào)用方式,以及函數(shù)的參數(shù)個(gè)數(shù)。二進(jìn)制代碼逆向分析的準(zhǔn)確率影響后續(xù)安全分析的正確性。

    函數(shù)參數(shù)個(gè)數(shù)的準(zhǔn)確識(shí)別是進(jìn)行函數(shù)原型識(shí)別的基礎(chǔ),是進(jìn)行數(shù)據(jù)流分析以及其他安全分析的前提。由于精簡過的二進(jìn)制程序中的符號(hào)表等信息被移除,無法直接獲得函數(shù)入口等相關(guān)信息[12],增加了對(duì)二進(jìn)制可執(zhí)行文件進(jìn)行分析的難度。Caballero等[13]提出了X86指令集下基于動(dòng)態(tài)分析的二進(jìn)制函數(shù)接口識(shí)別方法。在無源代碼和符號(hào)表的情況下,該方法對(duì)二進(jìn)制代碼進(jìn)行動(dòng)態(tài)分析,獲取函數(shù)的原型,以達(dá)到重用二進(jìn)制函數(shù)的目的。由于動(dòng)態(tài)分析無法獲取全面的信息,因此識(shí)別效果較差。radare2[14]是最新的二進(jìn)制分析工具,它擁有強(qiáng)大的分析功能,支持對(duì)不同架構(gòu)語言的反匯編,在“aaa”命令中實(shí)現(xiàn)了對(duì)二進(jìn)制函數(shù)分析的功能,在對(duì)PPC和MIPS指令集的二進(jìn)制函數(shù)進(jìn)行分析時(shí),發(fā)現(xiàn)函數(shù)參數(shù)個(gè)數(shù)的識(shí)別效果比較差。

    為提高函數(shù)參數(shù)個(gè)數(shù)的識(shí)別準(zhǔn)確率,本文提出并實(shí)現(xiàn)了一種基于函數(shù)調(diào)用關(guān)系的函數(shù)參數(shù)個(gè)數(shù)識(shí)別算法——Findargs,用于識(shí)別PPC和MIPS指令集下二進(jìn)制可執(zhí)行代碼中函數(shù)的參數(shù)個(gè)數(shù)。該方法結(jié)合PPC和MIPS指令集下函數(shù)參數(shù)的傳遞規(guī)則,通過分析函數(shù)調(diào)用時(shí)寄存器以及棧的使用情況,獲取二進(jìn)制函數(shù)的參數(shù)個(gè)數(shù)。為了提高識(shí)別的準(zhǔn)確率,F(xiàn)indargs分析獲得所有的函數(shù)調(diào)用關(guān)系,然后對(duì)每個(gè)函數(shù)的調(diào)用者進(jìn)行了分析,并通過投票機(jī)制,選取最有可能的參數(shù)個(gè)數(shù)。Findargs適用于對(duì)大型固件的分析,并且函數(shù)被調(diào)用的次數(shù)越多,準(zhǔn)確率越高。本文的主要工作如下。

    1) 分析了函數(shù)參數(shù)識(shí)別的問題,并提出了二進(jìn)制可執(zhí)行代碼中二進(jìn)制函數(shù)參數(shù)個(gè)數(shù)識(shí)別的概念。

    2) 提出并實(shí)現(xiàn)了基于函數(shù)調(diào)用關(guān)系的函數(shù)參數(shù)個(gè)數(shù)識(shí)別算法——Findargs。Findargs使用靜態(tài)分析的方法,無須動(dòng)態(tài)執(zhí)行二進(jìn)制文件,適用性較好。

    3) 選取大型的嵌入式系統(tǒng)固件,對(duì)該算法進(jìn)行了評(píng)估,并與現(xiàn)有的二進(jìn)制分析工具radare2進(jìn)行了對(duì)比。實(shí)驗(yàn)結(jié)果表明,F(xiàn)indargs具有更高的準(zhǔn)確率。

    2 問題描述

    2.1 問題定義

    二進(jìn)制函數(shù)是在二進(jìn)制可執(zhí)行文件中,通過函數(shù)識(shí)別技術(shù)識(shí)別出具有函數(shù)入口和出口的代碼片段。與高級(jí)語言中的函數(shù)類似,二進(jìn)制函數(shù)同樣具有函數(shù)名、函數(shù)參數(shù)、函數(shù)返回值等。

    參數(shù)傳遞指令序列是在函數(shù)調(diào)用指令前用于傳遞函數(shù)參數(shù)等信息的一段代碼片段。

    函數(shù)參數(shù)個(gè)數(shù)識(shí)別的目的是識(shí)別二進(jìn)制函數(shù)中函數(shù)傳遞參數(shù)的個(gè)數(shù),用于分析在二進(jìn)制函數(shù)調(diào)用時(shí)參數(shù)的傳遞情況,進(jìn)而分析程序的數(shù)據(jù)流的傳遞情況。

    2.2 二進(jìn)制函數(shù)調(diào)用特點(diǎn)

    函數(shù)參數(shù)的傳遞一般有3種方式[16]:棧傳遞、寄存器傳遞與全局變量進(jìn)行隱式參數(shù)傳遞。通過棧傳遞參數(shù),需要對(duì)參數(shù)的入棧順序進(jìn)行約定,并對(duì)棧的平衡方式進(jìn)行約定,最終確定由調(diào)用者還是被調(diào)用者來恢復(fù)棧平衡。對(duì)于使用寄存器傳遞參數(shù)來說,同樣需要確定哪些寄存器用于傳遞參數(shù),以及參數(shù)傳遞的順序,并且需要確定當(dāng)參數(shù)個(gè)數(shù)大于可用于傳遞參數(shù)的寄存器數(shù)時(shí),如何進(jìn)行參數(shù)傳遞。對(duì)于全局變量進(jìn)行隱式參數(shù)傳遞來說,通過設(shè)置全局變量來共享變量,在一個(gè)函數(shù)內(nèi)對(duì)該變量的修改會(huì)影響其他函數(shù)中該變量的值。對(duì)于使用全局變量進(jìn)行隱式參數(shù)傳遞,需要進(jìn)行數(shù)據(jù)流分析,才能從二進(jìn)制可執(zhí)行代碼中識(shí)別出全局變量。

    函數(shù)參數(shù)調(diào)用中常用的調(diào)用約定共有4種:_cdecl(C規(guī)范)、pascal、stdcall與fastcall。表1詳細(xì)展示了各個(gè)調(diào)用約定的參數(shù)傳遞方式和傳遞順序以及平衡棧者。由表1可知,_cdecl、pascal、stdcall均使用棧進(jìn)行參數(shù)的傳遞,fastcall利用處理器中寄存器的優(yōu)勢(shì)使用寄存器和棧來傳遞參數(shù)。

    表1 常見的函數(shù)調(diào)用約定

    下面對(duì)常用的調(diào)用約定的參數(shù)傳遞方式進(jìn)行詳細(xì)介紹。

    (1)使用棧傳遞參數(shù)

    棧作為一種先進(jìn)后出的數(shù)據(jù)結(jié)構(gòu)被廣泛地應(yīng)用。在調(diào)用函數(shù)時(shí),通過將參數(shù)壓入棧中將參數(shù)傳遞給子程序。函數(shù)調(diào)用結(jié)束后,對(duì)棧進(jìn)行平衡操作,將?;謴?fù)到函數(shù)調(diào)用前的狀態(tài)。當(dāng)函數(shù)具有多個(gè)參數(shù)時(shí),需要對(duì)參數(shù)的傳遞順序進(jìn)行約定,以及確定由函數(shù)調(diào)用者或者子程序來恢復(fù)棧的平衡。當(dāng)函數(shù)具有多個(gè)參數(shù)時(shí),_cdecl和stdcall約定參數(shù)的傳遞順序采用由右至左的順序,pascal約定參數(shù)傳遞順序采用由左至右的順序。對(duì)于棧的平衡方式,_cdecl是調(diào)用者對(duì)棧進(jìn)行平衡,而pascal、stdcall和fastcall使用子程序?qū)_M(jìn)行平衡。圖1為利用棧進(jìn)行函數(shù)參數(shù)的傳遞,該參數(shù)傳遞方式是從右至左,首先將第二個(gè)參數(shù)壓入棧中,然后將第一個(gè)參數(shù)壓入棧中,在使用參數(shù)時(shí)通過ebp或者sp進(jìn)行尋址。

    圖1 利用棧進(jìn)行函數(shù)參數(shù)傳遞

    Figure 1 Function arguments passing with stack

    (2)使用寄存器傳遞參數(shù)

    使用寄存器進(jìn)行參數(shù)傳遞具有快速高效的特點(diǎn),尤其當(dāng)函數(shù)的參數(shù)個(gè)數(shù)較少時(shí),直接將參數(shù)放入寄存器中進(jìn)行讀取,減少了一定的內(nèi)存操作。處理器中擁有多個(gè)寄存器,可以選擇部分寄存器用于函數(shù)參數(shù)的傳遞。由表1可知,fastcall采用寄存器和棧進(jìn)行函數(shù)參數(shù)的傳遞。當(dāng)函數(shù)參數(shù)較少時(shí),直接使用寄存器傳遞參數(shù),當(dāng)函數(shù)參數(shù)超過可用參數(shù)寄存器時(shí),則將多余的參數(shù)通過棧來傳遞。使用棧傳遞參數(shù)時(shí),約定了參數(shù)的傳遞順序和棧平衡操作者。對(duì)于fastcall,參數(shù)的傳遞順序因編譯器的不同而不同,但都是通過子程序來平衡棧。

    2.3 PPC和MIPS指令集下的函數(shù)參數(shù)傳遞

    表2列舉了PPC和MIPS指令集中約定可用于傳遞參數(shù)的寄存器。在PPC指令集中,寄存器r3作為函數(shù)的第一個(gè)參數(shù),剩余的參數(shù)分別依次放入r4 ~ r10,由此可知,PPC指令集中可用寄存器最多傳遞8個(gè)參數(shù)。在MIPS指令集下,分別使用編號(hào)為4 ~ 7的寄存器來傳遞參數(shù),名稱分別為$a0 ~ $a3,因此,MIPS指令集下可通過寄存器來傳遞參數(shù)的個(gè)數(shù)最大為4,多余的參數(shù)需要通過棧進(jìn)行傳遞。

    表2 PPC和MIPS指令集參數(shù)傳遞方式

    2.4 運(yùn)行實(shí)例

    下面以sub_801FDFA4和sub_600746B8函數(shù)參數(shù)的傳遞方式為例,具體分析PPC和MIPS指令集下函數(shù)參數(shù)的傳遞過程。在PPC指令下用于傳遞參數(shù)的寄存器為r3~r10,在調(diào)用函數(shù)sub_801FDFA4時(shí)使用了r3~r8寄存器,因此函數(shù)的參數(shù)個(gè)數(shù)為6。對(duì)于函數(shù)sub_600746B8,則為MIPS指令下的函數(shù),用于傳遞參數(shù)的寄存器為$a0~$a3,在調(diào)用函數(shù)sub_600746B8時(shí),在這段指令中使用了$a1, $a2, $a3寄存器以及進(jìn)行了兩壓?!皊w $v0, 0x40+var_30($sp)”和“sw $s2, 0x40+var_2C($sp)”。參數(shù)寄存器的使用具有以下事實(shí):參數(shù)寄存器是按照順序使用的,當(dāng)后一個(gè)寄存器用于傳遞參數(shù)時(shí),前一個(gè)寄存器必定用于傳遞參數(shù)。可知$a0也用于傳遞參數(shù),共有6個(gè)參數(shù)。PPC指令、MIPS指令下函數(shù)調(diào)用參數(shù)的傳遞分別如圖2、圖3所示。

    圖2 PPC指令下函數(shù)調(diào)用參數(shù)的傳遞

    Figure 2 Function arguments passing in PPC instruction

    圖3 MIPS指令下函數(shù)參數(shù)調(diào)用的傳遞

    Figure 3 Function arguments passing in MIPS instruction

    圖4 函數(shù)參數(shù)識(shí)別算法——Findargs

    Figure 4 Function argument identification algorithm—Findargs

    3 二進(jìn)制函數(shù)參數(shù)個(gè)數(shù)識(shí)別

    本節(jié)對(duì)二進(jìn)制函數(shù)參數(shù)的識(shí)別算法進(jìn)行詳細(xì)介紹。二進(jìn)制可執(zhí)行文件的函數(shù)參數(shù)個(gè)數(shù)識(shí)別算法——Findargs的流程如圖4所示。

    3.1 函數(shù)邊界的識(shí)別

    對(duì)函數(shù)邊界的識(shí)別是二進(jìn)制分析的基礎(chǔ),需采用的函數(shù)邊界識(shí)別方法是FRwithMBA[17],通過分析二進(jìn)制可執(zhí)行代碼,提取出函數(shù)的邊界,包括起始地址和結(jié)束地址,用于函數(shù)調(diào)用關(guān)系的分析。

    3.2 二進(jìn)制函數(shù)調(diào)用關(guān)系的建立與轉(zhuǎn)換

    函數(shù)調(diào)用關(guān)系的分析在二進(jìn)制逆向分析中具有重要作用,如用于惡意代碼分析[18]與分類[19]、計(jì)算代碼相似性[20-21]等,本文將函數(shù)的調(diào)用關(guān)系用于函數(shù)參數(shù)個(gè)數(shù)的識(shí)別。函數(shù)調(diào)用關(guān)系的分析是函數(shù)控制流圖生成以及研究數(shù)據(jù)流的基礎(chǔ),函數(shù)調(diào)用關(guān)系圖(FCG,function call graph)對(duì)理解大型程序有很大幫助,F(xiàn)CG反映了函數(shù)的結(jié)構(gòu)、可擴(kuò)展性等信息。

    按照分析目標(biāo)的不同,函數(shù)調(diào)用關(guān)系的分析可以分為源碼層面和二進(jìn)制層面;按照分析方式的不同,函數(shù)調(diào)用關(guān)系分析可以分為靜態(tài)分析和動(dòng)態(tài)分析。靜態(tài)分析依賴于對(duì)目標(biāo)語言的理解水平,對(duì)目標(biāo)語言中的函數(shù)調(diào)用指令分析的全面性,能夠遍歷分析所有分支,但是無法獲取間接函數(shù)調(diào)用的關(guān)系。動(dòng)態(tài)分析是借助函數(shù)運(yùn)行時(shí)的信息進(jìn)行分析,在程序運(yùn)行時(shí),能夠獲得相對(duì)于靜態(tài)分析更多的信息,但是對(duì)于程序未執(zhí)行到的分支則無法進(jìn)行分析。本文主要研究的是使用靜態(tài)分析方式分析二進(jìn)制可執(zhí)行代碼中的函數(shù)調(diào)用關(guān)系,獲取比較全面的函數(shù)直接調(diào)用關(guān)系,用于后續(xù)的函數(shù)參數(shù)的識(shí)別。

    與函數(shù)的邊界識(shí)別一樣,對(duì)二進(jìn)制代碼中函數(shù)關(guān)系的分析可以采用線性掃描的方式或者遞歸下降回溯掃描的方式。對(duì)后續(xù)的參數(shù)識(shí)別只需要取函數(shù)調(diào)用的第一層關(guān)系即可。因此,函數(shù)調(diào)用關(guān)系的分析采用靜態(tài)分析的方式,結(jié)合函數(shù)的邊界,采用線性掃描的技術(shù)對(duì)整個(gè)代碼段進(jìn)行分析。函數(shù)的邊界為函數(shù)的起始和結(jié)束地址,在每次解析函數(shù)調(diào)用關(guān)系時(shí),將整個(gè)函數(shù)的可執(zhí)行代碼取出進(jìn)行解析,通過解析生成格式為{函數(shù)地址:子程序1,子程序2,子程序3,…,子程序}的形式。在對(duì)所有的函數(shù)分析完成后,將格式轉(zhuǎn)換為{子程序:調(diào)用者1,調(diào)用者2,調(diào)用者3,…,調(diào)用者}的形式用于后續(xù)的函數(shù)參數(shù)的識(shí)別。

    3.3 基于調(diào)用關(guān)系的函數(shù)參數(shù)個(gè)數(shù)識(shí)別算法

    函數(shù)調(diào)用前的一段指令是對(duì)參數(shù)進(jìn)行傳遞的指令,為了分析函數(shù)參數(shù)傳遞的情況,只需對(duì)函數(shù)調(diào)用前的一段長度的指令進(jìn)行分析,這段代碼為參數(shù)傳遞指令序列。函數(shù)調(diào)用前,父函數(shù)會(huì)將調(diào)用子程序時(shí)需要的參數(shù)根據(jù)函數(shù)調(diào)用約定放入寄存器中或者壓入棧中。對(duì)二進(jìn)制函數(shù)指令序列進(jìn)行掃描分析,識(shí)別出其中的函數(shù)調(diào)用指令。選取函數(shù)調(diào)用前的一段指令序列作為函數(shù)參數(shù)傳遞指令序列,對(duì)參數(shù)傳遞指令序列進(jìn)行分析,主要包括兩個(gè)方面:對(duì)參數(shù)寄存器的使用情況和棧操作的情況進(jìn)行分析。對(duì)參數(shù)寄存器的使用情況分析主要是分析參數(shù)傳遞指令中使用了哪些參數(shù)寄存器,對(duì)于PPC指令主要分析r3 ~ r10寄存器的使用情況,對(duì)于MIPS指令則主要分析$a0 ~ $a3寄存器的使用情況。對(duì)于棧操作的指令分析,主要分析在參數(shù)傳遞指令中是否進(jìn)行了壓棧操作來傳遞參數(shù)。

    對(duì)于函數(shù)參數(shù)的傳遞,有以下情況:對(duì)于未使用棧進(jìn)行參數(shù)傳遞的函數(shù),函數(shù)參數(shù)個(gè)數(shù)不會(huì)超過參數(shù)寄存器的個(gè)數(shù),因?yàn)楫?dāng)參數(shù)寄存器足夠時(shí),必定會(huì)使用參數(shù)寄存器來傳遞參數(shù);并且當(dāng)后一個(gè)參數(shù)寄存器用于傳遞參數(shù)時(shí),前一個(gè)參數(shù)寄存器必定也用來傳遞參數(shù),如在PPC指令下進(jìn)行參數(shù)傳遞時(shí),如果r5寄存器被用于傳遞參數(shù),那么前面的r3和r4寄存器也一定被用于傳遞參數(shù)。

    由于編譯器的優(yōu)化,函數(shù)參數(shù)的傳遞位置可能發(fā)生改變,函數(shù)參數(shù)的傳遞會(huì)遠(yuǎn)離函數(shù)調(diào)用指令,因此僅對(duì)單個(gè)的函數(shù)調(diào)用進(jìn)行參數(shù)識(shí)別會(huì)出現(xiàn)識(shí)別錯(cuò)誤的情況。為解決參數(shù)識(shí)別錯(cuò)誤的問題,本文提出采用多函數(shù)調(diào)用分析的方法,即當(dāng)該函數(shù)存在多個(gè)調(diào)用者時(shí),對(duì)每個(gè)調(diào)用者都進(jìn)行函數(shù)參數(shù)傳遞分析,獲得該函數(shù)的參數(shù)個(gè)數(shù),然后使用基于投票的方法,選擇函數(shù)參數(shù)個(gè)數(shù)出現(xiàn)頻率最多的為函數(shù)參數(shù)的個(gè)數(shù)。

    通過對(duì)函數(shù)的調(diào)用關(guān)系的分析,能夠得到{子程序:調(diào)用者1,調(diào)用者2,調(diào)用者3,…,調(diào)用者}的函數(shù)調(diào)用關(guān)系。為了更準(zhǔn)確地獲得函數(shù)參數(shù)的個(gè)數(shù),本文首先分別計(jì)算函數(shù)的調(diào)用者中傳遞的參數(shù)個(gè)數(shù);然后基于投票的機(jī)制,對(duì)函數(shù)的參數(shù)個(gè)數(shù)進(jìn)行投票,獲得票數(shù)最多的為函數(shù)的參數(shù)個(gè)數(shù);最后運(yùn)用函數(shù)參數(shù)個(gè)數(shù)識(shí)別算法進(jìn)行函數(shù)參數(shù)個(gè)數(shù)的識(shí)別。

    函數(shù)參數(shù)個(gè)數(shù)識(shí)別算法——Findargs如下。

    1) 對(duì)參數(shù)變量進(jìn)行初始化,設(shè)置函數(shù)參數(shù)個(gè)數(shù)數(shù)組[],并對(duì)數(shù)組[]中元素初始化為0;

    2) 從函數(shù)調(diào)用關(guān)系集中取出一個(gè)元素,進(jìn)行函數(shù)參數(shù)個(gè)數(shù)的識(shí)別,當(dāng)取出所有元素后,結(jié)束執(zhí)行,進(jìn)行步驟5);

    3.4 運(yùn)行實(shí)例

    調(diào)用函數(shù)Func_37326dc8的函數(shù)關(guān)系如圖5所示。

    由圖5可知共有9個(gè)函數(shù)調(diào)用了該函數(shù),為了準(zhǔn)確識(shí)別函數(shù)Func_37326dc8的參數(shù)個(gè)數(shù),對(duì)調(diào)用函數(shù)Func_37326dc8的這9個(gè)函數(shù)進(jìn)行參數(shù)傳遞分析,最終選取出現(xiàn)次數(shù)最多的數(shù)為函數(shù)的參數(shù)個(gè)數(shù)。其中,根據(jù)函數(shù)Func_3092dabc傳遞的參數(shù)分析函數(shù)Func_37326dc8的參數(shù)個(gè)數(shù)為2,而對(duì)剩余的8個(gè)函數(shù)進(jìn)行參數(shù)傳遞分析獲得的函數(shù)Func_37326dc8的參數(shù)個(gè)數(shù)為3,因此函數(shù)Func_37326dc8的參數(shù)個(gè)數(shù)為3。經(jīng)驗(yàn)證結(jié)果正確。

    4 實(shí)驗(yàn)評(píng)估

    4.1 實(shí)驗(yàn)設(shè)置

    本節(jié)對(duì)Findargs的函數(shù)參數(shù)識(shí)別效果進(jìn)行評(píng)估,并與現(xiàn)有的工具radare2進(jìn)行對(duì)比。實(shí)驗(yàn)所用計(jì)算機(jī)的配置為Intel R CoreTM 6-core 3.7 GHz i7-8700K CPU and 32 GB RAM。radare2的版本為radare2 2.7.0-git 18197 @ linux-x86-64 git.2.6.0- 32-g3c8d7d53f。

    4.2 實(shí)驗(yàn)結(jié)果

    4.2.1 庫函數(shù)的識(shí)別效果

    為了驗(yàn)證函數(shù)參數(shù)個(gè)數(shù)的識(shí)別效果,需要選取擁有大量函數(shù)并且調(diào)用關(guān)系多樣的二進(jìn)制代碼。本文選取了路由器固件C2600-IPBA SEM-12.3(6f).BIN(PPC指令集)和C2900- UNIVERSALK9 - M-15.7(3)M2.BIN(MIPS指令集)為測試樣本,逆向分析得到二進(jìn)制中的C語言庫函數(shù),對(duì)函數(shù)參數(shù)個(gè)數(shù)的識(shí)別效果進(jìn)行驗(yàn)證,C語言部分庫函數(shù)的參數(shù)個(gè)數(shù)識(shí)別對(duì)比如表3所示。從表中可以看出該方法能夠準(zhǔn)確識(shí)別出函數(shù)的參數(shù)個(gè)數(shù)。

    表3 C語言部分庫函數(shù)參數(shù)個(gè)數(shù)識(shí)別效果對(duì)比

    “—”表示未在PPC指令集的二進(jìn)制文件中發(fā)現(xiàn)此函數(shù)

    圖5 調(diào)用函數(shù)Func_37326dc8的函數(shù)關(guān)系

    Figure 5 The reference relation of function Func_37326dc8

    由表3可知,F(xiàn)indargs對(duì)于常用庫函數(shù)的識(shí)別的效果較好,原因是庫函數(shù)調(diào)用的次數(shù)比較多,并且函數(shù)的參數(shù)個(gè)數(shù)較少,使用參數(shù)寄存器能夠滿足所有參數(shù)的傳遞。

    4.2.2 未知函數(shù)的識(shí)別效果

    為了能夠更準(zhǔn)確地評(píng)估Findargs的識(shí)別效果,本文從路由器固件中C2600-IPBASE- M-12.3(6f).BIN和C3725-I-M-12.3(1a).BIN逆向分析獲得函數(shù)的參數(shù)個(gè)數(shù),分別使用Findargs和radare2進(jìn)行了參數(shù)個(gè)數(shù)的識(shí)別,識(shí)別結(jié)果如表4所示。實(shí)驗(yàn)結(jié)果表明,與radare2相比,F(xiàn)indargs具有更高的準(zhǔn)確率。對(duì)于PPC指令集,F(xiàn)indargs準(zhǔn)確率達(dá)到90.3%;對(duì)于MIPS指令集,識(shí)別的準(zhǔn)確率較低,達(dá)到86.0%。在實(shí)驗(yàn)中,F(xiàn)indargs的輸出結(jié)果為函數(shù)的起始地址和參數(shù)個(gè)數(shù)對(duì)。而radare2首先通過命令“aaa”對(duì)二進(jìn)制可執(zhí)行文件進(jìn)行分析,然后通過“afll”命令輸出到文本中,并使用Python腳本對(duì)輸出的結(jié)果進(jìn)行提取以獲得函數(shù)的參數(shù)個(gè)數(shù)。

    表4 函數(shù)參數(shù)識(shí)別結(jié)果

    4.2.3 函數(shù)調(diào)用次數(shù)對(duì)識(shí)別效果的影響

    為了更好地展示Findargs的識(shí)別效果和函數(shù)調(diào)用次數(shù)對(duì)參數(shù)個(gè)數(shù)識(shí)別準(zhǔn)確率的影響,本文依據(jù)函數(shù)的調(diào)用次數(shù)對(duì)這些函數(shù)進(jìn)行了分類統(tǒng)計(jì)。對(duì)PPC和MIPS指令集分別統(tǒng)計(jì)了上述的300個(gè)函數(shù),分類統(tǒng)計(jì)結(jié)果為:對(duì)于PPC指令集,函數(shù)調(diào)用次數(shù)大于或等于2次的共有139個(gè),函數(shù)調(diào)用次數(shù)大于或等于3次的共有77個(gè),函數(shù)調(diào)用次數(shù)大于或等于4次的共有54個(gè);對(duì)于MIPS指令集,函數(shù)調(diào)用次數(shù)大于或等于2次的共有144個(gè),函數(shù)調(diào)用次數(shù)大于或等于3次的共有105個(gè),函數(shù)調(diào)用次數(shù)大于或等于4次的共有76個(gè)。函數(shù)調(diào)用次數(shù)對(duì)函數(shù)參數(shù)個(gè)數(shù)識(shí)別的影響如表5所示,其中,多調(diào)用分析是對(duì)所有的調(diào)用者進(jìn)行分析識(shí)別準(zhǔn)確的函數(shù)個(gè)數(shù),單調(diào)用分析是只分析其中的一個(gè)函數(shù)調(diào)用進(jìn)行分析識(shí)別準(zhǔn)確的函數(shù)個(gè)數(shù)。

    表6展示了不同調(diào)用次數(shù)下的函數(shù)參數(shù)個(gè)數(shù)的識(shí)別準(zhǔn)確率。由表中數(shù)據(jù)可知,函數(shù)調(diào)用次數(shù)越多,函數(shù)參數(shù)個(gè)數(shù)的識(shí)別準(zhǔn)確率越高,并且多調(diào)用分析的效果好于單調(diào)用分析。

    4.2.4 函數(shù)參數(shù)個(gè)數(shù)對(duì)識(shí)別效果的影響

    為了研究函數(shù)參數(shù)個(gè)數(shù)對(duì)參數(shù)識(shí)別準(zhǔn)確率的影響,本文對(duì)不同參數(shù)個(gè)數(shù)的函數(shù)進(jìn)行了統(tǒng)計(jì)(如表7所示),分別計(jì)算了識(shí)別的準(zhǔn)確率(如表8所示)。由表可知,函數(shù)的參數(shù)個(gè)數(shù)一般小于6個(gè)。整體上來說,在此范圍(參數(shù)小于6)內(nèi)函數(shù)識(shí)別的準(zhǔn)確率較高,由于PPC有8個(gè)參數(shù)寄存器,基本能夠滿足函數(shù)進(jìn)行參數(shù)的傳遞。對(duì)于MIPS指令而言,在參數(shù)個(gè)數(shù)大于4時(shí),需要借助棧進(jìn)行參數(shù)的傳遞,使用棧進(jìn)行參數(shù)的傳遞比使用參數(shù)寄存器傳遞復(fù)雜,因此識(shí)別的準(zhǔn)確率略低。后續(xù)將考慮結(jié)合數(shù)據(jù)流分析追蹤參數(shù)的使用情況來提高M(jìn)IPS指令集下函數(shù)參數(shù)個(gè)數(shù)識(shí)別的準(zhǔn)確率。此外,經(jīng)過分析函數(shù)調(diào)用的位置同樣影響函數(shù)參數(shù)個(gè)數(shù)的識(shí)別準(zhǔn)確率,位于函數(shù)頭部的函數(shù)調(diào)用由于借用了上層函數(shù)的調(diào)用參數(shù),沒有明顯的傳參行為,因此對(duì)存在此類函數(shù)調(diào)用的函數(shù)的識(shí)別準(zhǔn)確率較低。

    表5 函數(shù)參數(shù)個(gè)數(shù)識(shí)別效果隨調(diào)用次數(shù)的變化情況

    表6 不同調(diào)用次數(shù)下函數(shù)參數(shù)的識(shí)別準(zhǔn)確率

    表7 函數(shù)識(shí)別個(gè)數(shù)隨函數(shù)參數(shù)個(gè)數(shù)的變化

    表8 函數(shù)識(shí)別準(zhǔn)確率隨參數(shù)個(gè)數(shù)的變化

    5 結(jié)束語

    函數(shù)的參數(shù)個(gè)數(shù)作為函數(shù)原型中的一個(gè)重要特征,能夠輔助后續(xù)的二進(jìn)制程序分析。本文提出了二進(jìn)制函數(shù)參數(shù)個(gè)數(shù)分析算法——Findargs,來識(shí)別PPC和MIPS指令集下二進(jìn)制代碼中函數(shù)的參數(shù)個(gè)數(shù)。實(shí)驗(yàn)結(jié)果表明,F(xiàn)indargs具有較高的準(zhǔn)確率,對(duì)于PPC指令集的二進(jìn)制可執(zhí)行文件,識(shí)別準(zhǔn)確率達(dá)到90.3%;對(duì)于MIPS指令集的二進(jìn)制可執(zhí)行文件,識(shí)別準(zhǔn)確率稍低,為86.0%。并且,本文與現(xiàn)有的工具radare2進(jìn)行了對(duì)比,結(jié)果表明Findargs具有更高的準(zhǔn)確率。

    由于Findargs依賴于對(duì)參數(shù)寄存器的分析,對(duì)于_cdecl、pascal、stdcall僅使用棧進(jìn)行參數(shù)傳遞的方式適用性較差,但對(duì)多函數(shù)調(diào)用關(guān)系依據(jù)投票來選擇最準(zhǔn)確的參數(shù)個(gè)數(shù)的機(jī)制可以應(yīng)用到其他3種參數(shù)傳遞規(guī)范。這3種參數(shù)個(gè)數(shù)分析方法可以應(yīng)用到對(duì)fastcall參數(shù)傳遞方式的分析。當(dāng)使用fastcall進(jìn)行參數(shù)傳遞時(shí),函數(shù)調(diào)用傳遞的參數(shù)個(gè)數(shù)超過參數(shù)寄存器個(gè)數(shù)時(shí),參數(shù)傳遞的方式與上述3種方式相同。后續(xù)將考慮通過數(shù)據(jù)流分析追蹤參數(shù)的使用情況,來提高參數(shù)個(gè)數(shù)識(shí)別的準(zhǔn)確率。

    [1] DURDEN T. Automated vulnerability auditing in machine code[J]. Phrack Magazine, 2007, 64.

    [2] ABADI M, BUDIU M, ERLINGSSON ú, et al. Control-flow integrity principles, implementations, and applications[J]. ACM Transactions on Information and System Security (TISSEC), 2009, 13(1): 4.

    [3] CLAUSE J, LI W, ORSO A. Dytan: a generic dynamic taint analysis framework[C]//International Symposium on Software Testing and Analysis. 2007: 196-206.

    [4] NEWSOME J, SONG D X. Dynamic taint analysis for automatic detection, analysis, and signature generation of exploits on commodity software[C]//NDSS. 2005: 3-4.

    [5] STAATS M, PASAREANU C. Parallel symbolic execution for structural test generation[C]//The 19th International Symposium on Software Testing and Analysis. 2010: 183-194.

    [6] LI H, KIM T, BAT-ERDENE M, et al. Software vulnerability detection using backward trace analysis and symbolic execution[C]//2013 International Conference on Availability, Reliability and Security. 2013: 446-454.

    [7] PERKINS J H, KIM S, LARSEN S, et al. Automatically patching errors in deployed software[C]//The ACM SIGOPS 22nd Symposium on Operating Systems Principles. 2009: 87-102.

    [8] SHACHAM H. The geometry of innocent flesh on the bone: return-into-libc without function calls (on the x86)[C]//ACM Conference on Computer and Communications Security. 2007: 552-561.

    [9] SONG D, BRUMLEY D, YIN H, et al. BitBlaze: a new approach to computer security via binary analysis[C]//International Conference on Information Systems Security. 2008: 1-25.

    [10] SHOSHITAISHVILI Y, WANG R, SALLS C, et al. Sok:(state of) the art of war: offensive techniques in binary analysis[C]//2016 IEEE Symposium on Security and Privacy (SP). 2016: 138-157.

    [11] 李珍, 鄒德清, 王澤麗, 等. 面向源代碼的軟件漏洞靜態(tài)檢測綜述[J]. 網(wǎng)絡(luò)與信息安全學(xué)報(bào), 2019, 5(1): 1-14.

    LI Z, ZOU D Q, WANG Z L, et al. Survey on static software vulnerability detection for source code[J]. Chinese Journal of Network and Information Security, 2019, 5(1): 1-14.

    [12] MENG X, MILLER B P. Binary code is not easy[C]//The 25th International Symposium on Software Testing and Analysis. 2016: 24-35.

    [13] CABALLERO J, JOHNSON N M, MCCAMANT S, et al. Binary code extraction and interface identification for security applications[R]. California Univ Berkeley Dept of Electrical Engineering and Computer Science, 2009.

    [14] Radare. The official radare2 book (1st edition)[EB].

    [15] BAO T, BURKET J, WOO M, et al. BYTEWEIGHT: learning to recognize functions in binary code[C]//The 23rd USENIX Security Symposium. 2014: 845-860.

    [16] 段鋼. 加密與解密 (第四版) [M]. 北京: 電子工業(yè)出版社, 2018: 104-105.

    DUAN G. Encryption and decryption (4th edition) [M]. Beijing: Publishing House of Electronics Industry, 2018: 104-105.

    [17] YIN X, LIU S, LIU L, et al. Function recognition in stripped binary of embedded devices[J]. IEEE Access, 2018, 6: 75682-75694.

    [18] HU X, CHIUEH T, SHIN K G. Large-scale malware indexing using function-call graphs[C]//The 16th ACM Conference on Computer and communications security. 2009: 611-620.

    [19] HASSEN M, CHAN P K. Scalable function call graph-based malware classification[C]//The Seventh ACM on Conference on Data and Application Security and Privacy. 2017: 239-248.

    [20] HUANG D X, TANG Y, WANG Y, et al. Toward efficient and accurate function‐call graph matching of binary codes[J]. Concurrency and Computation: Practice and Experience, 2018, 31(21).

    [21] KONG D, YAN G. Discriminant malware distance learning on structural information for automated malware classification[C]//The 19th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. 2013: 1357-1365.

    Function argument number identification instripped binary under PPC and MIPS instruction set

    YIN Xiaokang, LIU Liu, LIU Long, LIU Shengli

    State Key Laboratory of Mathematical Engineering and Advanced Computing, Zhengzhou 450001, China

    The identification of the number of function argument contributes to the recovery of the function prototype and is the basis for data flow analysis and other security analysis. In order to improve the accuracy of the recognition of the number of function parameters, an algorithm (Findargs) which determines the number of parameters of the function according to the voting mechanism of the function call relationship was proposed. Findargs starts from the function call characteristics of PPC and MIPS instruction set, and uses function call relationship combined with argument pass analysis to identify the number of function arguments, which can help to recover function prototype. In order to evaluate the recognition effect of Findargs, a large binary file was selected and tested it with radare2. The experiments results show that Findargs has higher accuracy, and the accuracy rate for PPC instruction set reaches 90.3%. For MIPS instruction set, the accuracy rate is 86%.

    static analysis, function call resolve, argument number identification, voting mechanism

    s: The National Key R&D Program of China (2016YFB0801505), Science & Technology Commission Foundation Strengthening Project (2019-JCJQ-ZD-113)

    TP309

    A

    10.11959/j.issn.2096?109x.2020047

    尹小康(1994-),男,河南周口人,數(shù)學(xué)工程與先進(jìn)計(jì)算國家重點(diǎn)實(shí)驗(yàn)室博士生,主要研究方向?yàn)榫W(wǎng)絡(luò)空間安全和逆向工程。

    劉鎏(1998-),女,安徽合肥人,主要研究方向?yàn)榫W(wǎng)絡(luò)空間安全。

    劉龍(1983-),男,河南尉氏人,數(shù)學(xué)工程與先進(jìn)計(jì)算國家重點(diǎn)實(shí)驗(yàn)室副教授,主要研究方向?yàn)榫W(wǎng)絡(luò)空間安全和機(jī)器學(xué)習(xí)。

    劉勝利(1973-),男,河南周口人,博士,數(shù)學(xué)工程與先進(jìn)計(jì)算國家重點(diǎn)實(shí)驗(yàn)室教授,主要研究方向?yàn)榫W(wǎng)絡(luò)空間安全。

    論文引用格式:尹小康, 劉鎏, 劉龍, 等. PPC和MIPS指令集下二進(jìn)制代碼中函數(shù)參數(shù)個(gè)數(shù)的識(shí)別方法[J]. 網(wǎng)絡(luò)與信息安全學(xué)報(bào), 2020, 6(4): 95-103.

    YIN X K, LIU L, LIU L, et al. Function argument number identification in stripped binary under PPC and MIPS instruction set[J]. Chinese Journal of Network and Information Security, 2020, 6(4): 95-103.

    2019?07?29;

    2019?10?13

    劉勝利,mr.shengliliu@gmail.com

    國家重點(diǎn)研發(fā)計(jì)劃基金(2016YFB0801505);科技委基礎(chǔ)加強(qiáng)項(xiàng)目(2019-JCJQ-ZD-113)

    猜你喜歡
    分析
    禽大腸桿菌病的分析、診斷和防治
    隱蔽失效適航要求符合性驗(yàn)證分析
    電力系統(tǒng)不平衡分析
    電子制作(2018年18期)2018-11-14 01:48:24
    電力系統(tǒng)及其自動(dòng)化發(fā)展趨勢(shì)分析
    經(jīng)濟(jì)危機(jī)下的均衡與非均衡分析
    對(duì)計(jì)劃生育必要性以及其貫徹實(shí)施的分析
    GB/T 7714-2015 與GB/T 7714-2005對(duì)比分析
    出版與印刷(2016年3期)2016-02-02 01:20:11
    網(wǎng)購中不良現(xiàn)象分析與應(yīng)對(duì)
    中西醫(yī)結(jié)合治療抑郁癥100例分析
    偽造有價(jià)證券罪立法比較分析
    1000部很黄的大片| 国模一区二区三区四区视频| 一卡2卡三卡四卡精品乱码亚洲| 午夜视频国产福利| 亚洲电影在线观看av| av国产免费在线观看| 嫩草影院精品99| 老司机影院成人| 亚洲人成网站在线播| 久久久久久久久久成人| 亚洲欧美精品专区久久| 综合色av麻豆| 少妇人妻精品综合一区二区| 久久久久久久久中文| 国产高潮美女av| 97超视频在线观看视频| 亚洲精品国产av成人精品| 欧美另类亚洲清纯唯美| 白带黄色成豆腐渣| 亚洲欧美日韩无卡精品| 最近中文字幕高清免费大全6| 少妇熟女欧美另类| 久久久久免费精品人妻一区二区| 人人妻人人澡欧美一区二区| 噜噜噜噜噜久久久久久91| 国产老妇伦熟女老妇高清| 精品久久久久久久久久久久久| 岛国毛片在线播放| 色噜噜av男人的天堂激情| 一级毛片久久久久久久久女| 超碰97精品在线观看| 看黄色毛片网站| 男的添女的下面高潮视频| 亚洲精品乱久久久久久| 国产精品熟女久久久久浪| 中文在线观看免费www的网站| 伦理电影大哥的女人| 日本午夜av视频| 偷拍熟女少妇极品色| 久久人人爽人人片av| 天堂av国产一区二区熟女人妻| 亚洲av日韩在线播放| 免费电影在线观看免费观看| 午夜老司机福利剧场| 亚洲人成网站在线播| 伦理电影大哥的女人| 亚洲精品成人久久久久久| 少妇裸体淫交视频免费看高清| 久99久视频精品免费| 日本三级黄在线观看| 黄色配什么色好看| 菩萨蛮人人尽说江南好唐韦庄 | 国产中年淑女户外野战色| 国产免费又黄又爽又色| 久久热精品热| 免费看美女性在线毛片视频| 晚上一个人看的免费电影| 欧美激情国产日韩精品一区| 免费观看a级毛片全部| 中国国产av一级| 99热全是精品| 欧美高清成人免费视频www| 边亲边吃奶的免费视频| 亚洲av福利一区| 午夜福利视频1000在线观看| 大又大粗又爽又黄少妇毛片口| 九九在线视频观看精品| 日日撸夜夜添| 1024手机看黄色片| 赤兔流量卡办理| 欧美又色又爽又黄视频| 日本免费a在线| 99热这里只有是精品在线观看| 亚洲人成网站在线观看播放| 欧美日本亚洲视频在线播放| 一夜夜www| 欧美3d第一页| 黄色配什么色好看| 99热网站在线观看| 日韩亚洲欧美综合| 大又大粗又爽又黄少妇毛片口| 亚洲中文字幕一区二区三区有码在线看| 久久久久久伊人网av| 最后的刺客免费高清国语| 级片在线观看| 纵有疾风起免费观看全集完整版 | 精品久久国产蜜桃| 在线免费观看不下载黄p国产| 国产精品电影一区二区三区| 神马国产精品三级电影在线观看| 校园人妻丝袜中文字幕| 直男gayav资源| 99视频精品全部免费 在线| 色吧在线观看| 久久久国产成人免费| 精品99又大又爽又粗少妇毛片| 精品国内亚洲2022精品成人| 岛国毛片在线播放| 人人妻人人澡欧美一区二区| 美女黄网站色视频| 69av精品久久久久久| 午夜激情福利司机影院| 久久久a久久爽久久v久久| 国产伦在线观看视频一区| 国产午夜精品论理片| 亚洲,欧美,日韩| 看十八女毛片水多多多| 欧美日韩综合久久久久久| 一本—道久久a久久精品蜜桃钙片 精品乱码久久久久久99久播 | 成人无遮挡网站| 成人av在线播放网站| 少妇人妻精品综合一区二区| 久久精品国产鲁丝片午夜精品| 国产精品麻豆人妻色哟哟久久 | www.av在线官网国产| 国产精品久久久久久久电影| 成人三级黄色视频| 91久久精品国产一区二区成人| 国产av一区在线观看免费| 免费观看在线日韩| 免费看美女性在线毛片视频| 直男gayav资源| 亚洲第一区二区三区不卡| 又粗又硬又长又爽又黄的视频| 乱系列少妇在线播放| 中文字幕av在线有码专区| 免费看a级黄色片| 天美传媒精品一区二区| 别揉我奶头 嗯啊视频| 插逼视频在线观看| 狂野欧美激情性xxxx在线观看| 99热6这里只有精品| 色5月婷婷丁香| 人人妻人人澡欧美一区二区| 18禁裸乳无遮挡免费网站照片| 99久久人妻综合| 精品国产一区二区三区久久久樱花 | 一边亲一边摸免费视频| 如何舔出高潮| 色网站视频免费| 国产成人精品婷婷| 成人鲁丝片一二三区免费| 免费看光身美女| 久久婷婷人人爽人人干人人爱| 午夜福利视频1000在线观看| 老师上课跳d突然被开到最大视频| 久久精品91蜜桃| 精品午夜福利在线看| 精品一区二区三区视频在线| 97超碰精品成人国产| 97人妻精品一区二区三区麻豆| 99久久无色码亚洲精品果冻| 国产精品野战在线观看| 久久精品久久久久久噜噜老黄 | 边亲边吃奶的免费视频| 少妇裸体淫交视频免费看高清| 亚洲精品乱码久久久v下载方式| 亚洲电影在线观看av| 国产亚洲最大av| 国产精品伦人一区二区| 永久网站在线| 中文字幕熟女人妻在线| 亚洲国产精品国产精品| 2021天堂中文幕一二区在线观| 天美传媒精品一区二区| 日本一本二区三区精品| 美女大奶头视频| 一区二区三区免费毛片| 尾随美女入室| 爱豆传媒免费全集在线观看| 麻豆乱淫一区二区| 成年版毛片免费区| 成年女人永久免费观看视频| 别揉我奶头 嗯啊视频| 国产免费一级a男人的天堂| 最近视频中文字幕2019在线8| 国产精品久久电影中文字幕| 国产三级中文精品| 性色avwww在线观看| 美女被艹到高潮喷水动态| 村上凉子中文字幕在线| 日韩亚洲欧美综合| 内射极品少妇av片p| 色吧在线观看| 如何舔出高潮| 精品人妻偷拍中文字幕| 69av精品久久久久久| 夜夜爽夜夜爽视频| 亚洲美女视频黄频| 人妻系列 视频| h日本视频在线播放| 亚洲熟妇中文字幕五十中出| 欧美另类亚洲清纯唯美| 2022亚洲国产成人精品| 国产精华一区二区三区| 精品酒店卫生间| 久久精品影院6| 国产单亲对白刺激| 欧美精品一区二区大全| 久久精品影院6| 水蜜桃什么品种好| av专区在线播放| 一区二区三区高清视频在线| 久久久久久久久久黄片| 色播亚洲综合网| 国产精品伦人一区二区| 麻豆一二三区av精品| 国产免费福利视频在线观看| 婷婷六月久久综合丁香| 午夜福利在线观看吧| 国产单亲对白刺激| av在线亚洲专区| 亚洲精品aⅴ在线观看| 国产成人免费观看mmmm| 18禁在线播放成人免费| 啦啦啦啦在线视频资源| 国产av码专区亚洲av| 久久久精品欧美日韩精品| 尤物成人国产欧美一区二区三区| 亚洲精品日韩av片在线观看| 中文字幕精品亚洲无线码一区| h日本视频在线播放| 97在线视频观看| av线在线观看网站| 国产精品无大码| 男人和女人高潮做爰伦理| 日韩国内少妇激情av| 国产亚洲91精品色在线| 国产av一区在线观看免费| 国产精品国产三级专区第一集| 亚洲va在线va天堂va国产| 97超碰精品成人国产| 日韩欧美精品v在线| 一级毛片久久久久久久久女| 亚洲久久久久久中文字幕| 日本黄色视频三级网站网址| 麻豆国产97在线/欧美| 最近的中文字幕免费完整| 欧美97在线视频| 亚洲成人av在线免费| 久久这里只有精品中国| 搡老妇女老女人老熟妇| 久久久久久久国产电影| 岛国毛片在线播放| 日韩精品有码人妻一区| 成人无遮挡网站| 麻豆乱淫一区二区| 亚洲在线观看片| 免费av不卡在线播放| 欧美日韩精品成人综合77777| 亚洲aⅴ乱码一区二区在线播放| 成人一区二区视频在线观看| 亚洲av.av天堂| 久久久国产成人精品二区| 永久网站在线| 性色avwww在线观看| 内射极品少妇av片p| 九色成人免费人妻av| 国产在线一区二区三区精 | 18禁在线无遮挡免费观看视频| 久久久久久久久中文| 国产成人免费观看mmmm| 久久草成人影院| 91久久精品电影网| av国产久精品久网站免费入址| 中文资源天堂在线| 国国产精品蜜臀av免费| 国产探花在线观看一区二区| 国产私拍福利视频在线观看| 亚洲精品乱码久久久v下载方式| 国产亚洲5aaaaa淫片| 日本一二三区视频观看| 精品国产一区二区三区久久久樱花 | 国产美女午夜福利| 国产一级毛片七仙女欲春2| 亚洲欧美日韩卡通动漫| 国产伦一二天堂av在线观看| 久久久精品欧美日韩精品| 国产成人a区在线观看| 久久精品久久久久久噜噜老黄 | 久久婷婷人人爽人人干人人爱| 国产视频内射| 亚洲精品亚洲一区二区| 国产人妻一区二区三区在| av福利片在线观看| 欧美zozozo另类| 国产亚洲精品av在线| 国产成人精品婷婷| 尤物成人国产欧美一区二区三区| 成人三级黄色视频| 免费看av在线观看网站| 欧美日韩一区二区视频在线观看视频在线 | 国产精品99久久久久久久久| 欧美性猛交╳xxx乱大交人| 欧美97在线视频| 久久久久久久久大av| 国产精品蜜桃在线观看| 日韩欧美精品v在线| 久久精品夜色国产| 国产精品综合久久久久久久免费| 久久久色成人| 大话2 男鬼变身卡| 午夜精品在线福利| 寂寞人妻少妇视频99o| 国产精品久久久久久av不卡| 免费无遮挡裸体视频| 欧美性猛交╳xxx乱大交人| 欧美潮喷喷水| 久久精品影院6| 中文在线观看免费www的网站| 久久精品久久久久久噜噜老黄 | 最近最新中文字幕免费大全7| 中文字幕免费在线视频6| 亚洲乱码一区二区免费版| 水蜜桃什么品种好| 精品一区二区三区人妻视频| 日韩亚洲欧美综合| av在线蜜桃| 一区二区三区免费毛片| 国语自产精品视频在线第100页| 一夜夜www| av在线亚洲专区| 久久久久久大精品| 免费av观看视频| 精品午夜福利在线看| 国产综合懂色| 亚洲欧美成人综合另类久久久 | 搡女人真爽免费视频火全软件| 欧美丝袜亚洲另类| 久久久午夜欧美精品| 午夜精品在线福利| 国产精品一区二区性色av| 最近手机中文字幕大全| 插逼视频在线观看| 日韩高清综合在线| 免费人成在线观看视频色| 欧美日韩在线观看h| 亚洲五月天丁香| 日韩欧美国产在线观看| 午夜福利网站1000一区二区三区| 国产精品精品国产色婷婷| 18禁动态无遮挡网站| 亚洲av日韩在线播放| 嫩草影院精品99| 国产在线一区二区三区精 | 国产一区二区三区av在线| 国模一区二区三区四区视频| 久久这里有精品视频免费| 亚洲乱码一区二区免费版| 美女内射精品一级片tv| 99热这里只有是精品50| 亚洲av中文av极速乱| 岛国在线免费视频观看| 男女那种视频在线观看| 午夜日本视频在线| 亚洲欧美日韩卡通动漫| 亚洲在线自拍视频| av免费观看日本| 最后的刺客免费高清国语| 亚洲成色77777| 国产精品久久久久久av不卡| 色网站视频免费| 欧美成人一区二区免费高清观看| 最近中文字幕2019免费版| 丝袜美腿在线中文| h日本视频在线播放| 一区二区三区四区激情视频| 岛国毛片在线播放| 18禁在线无遮挡免费观看视频| 亚洲av二区三区四区| 一夜夜www| 亚洲,欧美,日韩| 我要搜黄色片| 日本熟妇午夜| 99久久无色码亚洲精品果冻| 欧美区成人在线视频| 18禁裸乳无遮挡免费网站照片| 最近中文字幕2019免费版| 能在线免费看毛片的网站| 国产老妇女一区| 亚洲va在线va天堂va国产| 国产熟女欧美一区二区| 国产在视频线精品| 国产成人精品久久久久久| 免费观看的影片在线观看| 亚洲成色77777| 欧美成人a在线观看| 老司机影院毛片| 亚洲婷婷狠狠爱综合网| 精品国产露脸久久av麻豆 | 六月丁香七月| 熟女电影av网| 亚洲国产色片| 午夜福利在线在线| 国产v大片淫在线免费观看| 黄片wwwwww| 午夜精品国产一区二区电影 | 国内精品一区二区在线观看| 六月丁香七月| 天堂中文最新版在线下载 | 国产av不卡久久| 国产探花在线观看一区二区| 91久久精品国产一区二区三区| 波多野结衣巨乳人妻| 中文字幕熟女人妻在线| 日本熟妇午夜| 国模一区二区三区四区视频| 身体一侧抽搐| 狂野欧美白嫩少妇大欣赏| 日韩精品青青久久久久久| 男女国产视频网站| 免费av观看视频| 青青草视频在线视频观看| 一个人看视频在线观看www免费| 69人妻影院| 网址你懂的国产日韩在线| 亚洲婷婷狠狠爱综合网| 国内精品美女久久久久久| 麻豆成人午夜福利视频| 蜜臀久久99精品久久宅男| 国产精品一二三区在线看| 中文欧美无线码| 亚洲欧美精品综合久久99| 久久精品久久久久久噜噜老黄 | 久久久久久国产a免费观看| 免费av观看视频| 视频中文字幕在线观看| 波野结衣二区三区在线| 亚洲欧美日韩高清专用| 久久久午夜欧美精品| 男人狂女人下面高潮的视频| 精品久久久久久电影网 | 激情 狠狠 欧美| 国产午夜精品论理片| av视频在线观看入口| 老司机影院毛片| 亚洲最大成人手机在线| 亚洲av中文av极速乱| 久久久国产成人精品二区| 免费播放大片免费观看视频在线观看 | 看免费成人av毛片| 18禁在线无遮挡免费观看视频| 夜夜看夜夜爽夜夜摸| 好男人在线观看高清免费视频| 亚洲激情五月婷婷啪啪| 晚上一个人看的免费电影| 久久久成人免费电影| 亚洲人成网站高清观看| 久久久精品欧美日韩精品| 久久久久国产网址| 一区二区三区乱码不卡18| 1000部很黄的大片| 麻豆av噜噜一区二区三区| 看非洲黑人一级黄片| 国产亚洲一区二区精品| av在线观看视频网站免费| 老司机福利观看| 免费av毛片视频| 国产成人精品一,二区| 亚洲欧洲日产国产| 高清视频免费观看一区二区 | 韩国高清视频一区二区三区| 亚洲美女视频黄频| 国产淫语在线视频| 日本免费a在线| 免费av不卡在线播放| 1024手机看黄色片| 久久99蜜桃精品久久| 高清毛片免费看| 精品午夜福利在线看| 日韩在线高清观看一区二区三区| 丝袜美腿在线中文| 身体一侧抽搐| 啦啦啦啦在线视频资源| 亚洲伊人久久精品综合 | 久久久久久久久大av| 美女被艹到高潮喷水动态| 成人漫画全彩无遮挡| 国产白丝娇喘喷水9色精品| 最近手机中文字幕大全| 波多野结衣高清无吗| 嘟嘟电影网在线观看| 高清日韩中文字幕在线| 久久久久久久久中文| 岛国在线免费视频观看| 亚洲欧美精品自产自拍| 麻豆乱淫一区二区| 精品久久久久久电影网 | 91在线精品国自产拍蜜月| 国产精品1区2区在线观看.| 99久国产av精品国产电影| 亚洲真实伦在线观看| 中文字幕免费在线视频6| 国产精品一区二区三区四区久久| 亚洲欧美成人精品一区二区| 91精品伊人久久大香线蕉| 国产一级毛片七仙女欲春2| a级毛色黄片| 久久亚洲精品不卡| av专区在线播放| 日本爱情动作片www.在线观看| 亚洲中文字幕日韩| 建设人人有责人人尽责人人享有的 | 一级毛片久久久久久久久女| 人体艺术视频欧美日本| 久久人人爽人人片av| 久久精品夜夜夜夜夜久久蜜豆| 亚洲av成人精品一区久久| 亚洲av电影在线观看一区二区三区 | 蜜桃亚洲精品一区二区三区| 日韩三级伦理在线观看| 尾随美女入室| 在线观看美女被高潮喷水网站| 国产探花极品一区二区| 最近中文字幕高清免费大全6| 尾随美女入室| 美女xxoo啪啪120秒动态图| 欧美高清成人免费视频www| 久久久精品欧美日韩精品| 日韩成人伦理影院| 青春草亚洲视频在线观看| 久久久久久久久久成人| 成人午夜高清在线视频| 亚洲无线观看免费| 国产高清国产精品国产三级 | 麻豆成人av视频| 乱人视频在线观看| 国产精品不卡视频一区二区| 国产精品女同一区二区软件| 国产伦一二天堂av在线观看| 免费观看人在逋| 少妇熟女aⅴ在线视频| 岛国在线免费视频观看| 欧美激情久久久久久爽电影| 色播亚洲综合网| 免费av不卡在线播放| videossex国产| 国产熟女欧美一区二区| 99久久精品国产国产毛片| 日本-黄色视频高清免费观看| 一区二区三区乱码不卡18| av.在线天堂| 午夜福利视频1000在线观看| 国产午夜福利久久久久久| 简卡轻食公司| 亚洲欧美精品专区久久| 久久久久久久亚洲中文字幕| 日本av手机在线免费观看| av.在线天堂| 成人二区视频| 又粗又硬又长又爽又黄的视频| 日韩,欧美,国产一区二区三区 | 日本五十路高清| 国产av一区在线观看免费| 舔av片在线| 夜夜看夜夜爽夜夜摸| 超碰97精品在线观看| 亚洲18禁久久av| 日韩,欧美,国产一区二区三区 | 亚洲国产精品sss在线观看| 精品久久久噜噜| av在线播放精品| 两个人的视频大全免费| 亚洲人成网站在线播| 丰满乱子伦码专区| av福利片在线观看| 桃色一区二区三区在线观看| 亚洲自偷自拍三级| 亚洲国产精品合色在线| 熟女人妻精品中文字幕| 色综合亚洲欧美另类图片| 日日摸夜夜添夜夜添av毛片| 大香蕉97超碰在线| 3wmmmm亚洲av在线观看| 天堂av国产一区二区熟女人妻| 好男人视频免费观看在线| 久久99精品国语久久久| 久久人妻av系列| 校园人妻丝袜中文字幕| 成人毛片a级毛片在线播放| 日本三级黄在线观看| 中国国产av一级| 国产极品精品免费视频能看的| 欧美成人免费av一区二区三区| 亚洲国产欧美人成| 精品国产一区二区三区久久久樱花 | 美女被艹到高潮喷水动态| 亚洲高清免费不卡视频| 国产亚洲5aaaaa淫片| 欧美一级a爱片免费观看看| 91久久精品国产一区二区成人| 亚洲精品自拍成人| 国产综合懂色| 成人午夜精彩视频在线观看| 亚洲国产精品成人综合色| 亚洲av中文av极速乱| 99久久成人亚洲精品观看| 欧美精品国产亚洲| 日韩成人伦理影院| 一区二区三区乱码不卡18| 免费观看a级毛片全部| 国产激情偷乱视频一区二区| 国语对白做爰xxxⅹ性视频网站| 91av网一区二区| av专区在线播放| 一区二区三区乱码不卡18| 91av网一区二区| 午夜视频国产福利| 亚洲精品国产av成人精品| 少妇被粗大猛烈的视频| 日韩欧美在线乱码| 在现免费观看毛片| 草草在线视频免费看| 欧美+日韩+精品| 国产精品久久久久久精品电影小说 |