• <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)行了測(cè)試,并與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指令集)為測(cè)試樣本,逆向分析得到二進(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)檢測(cè)綜述[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à)證券罪立法比較分析
    精品久久蜜臀av无| 97人妻精品一区二区三区麻豆 | 给我免费播放毛片高清在线观看| 国产av一区在线观看免费| 亚洲国产欧美网| 一区二区三区高清视频在线| 1024香蕉在线观看| 久久久精品欧美日韩精品| av欧美777| 中文字幕av电影在线播放| 国产片内射在线| 日韩欧美国产在线观看| 欧美日韩福利视频一区二区| 青草久久国产| 在线观看免费日韩欧美大片| 国产伦人伦偷精品视频| 亚洲av第一区精品v没综合| 日本免费a在线| 国产精品日韩av在线免费观看| 中亚洲国语对白在线视频| 视频在线观看一区二区三区| 两性夫妻黄色片| 亚洲欧美一区二区三区黑人| 亚洲av片天天在线观看| 久久伊人香网站| 黄片播放在线免费| www日本在线高清视频| 婷婷亚洲欧美| 免费无遮挡裸体视频| 此物有八面人人有两片| 国内少妇人妻偷人精品xxx网站 | 国产高清视频在线播放一区| 动漫黄色视频在线观看| 搞女人的毛片| 999久久久精品免费观看国产| 成人国产一区最新在线观看| 亚洲av美国av| 69av精品久久久久久| 在线看三级毛片| 十分钟在线观看高清视频www| 日韩高清综合在线| 久久久精品国产亚洲av高清涩受| 99热6这里只有精品| 桃色一区二区三区在线观看| 中文字幕久久专区| 亚洲一区中文字幕在线| 又黄又爽又免费观看的视频| 99久久久亚洲精品蜜臀av| 黄色女人牲交| 叶爱在线成人免费视频播放| 嫁个100分男人电影在线观看| 午夜精品在线福利| 亚洲一区高清亚洲精品| 十八禁人妻一区二区| 99国产精品一区二区蜜桃av| 色播亚洲综合网| 两个人视频免费观看高清| or卡值多少钱| 久久久久久久精品吃奶| a在线观看视频网站| 国产高清videossex| 老熟妇乱子伦视频在线观看| 国产精品1区2区在线观看.| 久久九九热精品免费| 色精品久久人妻99蜜桃| 亚洲精品美女久久av网站| 波多野结衣高清无吗| 看免费av毛片| 美女高潮到喷水免费观看| 十八禁网站免费在线| 美女高潮喷水抽搐中文字幕| 午夜免费成人在线视频| av天堂在线播放| 97碰自拍视频| 亚洲美女黄片视频| 国产高清激情床上av| 亚洲真实伦在线观看| 天天躁狠狠躁夜夜躁狠狠躁| 国产精品久久久av美女十八| 久久婷婷人人爽人人干人人爱| 午夜a级毛片| 久久午夜综合久久蜜桃| 十分钟在线观看高清视频www| 国产精品 欧美亚洲| 国产激情欧美一区二区| 欧美不卡视频在线免费观看 | 亚洲在线自拍视频| 久久精品国产综合久久久| 熟妇人妻久久中文字幕3abv| 日本黄色视频三级网站网址| 国语自产精品视频在线第100页| 国产高清视频在线播放一区| 99re在线观看精品视频| 欧美日韩瑟瑟在线播放| 国产精品永久免费网站| 国产又黄又爽又无遮挡在线| 黄色丝袜av网址大全| 亚洲国产欧美网| 久久 成人 亚洲| 国产精品乱码一区二三区的特点| 变态另类成人亚洲欧美熟女| 欧美成人一区二区免费高清观看 | 十分钟在线观看高清视频www| 国产aⅴ精品一区二区三区波| 欧美精品啪啪一区二区三区| 亚洲中文字幕一区二区三区有码在线看 | 久久久国产欧美日韩av| 亚洲欧美日韩无卡精品| 日韩精品免费视频一区二区三区| 日韩精品免费视频一区二区三区| 欧美日韩中文字幕国产精品一区二区三区| 久久九九热精品免费| 可以在线观看毛片的网站| 久久精品人妻少妇| 色播亚洲综合网| 欧美中文综合在线视频| 女人爽到高潮嗷嗷叫在线视频| 亚洲 欧美一区二区三区| 精品熟女少妇八av免费久了| 首页视频小说图片口味搜索| 黄片播放在线免费| 看黄色毛片网站| 黄色毛片三级朝国网站| 搡老熟女国产l中国老女人| 老熟妇乱子伦视频在线观看| 国产三级在线视频| 国产av不卡久久| 麻豆国产av国片精品| 真人做人爱边吃奶动态| 亚洲国产精品999在线| 免费搜索国产男女视频| 中文字幕久久专区| 18禁黄网站禁片免费观看直播| 国产成人精品久久二区二区91| 日韩欧美在线二视频| 国产精品亚洲一级av第二区| a级毛片a级免费在线| 成年女人毛片免费观看观看9| 国语自产精品视频在线第100页| 国产欧美日韩一区二区三| 给我免费播放毛片高清在线观看| 久久精品亚洲精品国产色婷小说| 深夜精品福利| 少妇的丰满在线观看| 白带黄色成豆腐渣| 变态另类丝袜制服| 欧美另类亚洲清纯唯美| 黑人巨大精品欧美一区二区mp4| 亚洲久久久国产精品| 一进一出抽搐动态| 超碰成人久久| 国产私拍福利视频在线观看| 国产成人一区二区三区免费视频网站| 久久精品亚洲精品国产色婷小说| 999精品在线视频| 久热这里只有精品99| a级毛片a级免费在线| 欧美成人一区二区免费高清观看 | 亚洲人成网站高清观看| 欧美大码av| 亚洲一区二区三区不卡视频| 国产高清视频在线播放一区| 午夜福利在线在线| 丰满的人妻完整版| 国产一区二区三区在线臀色熟女| 男人的好看免费观看在线视频 | 欧美成人免费av一区二区三区| 欧美成人免费av一区二区三区| 成人精品一区二区免费| 日韩欧美 国产精品| 日本 av在线| 久久久久久国产a免费观看| 色播亚洲综合网| 欧美中文日本在线观看视频| 国产精品一区二区精品视频观看| 一a级毛片在线观看| 国产熟女xx| 男人操女人黄网站| 国产v大片淫在线免费观看| 精品久久久久久久人妻蜜臀av| 亚洲色图av天堂| 精品少妇一区二区三区视频日本电影| 伊人久久大香线蕉亚洲五| 男女做爰动态图高潮gif福利片| 男女之事视频高清在线观看| 国产99久久九九免费精品| 亚洲成人久久性| 国产精品,欧美在线| 亚洲精品美女久久av网站| 亚洲自偷自拍图片 自拍| 欧美日本亚洲视频在线播放| 亚洲精品粉嫩美女一区| 91老司机精品| 国产高清videossex| 亚洲电影在线观看av| 亚洲中文av在线| 99久久综合精品五月天人人| 91字幕亚洲| 日韩欧美免费精品| 日韩大尺度精品在线看网址| 天天躁狠狠躁夜夜躁狠狠躁| 99精品久久久久人妻精品| 欧美日韩瑟瑟在线播放| 亚洲av电影不卡..在线观看| 男男h啪啪无遮挡| 国产成人欧美| 亚洲精品久久成人aⅴ小说| 亚洲精品中文字幕一二三四区| 精品一区二区三区四区五区乱码| 99热这里只有精品一区 | 亚洲av中文字字幕乱码综合 | 亚洲精品国产精品久久久不卡| 午夜免费激情av| 色尼玛亚洲综合影院| 国产黄片美女视频| 深夜精品福利| 一卡2卡三卡四卡精品乱码亚洲| 国产高清视频在线播放一区| 琪琪午夜伦伦电影理论片6080| 后天国语完整版免费观看| xxx96com| 一本大道久久a久久精品| 亚洲精品在线美女| 久久精品国产清高在天天线| 久久久久久久精品吃奶| 免费在线观看亚洲国产| 99精品在免费线老司机午夜| 亚洲五月色婷婷综合| 久久精品国产亚洲av香蕉五月| 国产成人影院久久av| netflix在线观看网站| 黄色女人牲交| 免费在线观看亚洲国产| 日韩欧美 国产精品| 国产成人精品久久二区二区91| 中文字幕av电影在线播放| 国产主播在线观看一区二区| 少妇的丰满在线观看| 色哟哟哟哟哟哟| 69av精品久久久久久| 久久国产亚洲av麻豆专区| 少妇被粗大的猛进出69影院| 91麻豆av在线| 久久人人精品亚洲av| 两性夫妻黄色片| 激情在线观看视频在线高清| 少妇裸体淫交视频免费看高清 | 在线国产一区二区在线| 哪里可以看免费的av片| 亚洲欧洲精品一区二区精品久久久| 午夜影院日韩av| 午夜精品在线福利| 在线观看免费视频日本深夜| 大型av网站在线播放| 精品高清国产在线一区| 99在线人妻在线中文字幕| 国产激情久久老熟女| ponron亚洲| 亚洲国产欧美一区二区综合| www日本在线高清视频| 琪琪午夜伦伦电影理论片6080| 国产高清videossex| 午夜福利18| 别揉我奶头~嗯~啊~动态视频| 曰老女人黄片| 少妇裸体淫交视频免费看高清 | 亚洲一区二区三区不卡视频| 一个人免费在线观看的高清视频| 日日爽夜夜爽网站| 88av欧美| 伦理电影免费视频| 国产主播在线观看一区二区| 精品无人区乱码1区二区| 欧美三级亚洲精品| 日韩高清综合在线| 在线观看66精品国产| 免费女性裸体啪啪无遮挡网站| 亚洲 欧美一区二区三区| 免费av毛片视频| 可以免费在线观看a视频的电影网站| 午夜福利高清视频| 最近在线观看免费完整版| 国产精品免费视频内射| 啪啪无遮挡十八禁网站| 又黄又爽又免费观看的视频| 欧美日韩乱码在线| 精品卡一卡二卡四卡免费| 国产成年人精品一区二区| 美女扒开内裤让男人捅视频| 美女大奶头视频| 国产成人av教育| 黄网站色视频无遮挡免费观看| 一夜夜www| 精品卡一卡二卡四卡免费| 一区福利在线观看| 一本久久中文字幕| 免费观看精品视频网站| 亚洲专区中文字幕在线| 国产三级黄色录像| 女警被强在线播放| 国产激情偷乱视频一区二区| 欧美亚洲日本最大视频资源| 久久久水蜜桃国产精品网| 精品一区二区三区四区五区乱码| 日日摸夜夜添夜夜添小说| 2021天堂中文幕一二区在线观 | 国产亚洲精品综合一区在线观看 | 午夜福利欧美成人| 国产黄色小视频在线观看| 日日夜夜操网爽| 99热只有精品国产| xxx96com| 欧美黑人欧美精品刺激| 国产精品一区二区免费欧美| 亚洲,欧美精品.| 国产精品 欧美亚洲| 巨乳人妻的诱惑在线观看| 国产成人一区二区三区免费视频网站| 自线自在国产av| 好男人在线观看高清免费视频 | 免费在线观看黄色视频的| 亚洲精品在线美女| 国产av又大| 国产视频一区二区在线看| 99久久无色码亚洲精品果冻| 亚洲色图av天堂| 久久精品国产亚洲av高清一级| 中文资源天堂在线| 天天添夜夜摸| 女人爽到高潮嗷嗷叫在线视频| videosex国产| 欧美性长视频在线观看| 亚洲狠狠婷婷综合久久图片| 一级毛片高清免费大全| 成人免费观看视频高清| 在线国产一区二区在线| 国产一区二区三区在线臀色熟女| 国产亚洲精品综合一区在线观看 | 禁无遮挡网站| 午夜两性在线视频| 午夜免费激情av| 日本成人三级电影网站| 高清毛片免费观看视频网站| 又紧又爽又黄一区二区| a在线观看视频网站| 一级黄色大片毛片| 十八禁人妻一区二区| 亚洲欧美精品综合一区二区三区| 精品久久久久久久末码| 女同久久另类99精品国产91| 亚洲五月婷婷丁香| 亚洲精品国产区一区二| 久久香蕉激情| 成人国产一区最新在线观看| 免费在线观看亚洲国产| 国产亚洲精品第一综合不卡| 欧美黄色淫秽网站| 无遮挡黄片免费观看| 日本撒尿小便嘘嘘汇集6| 久久久久亚洲av毛片大全| 国产麻豆成人av免费视频| 18禁观看日本| 亚洲人成伊人成综合网2020| 国产三级在线视频| 国产v大片淫在线免费观看| 无遮挡黄片免费观看| 首页视频小说图片口味搜索| 神马国产精品三级电影在线观看 | 黄片播放在线免费| 99在线人妻在线中文字幕| 亚洲人成网站高清观看| 国产av一区二区精品久久| 国内精品久久久久久久电影| 国产精品免费视频内射| 在线天堂中文资源库| 特大巨黑吊av在线直播 | 国产三级黄色录像| 成年女人毛片免费观看观看9| 国语自产精品视频在线第100页| 欧美黑人欧美精品刺激| 99久久综合精品五月天人人| 精品不卡国产一区二区三区| 精品久久久久久久毛片微露脸| 天堂影院成人在线观看| 午夜影院日韩av| 午夜免费激情av| 久久久久久久久中文| 亚洲av美国av| 在线播放国产精品三级| 欧美av亚洲av综合av国产av| 亚洲色图 男人天堂 中文字幕| 欧美日韩瑟瑟在线播放| 88av欧美| 免费看日本二区| 999久久久精品免费观看国产| 成在线人永久免费视频| 淫妇啪啪啪对白视频| 无遮挡黄片免费观看| 欧美成狂野欧美在线观看| www日本在线高清视频| 国产三级黄色录像| 亚洲天堂国产精品一区在线| 午夜福利18| 精品熟女少妇八av免费久了| 欧美又色又爽又黄视频| 可以免费在线观看a视频的电影网站| 久久国产精品男人的天堂亚洲| 一卡2卡三卡四卡精品乱码亚洲| 日韩欧美一区视频在线观看| 午夜久久久久精精品| 美女高潮喷水抽搐中文字幕| 真人做人爱边吃奶动态| 91av网站免费观看| 午夜激情av网站| 久久久久国内视频| 妹子高潮喷水视频| 久99久视频精品免费| 国产精品影院久久| 欧美成人免费av一区二区三区| 欧美黑人精品巨大| 精品久久久久久久久久免费视频| videosex国产| 日本熟妇午夜| 老鸭窝网址在线观看| 日本成人三级电影网站| 一级作爱视频免费观看| 亚洲真实伦在线观看| 精品久久蜜臀av无| 香蕉av资源在线| 亚洲欧美日韩高清在线视频| 欧美性猛交黑人性爽| 成人永久免费在线观看视频| 国产精品 国内视频| 亚洲国产高清在线一区二区三 | 亚洲午夜精品一区,二区,三区| 亚洲精华国产精华精| 亚洲中文字幕日韩| 一进一出抽搐动态| 国产精品久久久av美女十八| 黄色丝袜av网址大全| 国产精品一区二区三区四区久久 | 亚洲男人天堂网一区| 成人一区二区视频在线观看| 久久久精品欧美日韩精品| 亚洲aⅴ乱码一区二区在线播放 | 免费在线观看影片大全网站| 一本一本综合久久| 日本黄色视频三级网站网址| 久久午夜亚洲精品久久| 精品人妻1区二区| 91麻豆av在线| 亚洲第一青青草原| 中文字幕高清在线视频| а√天堂www在线а√下载| 777久久人妻少妇嫩草av网站| 大香蕉久久成人网| 天天躁夜夜躁狠狠躁躁| 中出人妻视频一区二区| 18禁国产床啪视频网站| 真人做人爱边吃奶动态| 亚洲精品中文字幕一二三四区| 一级a爱视频在线免费观看| tocl精华| 久久人人精品亚洲av| 国产久久久一区二区三区| 亚洲男人天堂网一区| 国产成人精品久久二区二区免费| 一夜夜www| 在线观看免费视频日本深夜| 女警被强在线播放| 一级a爱片免费观看的视频| 久久久久精品国产欧美久久久| 亚洲精品美女久久av网站| 韩国av一区二区三区四区| 一个人观看的视频www高清免费观看 | 国产精品乱码一区二三区的特点| 午夜福利免费观看在线| 日日摸夜夜添夜夜添小说| 亚洲成av片中文字幕在线观看| 国产精品久久电影中文字幕| 久久久国产欧美日韩av| 欧美人与性动交α欧美精品济南到| 亚洲欧美精品综合一区二区三区| 免费女性裸体啪啪无遮挡网站| 精品卡一卡二卡四卡免费| 在线天堂中文资源库| 久久午夜综合久久蜜桃| avwww免费| 91麻豆av在线| 巨乳人妻的诱惑在线观看| 国产精品亚洲av一区麻豆| 精品人妻1区二区| 日本撒尿小便嘘嘘汇集6| 男人舔女人下体高潮全视频| 啦啦啦观看免费观看视频高清| 俄罗斯特黄特色一大片| 精品少妇一区二区三区视频日本电影| bbb黄色大片| 国产又色又爽无遮挡免费看| 欧美久久黑人一区二区| 欧美性猛交╳xxx乱大交人| 一二三四在线观看免费中文在| 在线观看日韩欧美| 美女免费视频网站| 国内精品久久久久精免费| 欧美日韩亚洲综合一区二区三区_| 少妇 在线观看| 国产99久久九九免费精品| 免费在线观看完整版高清| 男女那种视频在线观看| 欧美国产精品va在线观看不卡| 丁香欧美五月| 成人三级做爰电影| 国产野战对白在线观看| aaaaa片日本免费| 日韩欧美国产一区二区入口| 国产熟女午夜一区二区三区| 国产亚洲精品久久久久久毛片| 亚洲精华国产精华精| 日韩国内少妇激情av| 亚洲九九香蕉| 精品久久久久久久人妻蜜臀av| 亚洲av成人av| 91老司机精品| 99精品欧美一区二区三区四区| 一本精品99久久精品77| 久久天堂一区二区三区四区| 黄色片一级片一级黄色片| 18禁观看日本| 国产熟女午夜一区二区三区| 999精品在线视频| 久久性视频一级片| 一边摸一边做爽爽视频免费| 国产精品久久久久久人妻精品电影| 亚洲 欧美 日韩 在线 免费| 亚洲五月婷婷丁香| 亚洲中文字幕日韩| 日韩高清综合在线| 精品少妇一区二区三区视频日本电影| 两性夫妻黄色片| 欧美+亚洲+日韩+国产| 欧美日韩一级在线毛片| 亚洲专区中文字幕在线| 97超级碰碰碰精品色视频在线观看| 欧美+亚洲+日韩+国产| 国产成人欧美在线观看| 两个人免费观看高清视频| 日韩欧美国产在线观看| 欧美午夜高清在线| 九色国产91popny在线| 午夜免费观看网址| 久久国产精品人妻蜜桃| 国产欧美日韩精品亚洲av| 男男h啪啪无遮挡| 90打野战视频偷拍视频| netflix在线观看网站| 久久久精品欧美日韩精品| 精品高清国产在线一区| 少妇裸体淫交视频免费看高清 | 精品久久久久久久末码| 亚洲午夜精品一区,二区,三区| 99riav亚洲国产免费| 国产精品亚洲一级av第二区| 午夜免费激情av| 欧美三级亚洲精品| 制服诱惑二区| 亚洲精品中文字幕在线视频| 久9热在线精品视频| 国产男靠女视频免费网站| 国产单亲对白刺激| 久久精品夜夜夜夜夜久久蜜豆 | 视频在线观看一区二区三区| 妹子高潮喷水视频| 在线观看日韩欧美| 国产三级在线视频| 久久伊人香网站| 久久精品影院6| 国产亚洲av高清不卡| 在线观看午夜福利视频| 亚洲精品一卡2卡三卡4卡5卡| 色精品久久人妻99蜜桃| 亚洲国产欧美日韩在线播放| 午夜老司机福利片| 色在线成人网| 日韩欧美国产在线观看| 长腿黑丝高跟| 欧美最黄视频在线播放免费| 女人爽到高潮嗷嗷叫在线视频| 午夜福利免费观看在线| 黑人操中国人逼视频| 大型av网站在线播放| 又紧又爽又黄一区二区| 91国产中文字幕| 国产午夜福利久久久久久| 在线观看日韩欧美| 女同久久另类99精品国产91| 欧美成狂野欧美在线观看| 天天躁夜夜躁狠狠躁躁| 一卡2卡三卡四卡精品乱码亚洲| 夜夜夜夜夜久久久久| 久久九九热精品免费| 精品国内亚洲2022精品成人| 久久国产精品男人的天堂亚洲| 久久久国产成人免费| 午夜两性在线视频| 搡老妇女老女人老熟妇| 熟妇人妻久久中文字幕3abv| 老汉色av国产亚洲站长工具| 欧美久久黑人一区二区| www.999成人在线观看| 精品高清国产在线一区| 丝袜美腿诱惑在线| 亚洲av五月六月丁香网| 国产精品久久久人人做人人爽| 亚洲国产精品久久男人天堂|