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

    基于Smali-Java關(guān)鍵代碼修復(fù)的Android程序逆向分析方法

    2019-06-27 05:50:28徐國天張明星
    關(guān)鍵詞:源代碼逆向語句

    徐國天 張明星

    (1 中國刑事警察學(xué)院網(wǎng)絡(luò)犯罪偵查系 遼寧 沈陽 110035;2 龍巖市公安局新羅分局 福建 龍巖 364000)

    1 引言

    2018年8月20日,中國互聯(lián)網(wǎng)絡(luò)信息中心(CNNIC)發(fā)布了第42次《中國互聯(lián)網(wǎng)絡(luò)發(fā)展?fàn)顩r統(tǒng)計(jì)報(bào)告》(簡稱《報(bào)告》)?!秷?bào)告》顯示截至2018年6月,我國手機(jī)網(wǎng)民規(guī)模達(dá)7.88億。隨著移動互聯(lián)網(wǎng)應(yīng)用的普及,利用智能手機(jī)惡意程序?qū)嵤┑倪`法犯罪活動也在逐漸增多。Android系統(tǒng)是目前市場占有率最高的一款智能手機(jī)終端操作系統(tǒng),它允許用戶隨意在智能終端上安裝應(yīng)用程序,這種靈活性在給用戶帶來便捷體驗(yàn)的同時(shí),也給犯罪分子提供了可乘之機(jī)。目前,針對Android系統(tǒng)的各類惡意程序,如盜號木馬、遠(yuǎn)程控制木馬、勒索病毒、間諜軟件等種類繁多,危害極大[1]。

    目前Android程序取證主要采用以下三種方法。第一種是動態(tài)測試法。這種方法是將送檢的Android程序安裝到取證專用智能終端上,觸發(fā)程序運(yùn)行,通過觀察送檢程序運(yùn)行之后,表現(xiàn)出的一些外在行為(如彈出一個信息提示界面,或控制用戶的鍵盤輸入等),完成取證分析工作。這種方法實(shí)施起來難度較低,但是對一些沒有外在表現(xiàn)的行為(如內(nèi)存訪問、數(shù)據(jù)庫讀寫行為),不能有效察覺。第二種是通過沙箱環(huán)境進(jìn)行檢驗(yàn)分析。沙箱系統(tǒng)一般布置在Android虛擬機(jī)上,將送檢程序安裝到沙箱內(nèi)運(yùn)行,沙箱系統(tǒng)會自動監(jiān)控送檢程序的函數(shù)調(diào)用行為,如磁盤讀寫函數(shù)、網(wǎng)絡(luò)通信函數(shù)、數(shù)據(jù)庫訪問函數(shù)、藍(lán)牙訪問函數(shù)等。通過監(jiān)控關(guān)鍵函數(shù)的調(diào)用情況,對程序功能進(jìn)行全面分析?;ヂ?lián)網(wǎng)上此類公開平臺較多,但是此類平臺通常不會免費(fèi)提供完整的檢驗(yàn)報(bào)告,其給出的檢驗(yàn)分析結(jié)果僅能用于取證結(jié)論的輔助參考。第三種是通過靜態(tài)源代碼逆向分析方法對Android程序進(jìn)行檢驗(yàn)分析。這種方法是將APK格式的Android程序轉(zhuǎn)換為Smali或Java源代碼,再通過逐行閱讀源代碼的方式分析程序的邏輯功能,進(jìn)而完成取證分析工作。此類方法可以對送檢程序進(jìn)行全面分析,但需要檢驗(yàn)人員具備Android程序設(shè)計(jì)語言基礎(chǔ),需要閱讀的代碼量比較大,同時(shí),當(dāng)程序采用了加殼或加密等反取證措施時(shí),檢驗(yàn)分析的難度進(jìn)一步加大。在檢驗(yàn)鑒定工作中,通常是采用多種方法對送檢程序進(jìn)行檢驗(yàn)分析,參考每種方法得到的取證結(jié)果,綜合給出鑒定意見。

    本文針對上述第三種靜態(tài)源代碼逆向分析方法進(jìn)行研究,這種方法通過將APK格式的Android程序轉(zhuǎn)換為Java代碼,再通過閱讀Java源代碼分析程序的邏輯功能,提取出嫌疑人電子郵箱、手機(jī)號碼等關(guān)鍵線索。但是在將APK程序轉(zhuǎn)換為Java源代碼的過程中,部分核心代碼因?yàn)榻Y(jié)構(gòu)比較復(fù)雜,現(xiàn)有取證工具無法自動完成轉(zhuǎn)換,會將這部分核心代碼轉(zhuǎn)換為錯誤的Java源程序,進(jìn)而給取證分析工作造成嚴(yán)重影響。本文提出一種基于Smali-Java關(guān)鍵代碼修復(fù)的Android程序逆向分析方法,它采用人工分析方式,根據(jù)核心代碼對應(yīng)的Smali源程序完成受損Java代碼的修復(fù),進(jìn)而完成Android程序的取證分析工作。

    2 APK程序反編譯方法

    2.1 兩種逆向分析方法比較

    APK程序使用Java語言開發(fā)。編程人員寫好Java源程序之后,需要使用編譯器將所有Java源代碼編譯、生成一個APK程序。Java源程序可讀性好,通過分析Java源代碼可以準(zhǔn)確掌握程序的執(zhí)行流程。APK程序由一系列二進(jìn)制0、1數(shù)據(jù)組成,無法直接閱讀。因此,為了準(zhǔn)確獲知APK程序的主要功能,需要將APK程序還原為對應(yīng)的Java源代碼,這一過程就是APK程序的反編譯[2]。

    如圖1所示,APK程序的反編譯主要有兩種方法。第一種是先將APK程序轉(zhuǎn)換成Smali源代碼,再將Smali源代碼轉(zhuǎn)化為Java源程序[3]。Smali語言是Davlik寄存器語言,類似于臺式計(jì)算機(jī)上的匯編語言,是一種低級語言,可讀性較差,它的書寫規(guī)范與Java等高級語言完全不同。調(diào)查人員直接閱讀Smali源代碼來分析程序功能難度較大,且效率較低[4]。但是APK轉(zhuǎn)換成Smali的過程沒有損失,Smali源代碼可以完整再現(xiàn)APK程序的相關(guān)功能。

    圖1 反編譯方法

    Smali代碼在轉(zhuǎn)換成Java代碼過程中會出現(xiàn)10%左右轉(zhuǎn)換錯誤,這10%的程序代碼通常是Smali源文件中最復(fù)雜的多分支語句或循環(huán)語句,這部分代碼通常是APK程序的核心代碼。因此調(diào)查人員在進(jìn)行分析時(shí),對于簡單的程序函數(shù)可以參考Java源代碼,對于無法轉(zhuǎn)換的那10%左右的代碼可以參考Smali源文件。

    第二種反編譯方法是先通過APK程序獲得dex文件,再將dex文件轉(zhuǎn)化為jar文件,最后將jar文件轉(zhuǎn)化為Java源代碼[5]。這種方式的轉(zhuǎn)換過程比第一種方法多了一個環(huán)節(jié),但是只有5%左右的代碼損失,并且得到的Java源代碼更規(guī)范,可讀性更好。本文提出的逆向分析方法總體思路是利用第一種方法獲得Smali源文件,再以第二種方法獲得Java源文件,對于未能正常解析的Java源代碼,利用人工分析方式,將對應(yīng)的Smali代碼轉(zhuǎn)換為Java源代碼,進(jìn)而完成逆向分析工作。

    2.2 反編譯APK程序得到Smali源代碼

    為了進(jìn)行功能鑒定需要對APK程序執(zhí)行反編譯,將其轉(zhuǎn)化為可以直接閱讀的源程序。目前現(xiàn)有工具軟件無法直接將APK程序還原為對應(yīng)的Java源程序,只能轉(zhuǎn)化為一種名為Smali的中間語言。這種語言與臺式計(jì)算機(jī)上的匯編語言類似,可讀性較差,但是可以完整還原程序功能。這里使用一種名為apktools的工具執(zhí)行反編譯,下面介紹具體的逆向方法。

    首先,安裝Java運(yùn)行環(huán)境。apktools需要Java運(yùn)行環(huán)境支持,因此需要先安裝Java工具包。之后,安裝、運(yùn)行apktools,反編譯目標(biāo)APK程序。Apktools工具有三項(xiàng)主要功能。第一是將APK程序反編譯成Smali代碼。第二是允許用戶修改Smali代碼,并將修改后的Smali代碼重新編譯為APK程序。第三是提供了簽名功能,重新編譯形成的APK程序需要簽名之后才能使用。

    本文以一款名為9555.apk的手機(jī)木馬程序?yàn)槔M(jìn)行逆向分析,利用apktools工具反編譯成功之后,在目標(biāo)路徑下會形成一個名為“9555.apk.decode”的文件夾。圖2是將測試文件9555.apk反編譯得到的22個Smali程序文件。如圖2所示,每個文件代表一個類,文件名就是類名。例如,A.Smali就是名為A的類,其中存儲的就是這個類的Smali源代碼。還有一些文件中帶有$符號。例如,R$id.Smali。它表示在名為R的類中又定義了名為id的子類,這個文件中存儲的就是id子類的Smali源代碼。如圖2所示,9555.apk共包含14個類定義。

    圖2 9555.apk反編譯得到的22個Smali文件

    2.3 反編譯APK程序得到Java源代碼

    通過第二種方法反編譯APK程序獲得Java源代碼的具體方法。首先,解壓縮APK程序獲得dex文件。APK程序默認(rèn)采用的是ZIP壓縮格式,只要將程序的擴(kuò)展名由apk修改為zip,之后進(jìn)行解壓縮即可獲得dex文件。請注意解壓之后也會產(chǎn)生一些xml文件。例如AndroidManifest.xml,但是這些xml文件通常無法正常查看。

    之后,使用dex2jar軟件將dex文件轉(zhuǎn)化為jar文件,這個軟件也需要提前安裝好Java運(yùn)行環(huán)境。Dex2jar是一個DOS環(huán)境下運(yùn)行的應(yīng)用程序。將dex文件拷貝到dex2jar程序根目錄下,之后在DOS窗口中輸入dex2jar classes.dex命令。轉(zhuǎn)換完成之后,在dex2jar根目錄下就會生成一個名為classes_dex2jar.jar的結(jié)果文件。

    將jar文件轉(zhuǎn)化為Java源程序。使用jd-gui軟件可以將jar文件轉(zhuǎn)換為對應(yīng)的Java源程序。使用jdgui軟件查看classes_dex2jar.jar,會出現(xiàn)圖3所示結(jié)果。共出現(xiàn)14個Java類文件,目錄結(jié)構(gòu)與前面獲得的Smali源代碼可以一一對應(yīng),便于分析。不同的是主類和子類的定義在Smali中是分開書寫的,而在Java源代碼中子類的程序代碼已經(jīng)寫入到對應(yīng)的主類中??梢钥吹皆贘ava源程序中字符串?dāng)?shù)據(jù)不在是原始的十六進(jìn)制數(shù)值而是已經(jīng)轉(zhuǎn)化為可以直接閱讀的文字,并且Java源程序的可讀性更強(qiáng)。

    圖3 由jar文件轉(zhuǎn)換得到Java源程序

    3 Smali和Java源代碼的相互轉(zhuǎn)換方法

    Smali是Dalvik的寄存器語言,它與Java的關(guān)系就像匯編語言與C語言的關(guān)系。在臺式計(jì)算機(jī)上,一個用C語言開發(fā)的exe文件在進(jìn)行逆向分析時(shí),首先會轉(zhuǎn)化為匯編語言,之后再由匯編語言轉(zhuǎn)化為C語言代碼,通過分析C語言代碼可以了解程序的相關(guān)功能[6]。

    APK程序與exe程序的反編譯過程極為相似,兩者的對應(yīng)關(guān)系如圖4所示。不同的是匯編語言比較復(fù)雜,短時(shí)間內(nèi)不易掌握。Smali語言相對比較簡單,便于轉(zhuǎn)化為Java源程序。但是Smali在轉(zhuǎn)化為Java源代碼的過程中會出現(xiàn)5%~10%左右代碼轉(zhuǎn)換錯誤,這部分代碼通常是APK程序的核心功能,因此需要直接分析Smali文件。這就需要了解Smali的語法規(guī)則,下面我們采用Smali和Java源程序?qū)Ρ确治龅姆椒▉磉M(jìn)行介紹。理解這部分內(nèi)容的前提條件是讀者已經(jīng)具備Java語言的基礎(chǔ)知識。

    圖4 exe和APK程序反編譯對應(yīng)關(guān)系

    3.1 Smali和Java的方法定義轉(zhuǎn)換

    下面給出的是使用Java語言編寫的一個方法。這個方法名稱是onCreate;有一個Bundle類型的傳入?yún)?shù),參數(shù)名為paramBundle;方法返回值為void類型、protected屬性。方法中只有一條語句,調(diào)用了父類的onCreate方法。

    這個Java方法可以轉(zhuǎn)化為如下Smali代碼。#是Smali中的注釋語句;.method和.end method相當(dāng)于Java中的{ },定義了方法的起始和結(jié)束位置。Landroid/os/Bundle定義了參數(shù)類型,.parameter定義了參數(shù)名,本例值為paramBundle。如果有多個參數(shù),可以在列表中依次增加。在Smali中參數(shù)使用p0~pn來表示,其中p0固定代表this,參數(shù)從p1開始。在本例中參數(shù)paramBundle對應(yīng)的就是p1。V表示方法返回值為void類型。

    .locals定義了方法用到的寄存器數(shù)量為4,寄存器名稱為v0~v3。.prologue定義了代碼的起始位置。.line定義了這條Smali語句是Java源程序中的第幾條語句,這個值主要用于調(diào)試,不起關(guān)鍵作用。invoke-super {p0, p1}, La ndroid/app/Activity;-〉onCreate(Landroid/os/Bundle;)V表示調(diào)用父類的onCreate方法,V表示返回值為void類型,p1為參數(shù),即paramBundle。Return-void表示返回值為void類型。

    通過對比可以看到,Smali和Java的對應(yīng)關(guān)系比較清晰,只是Smali代碼比Java代碼復(fù)雜一些,Java的一條語句可能對應(yīng)Smali的多條語句。

    3.2 Smali和Java的方法調(diào)用轉(zhuǎn)換

    下面這條Java語句是調(diào)用makeText方法,生成一組值為“hello,Smali”的字符串,然后調(diào)用show方法彈出這組提示信息。

    這條語句在進(jìn)行APK逆向分析時(shí)經(jīng)常用來測試程序功能,這里以它為例來對比分析Smali和Java的方法調(diào)用。這條Java語句對應(yīng)的Smali代碼如下:

    第一條語句const-string v0, "hello,Smali"定義了值為"hello,Smali"的字符串變量,變量值存儲在v0寄存器中。

    第二條語句const/4 v1, 0x1定義了值為0x1的整數(shù)變量,變量值存儲在v1寄存器中。

    第三條語句以靜態(tài)方式調(diào)用了makeText方法,這個方法包含3個參數(shù),類型分別是context、CharSequence和整數(shù)類型。參數(shù)值分別是p0、v0和v1,p0代表this,v0代表"hello,Smali",v1代表0x1。返回值是一個Toast類型的對象。

    第四條語句是將makeText方法調(diào)用的結(jié)果送到v0寄存器中。之前v0寄存器存儲的是字符串類型變量,這條語句執(zhí)行之后,v0寄存器中存儲的是Toast類型對象。

    第五條語句是以virtual方式調(diào)用show()方法,這個方法沒有參數(shù),這里v0代表上一條語句獲得的Toast對象,show()方法的返回值為void類型。通過分析,可以看到原本一條Java語句轉(zhuǎn)換為四條Smali代碼。

    3.3 Smali和Java的switch多條件分支語句轉(zhuǎn)換

    下面是使用Java語言編寫的一組switch多條件分支語句,這類語句在程序設(shè)計(jì)中也經(jīng)常使用。這段代碼的邏輯功能非常簡單,根據(jù)變量i的取值,分1、2、3和其他共4種情況處理。

    上述switch語句對應(yīng)的Smali代碼如下所示。V0寄存器表示變量i,初值為3。:cond_0是switch語句開始位置,標(biāo)志就是packed-switch v0, :pswitch_data_0。Switch的結(jié)束標(biāo)志是:pswitch_data_0,.packed-switch 0x1表示case匹配值從1開始遞增,每次加1。即滿足case 1:時(shí),執(zhí)行:pswitch_1處代碼;滿足case 2:時(shí),執(zhí)行:pswitch_2處代碼;滿足case 3:時(shí),執(zhí)行:pswitch_3處代碼;如這3個條件都不滿足,則執(zhí)行default代碼,即:goto_1位置代碼。所有分支最終都跳轉(zhuǎn)到:goto_0位置,執(zhí)行return-void返回。Nop代表空指令。

    3.4 Smali和Java的循環(huán)語句轉(zhuǎn)換

    循環(huán)語句主要有while和for兩種類型,下面是一段while循環(huán)結(jié)構(gòu),程序的一些關(guān)鍵功能通常包含在循環(huán)語句中。經(jīng)過實(shí)際檢測,發(fā)現(xiàn)在將APK程序反編譯為Java源代碼的過程中,循環(huán)語句和switch分支語句最容易出現(xiàn)問題。因此,調(diào)查人員必須掌握Smali語言編寫的循環(huán)語句到Java代碼的手工轉(zhuǎn)換方法。

    下面是上述Java代碼對應(yīng)的Smali語句。V0表示變量i,初值為0。V2存儲的是循環(huán)結(jié)束條件10。當(dāng)i值小于10時(shí),執(zhí)行循環(huán)體i = i + 1。否則執(zhí)行returnvoid結(jié)束循環(huán)。

    4 基于Smali-Java關(guān)鍵代碼修復(fù)的Android程序逆向分析方法

    APK程序的逆向分析方法目前主要有以下幾種:

    方法一:信息反饋法。這種方法是指先運(yùn)行目標(biāo)程序,然后根據(jù)程序運(yùn)行時(shí)給出的反饋信息作為突破口尋找關(guān)鍵代碼。通常情況下,程序中用到的字符串會存儲在String.xml文件或者直接寫入程序代碼中。如果是前者的話,字符串在程序中會以id的形式訪問,只需要在反編譯代碼中搜索字符串的id值就可以找到代碼調(diào)用處;如果是后者的話,可以在反編譯代碼中直接搜索字符串即可。

    方法二:順序查看法。這種方法是指從軟件的啟動代碼開始,逐行向下分析,掌握軟件的執(zhí)行流程。

    方法三:代碼注入法。代碼注入法屬于動態(tài)調(diào)試方法,它的原理是手工修改APK文件的反編譯代碼,加入Toast.MakeText.Show()語句,查看程序執(zhí)行到特定點(diǎn)的狀態(tài)數(shù)據(jù)。

    本文提出的APK程序逆向分析方法總體流程如圖5所示。這種方法以AndroidManifest.xml文件為分析入口,每次從中取出一個intent對象分析,循環(huán)進(jìn)行,直至所有intent對象分析完成。對于每個intent對象,首先獲得其相應(yīng)處理程序的Java代碼。如果Java代碼完好,則直接分析,否則獲取對應(yīng)的Smali代碼,再將Smali代碼以人工方式轉(zhuǎn)換為Java代碼,然后分析Java代碼。之后將APK程序安裝在Android系統(tǒng)手機(jī)上測試這個intent功能。如果程序設(shè)計(jì)存在邏輯錯誤,則修改原始Smali代碼,再重新編譯成APK程序,安裝測試。

    圖5 基于Smali-Java關(guān)鍵代碼修復(fù)Android程序逆向分析方法的總體流程

    這種分析方法綜合運(yùn)用了Smali、Java代碼分析,APK程序的修改、編譯和測試,雖然需要大量時(shí)間用于分析,但是可以完全獲得程序的執(zhí)行邏輯,甚至發(fā)現(xiàn)程序設(shè)計(jì)上的邏輯錯誤。

    5 基于Smali-Java關(guān)鍵代碼修復(fù)的Android程序逆向分析方法應(yīng)用

    5.1 無損Java代碼分析

    以9555.apk程序?yàn)槔?555.apk程序的AndroidManifest.xml文件中,圖6代碼定義了APK程序的名稱和顯示圖標(biāo)。Label變量表示應(yīng)用程序名稱,@string/app_name是名稱字符串所在的路徑,打開values文件夾下的string.xml,可以看到app_name字符串對應(yīng)的值為“招商客戶端”。Icon變量定義了應(yīng)用程序顯示的圖標(biāo),@drawable/ic_launcher是圖標(biāo)的存儲位置,打開drawable文件夾,可以看到名為ic_launcher.png的圖片文件,如圖6所示。

    圖6 定義應(yīng)用程序名稱和運(yùn)行圖標(biāo)

    AndroidManifest.xml文件的第一組代碼規(guī)定了APK程序的入口。它的標(biāo)志是字符串“android.intent.action.MAIN”,對應(yīng)的代碼對象名稱為“A”。如圖7所示,它表示當(dāng)9555.apk程序被點(diǎn)擊運(yùn)行時(shí),A中的代碼將被調(diào)用執(zhí)行。

    圖7 APK程序入口

    APK程序的入口代碼存儲在名為A的類中,下面顯示的是A類中的onCreate方法。函數(shù)首先調(diào)用了父類的onCreate方法。setContentView(0x7f030000)負(fù)責(zé)設(shè)置當(dāng)前activity的顯示界面,其執(zhí)行過程如下所示。Java程序代碼中的0x7f030000是一個id值,根據(jù)這個數(shù)值在public.xml文件中可以定位一條匹配記錄。這條記錄的名字是main,類型是layout布局文件。根據(jù)這兩個數(shù)值可以定位到layout文件夾下的main.xml文件,在這個文件中定義了一個webview類型控件,但是運(yùn)行時(shí)不顯示任何內(nèi)容。onResume方法負(fù)責(zé)將程序注冊為一個設(shè)備管理器。具體代碼此處不進(jìn)行分析。這段代碼在轉(zhuǎn)換過程中未受到損傷,調(diào)查人員可以直接分析。

    5.2 有損Java代碼分析方法

    9555.apk程序逆向之后得到的Java代碼中,S服務(wù)的onCreate方法代碼如下所示。當(dāng)S服務(wù)被激活時(shí),onCreate方法將被觸發(fā)運(yùn)行。這組代碼實(shí)際上完成了兩大功能:響應(yīng)接收短信廣播和當(dāng)短信箱發(fā)生變化時(shí)處理短信。通過逆向得到S服務(wù)onCreate方法的Java代碼,但是通過閱讀程序發(fā)現(xiàn)存在如下局部代碼,不難發(fā)現(xiàn)這段代碼存在邏輯錯誤。這是因?yàn)樵糞mali代碼中存在循環(huán)或多分支語句造成的,需要通過人工修正錯誤。

    循環(huán)語句的提取、轉(zhuǎn)換方法如下所示。const/4 v1, 0x0是將v1寄存器的值設(shè)置為0,這個寄存器就是變量i,之后v3寄存器被設(shè)置為20,這是循環(huán)結(jié)束值。if-lt v1, v3, :cond_0比較v1和v3的大小,如果v1小于20,則跳轉(zhuǎn)到:cond_0標(biāo)簽地址。否則執(zhí)行return-void結(jié)束程序的執(zhí)行。:cond_0標(biāo)簽地址的packed-switch v1, :pswitch_data_0是switch語句的起始標(biāo)志。Switch語句中的多個case子句這里不進(jìn)行提取。add-int/lit8 v1, v1, 0x1對應(yīng)的是i = i + 1命令。goto :goto_0重新返回到循環(huán)起始位置。修正之后的Java循環(huán)結(jié)構(gòu)如下所示。利用人工分析方法,對受損的Java代碼進(jìn)行修復(fù)。

    6 結(jié)語

    本文提出的基于Smali-Java關(guān)鍵代碼修復(fù)的Android程序逆向分析方法,可以對受損的核心代碼進(jìn)行修復(fù),完成取證分析工作。但是在分析過程中,要求取證人員通過人工分析方式定位受損代碼,在完成受損代碼的修復(fù)。工作效率偏低,且難度較大,下一步計(jì)劃研究受損代碼的自動定位和修復(fù)方法,以提高取證分析效率。

    猜你喜歡
    源代碼逆向語句
    人工智能下復(fù)雜軟件源代碼缺陷精準(zhǔn)校正
    逆向而行
    基于TXL的源代碼插樁技術(shù)研究
    重點(diǎn):語句銜接
    軟件源代碼非公知性司法鑒定方法探析
    精彩語句
    逆向解答
    揭秘龍湖產(chǎn)品“源代碼”
    如何搞定語句銜接題
    語文知識(2014年4期)2014-02-28 21:59:52
    逆向工程技術(shù)及應(yīng)用
    特级一级黄色大片| 国产真实乱freesex| 别揉我奶头 嗯啊视频| av专区在线播放| 一个人看视频在线观看www免费| 美女脱内裤让男人舔精品视频 | 黄片wwwwww| 舔av片在线| 久久久久网色| 国产探花在线观看一区二区| av.在线天堂| 蜜臀久久99精品久久宅男| 1000部很黄的大片| 亚洲av成人av| 国产精品久久视频播放| 日韩欧美国产在线观看| 亚洲国产高清在线一区二区三| avwww免费| 在线观看美女被高潮喷水网站| 最近的中文字幕免费完整| 黄色欧美视频在线观看| 麻豆久久精品国产亚洲av| 国产精品,欧美在线| 18禁在线无遮挡免费观看视频| 夜夜夜夜夜久久久久| 成人午夜精彩视频在线观看| 国产女主播在线喷水免费视频网站 | 日日摸夜夜添夜夜添av毛片| 亚洲乱码一区二区免费版| 国产高清视频在线观看网站| 能在线免费观看的黄片| 亚洲人成网站在线观看播放| 夫妻性生交免费视频一级片| 美女黄网站色视频| 午夜免费激情av| 亚洲国产精品国产精品| 夜夜看夜夜爽夜夜摸| 国产私拍福利视频在线观看| 一边摸一边抽搐一进一小说| 又黄又爽又刺激的免费视频.| 国产精品一区二区三区四区免费观看| 久久婷婷人人爽人人干人人爱| av视频在线观看入口| 如何舔出高潮| 亚洲国产精品合色在线| 哪个播放器可以免费观看大片| 免费看美女性在线毛片视频| 中文字幕制服av| 内射极品少妇av片p| 91aial.com中文字幕在线观看| or卡值多少钱| 久久草成人影院| 欧美激情国产日韩精品一区| 午夜a级毛片| 成人午夜高清在线视频| 在线播放国产精品三级| 永久网站在线| 久久精品综合一区二区三区| 夜夜夜夜夜久久久久| 91狼人影院| av在线观看视频网站免费| 久久久精品欧美日韩精品| 精品无人区乱码1区二区| 国产成人午夜福利电影在线观看| 国产 一区精品| 久久综合国产亚洲精品| 晚上一个人看的免费电影| 亚洲最大成人中文| 亚洲成人中文字幕在线播放| 97热精品久久久久久| 国产乱人偷精品视频| 免费av不卡在线播放| www.色视频.com| 好男人视频免费观看在线| 直男gayav资源| 一级黄色大片毛片| 中文精品一卡2卡3卡4更新| 老师上课跳d突然被开到最大视频| 伦理电影大哥的女人| 亚洲美女视频黄频| 一本一本综合久久| 中文字幕久久专区| 久久欧美精品欧美久久欧美| 最近中文字幕高清免费大全6| 久久精品国产99精品国产亚洲性色| 欧美日韩国产亚洲二区| 午夜a级毛片| 久久午夜福利片| av黄色大香蕉| 国产一级毛片七仙女欲春2| 日日撸夜夜添| 国产麻豆成人av免费视频| 人人妻人人看人人澡| 99国产极品粉嫩在线观看| 超碰av人人做人人爽久久| 国产一级毛片在线| 久久久久久久久久久免费av| 亚洲18禁久久av| 精品一区二区三区视频在线| 国产免费男女视频| 菩萨蛮人人尽说江南好唐韦庄 | 国产真实乱freesex| 国产午夜精品一二区理论片| 男人舔女人下体高潮全视频| 免费观看的影片在线观看| 国内精品久久久久精免费| 欧美一区二区精品小视频在线| 久久久精品94久久精品| 久久久久性生活片| 国产成人一区二区在线| 九九久久精品国产亚洲av麻豆| 插阴视频在线观看视频| 成人美女网站在线观看视频| 自拍偷自拍亚洲精品老妇| 一个人免费在线观看电影| 午夜精品国产一区二区电影 | 国产黄色小视频在线观看| 一卡2卡三卡四卡精品乱码亚洲| 黄色一级大片看看| 国产精品国产三级国产av玫瑰| 国产片特级美女逼逼视频| 小蜜桃在线观看免费完整版高清| eeuss影院久久| 欧美xxxx黑人xx丫x性爽| 日本一本二区三区精品| 神马国产精品三级电影在线观看| 毛片一级片免费看久久久久| 大又大粗又爽又黄少妇毛片口| 久久精品人妻少妇| 欧美一区二区亚洲| 99热这里只有精品一区| 国产一级毛片七仙女欲春2| 97在线视频观看| 性欧美人与动物交配| 三级经典国产精品| 成人三级黄色视频| a级毛片免费高清观看在线播放| 97超视频在线观看视频| 人人妻人人澡人人爽人人夜夜 | 亚洲最大成人av| 男人和女人高潮做爰伦理| 别揉我奶头 嗯啊视频| 国产精品99久久久久久久久| 日韩欧美 国产精品| 五月伊人婷婷丁香| 变态另类丝袜制服| 性插视频无遮挡在线免费观看| 非洲黑人性xxxx精品又粗又长| 国产综合懂色| 国产精品1区2区在线观看.| 国产三级在线视频| 国产成人福利小说| 日韩高清综合在线| 亚洲人成网站在线播| 精品少妇黑人巨大在线播放 | 人人妻人人澡欧美一区二区| 国国产精品蜜臀av免费| 99在线视频只有这里精品首页| 人人妻人人看人人澡| eeuss影院久久| 99久久精品国产国产毛片| kizo精华| 日韩三级伦理在线观看| 麻豆av噜噜一区二区三区| 亚洲经典国产精华液单| 91久久精品国产一区二区三区| 成熟少妇高潮喷水视频| 悠悠久久av| 免费大片18禁| 欧美一级a爱片免费观看看| 99国产极品粉嫩在线观看| 91久久精品国产一区二区成人| 久久人妻av系列| 国产三级中文精品| 午夜免费激情av| 18+在线观看网站| 欧美bdsm另类| 中文字幕精品亚洲无线码一区| 国产探花极品一区二区| 免费不卡的大黄色大毛片视频在线观看 | 亚洲国产欧美在线一区| 欧美成人免费av一区二区三区| 精品不卡国产一区二区三区| 一区福利在线观看| 色综合站精品国产| 国产精品一区二区在线观看99 | 一本久久精品| 大又大粗又爽又黄少妇毛片口| 久久久久久九九精品二区国产| 床上黄色一级片| 国产淫片久久久久久久久| 最近2019中文字幕mv第一页| 国产伦精品一区二区三区四那| 婷婷精品国产亚洲av| 国产三级在线视频| 有码 亚洲区| 中国美女看黄片| 99久久精品国产国产毛片| 国产在线精品亚洲第一网站| 国产黄片美女视频| 国产伦精品一区二区三区视频9| or卡值多少钱| 亚州av有码| 国模一区二区三区四区视频| 亚洲久久久久久中文字幕| 免费看光身美女| 久久99精品国语久久久| 成人漫画全彩无遮挡| 国产中年淑女户外野战色| 国产精品电影一区二区三区| 色哟哟哟哟哟哟| 国产精品免费一区二区三区在线| 国模一区二区三区四区视频| 十八禁国产超污无遮挡网站| 亚洲人成网站在线播放欧美日韩| 精华霜和精华液先用哪个| 99九九线精品视频在线观看视频| 如何舔出高潮| 神马国产精品三级电影在线观看| 亚洲欧美日韩高清专用| 久久鲁丝午夜福利片| 深夜精品福利| 亚洲第一电影网av| 精品人妻视频免费看| 最近手机中文字幕大全| 国产精品.久久久| 成人特级av手机在线观看| 久久精品国产鲁丝片午夜精品| 日日啪夜夜撸| 国产人妻一区二区三区在| 国产白丝娇喘喷水9色精品| 国国产精品蜜臀av免费| 久久久精品大字幕| 日韩制服骚丝袜av| 国产精品一二三区在线看| 全区人妻精品视频| 青青草视频在线视频观看| 成人美女网站在线观看视频| 免费av毛片视频| 久久精品久久久久久久性| 天堂中文最新版在线下载 | 免费人成在线观看视频色| 久久精品国产自在天天线| 国产成人aa在线观看| av福利片在线观看| 69av精品久久久久久| 亚洲av中文字字幕乱码综合| 亚洲av成人av| 久久人妻av系列| 97人妻精品一区二区三区麻豆| 亚洲国产色片| 国内精品一区二区在线观看| 中国国产av一级| 高清毛片免费看| 男女啪啪激烈高潮av片| 亚洲va在线va天堂va国产| 免费看光身美女| 久久精品综合一区二区三区| 国产探花在线观看一区二区| 深夜精品福利| 亚洲精品乱码久久久v下载方式| 亚洲精品久久久久久婷婷小说 | 精品无人区乱码1区二区| 国产熟女欧美一区二区| 99国产精品一区二区蜜桃av| 欧美人与善性xxx| 国产成人福利小说| 国产色婷婷99| 国产成年人精品一区二区| 国产精品蜜桃在线观看 | 男人的好看免费观看在线视频| 免费看光身美女| 有码 亚洲区| 国产大屁股一区二区在线视频| 亚洲精品成人久久久久久| 三级毛片av免费| 中文亚洲av片在线观看爽| 亚洲欧美日韩卡通动漫| 国产成人freesex在线| 国国产精品蜜臀av免费| 丝袜喷水一区| 久久久久久伊人网av| 久久草成人影院| 波多野结衣高清无吗| 久久午夜亚洲精品久久| 国产高清不卡午夜福利| 亚洲婷婷狠狠爱综合网| 国内精品一区二区在线观看| 搡老妇女老女人老熟妇| 欧美日韩国产亚洲二区| 最近视频中文字幕2019在线8| 啦啦啦观看免费观看视频高清| 99久久精品热视频| 九九爱精品视频在线观看| 国产真实伦视频高清在线观看| 好男人在线观看高清免费视频| 国产精品1区2区在线观看.| 日本av手机在线免费观看| 国产在线男女| 色综合站精品国产| 成人午夜精彩视频在线观看| 亚洲欧洲日产国产| 国产精品电影一区二区三区| 国产国拍精品亚洲av在线观看| 乱码一卡2卡4卡精品| 少妇被粗大猛烈的视频| 极品教师在线视频| 亚洲成人中文字幕在线播放| 夜夜夜夜夜久久久久| 中文字幕av成人在线电影| 亚洲av免费高清在线观看| 一个人看的www免费观看视频| 99九九线精品视频在线观看视频| 赤兔流量卡办理| 国产国拍精品亚洲av在线观看| 国产综合懂色| 国产精品国产三级国产av玫瑰| 亚洲不卡免费看| 97人妻精品一区二区三区麻豆| 欧美色欧美亚洲另类二区| 日韩人妻高清精品专区| 热99re8久久精品国产| 亚洲一区二区三区色噜噜| 国产精品久久视频播放| 日本成人三级电影网站| 午夜福利在线观看吧| 国内精品一区二区在线观看| 女人十人毛片免费观看3o分钟| 国产免费男女视频| 69人妻影院| 欧美人与善性xxx| 舔av片在线| 中文字幕av在线有码专区| 国产成年人精品一区二区| 精品人妻一区二区三区麻豆| 国产精品,欧美在线| 亚洲国产精品国产精品| 日日撸夜夜添| 国产精品麻豆人妻色哟哟久久 | 久久国产乱子免费精品| 亚洲欧美精品综合久久99| 久久99蜜桃精品久久| 韩国av在线不卡| 亚洲精品乱码久久久久久按摩| 国产精品嫩草影院av在线观看| 成人特级黄色片久久久久久久| 精品久久久久久久末码| 国产精品1区2区在线观看.| 亚洲国产精品成人综合色| 欧美日本视频| 欧美性感艳星| 国产探花极品一区二区| 69av精品久久久久久| 九草在线视频观看| 国产成人a∨麻豆精品| 黄色一级大片看看| 男女视频在线观看网站免费| 一个人看视频在线观看www免费| 免费大片18禁| 成人高潮视频无遮挡免费网站| 校园人妻丝袜中文字幕| 岛国毛片在线播放| 亚洲婷婷狠狠爱综合网| 你懂的网址亚洲精品在线观看 | 亚洲在线观看片| 在线免费观看的www视频| 国产在视频线在精品| 久久精品综合一区二区三区| 小蜜桃在线观看免费完整版高清| 青春草亚洲视频在线观看| 97超碰精品成人国产| 成人特级av手机在线观看| 看黄色毛片网站| 亚洲av成人av| 波多野结衣巨乳人妻| 久久精品综合一区二区三区| 亚洲国产日韩欧美精品在线观看| 一个人免费在线观看电影| 特级一级黄色大片| 日韩av在线大香蕉| 欧美日韩综合久久久久久| 嫩草影院新地址| 少妇熟女aⅴ在线视频| 日韩成人av中文字幕在线观看| 熟妇人妻久久中文字幕3abv| 欧美zozozo另类| 色综合色国产| 国模一区二区三区四区视频| 午夜福利在线观看免费完整高清在 | 免费av观看视频| or卡值多少钱| 国产成人freesex在线| 日日干狠狠操夜夜爽| 不卡视频在线观看欧美| 99久久无色码亚洲精品果冻| 高清午夜精品一区二区三区 | 欧美又色又爽又黄视频| 又爽又黄无遮挡网站| 亚洲国产精品sss在线观看| 欧美成人免费av一区二区三区| avwww免费| 色尼玛亚洲综合影院| av免费在线看不卡| 欧美一级a爱片免费观看看| 变态另类丝袜制服| 日日摸夜夜添夜夜添av毛片| 女人十人毛片免费观看3o分钟| 国语自产精品视频在线第100页| 国产成人a∨麻豆精品| 日本成人三级电影网站| 久久久久网色| 久久欧美精品欧美久久欧美| 国产精品久久久久久久久免| 婷婷六月久久综合丁香| 99热这里只有是精品50| 国国产精品蜜臀av免费| 亚洲,欧美,日韩| 亚洲七黄色美女视频| 99久久九九国产精品国产免费| 夜夜爽天天搞| 欧美三级亚洲精品| 三级毛片av免费| 黄片无遮挡物在线观看| 久久精品国产亚洲网站| 深夜a级毛片| 男人狂女人下面高潮的视频| 日韩制服骚丝袜av| 国产色婷婷99| 一级二级三级毛片免费看| 两性午夜刺激爽爽歪歪视频在线观看| 亚洲婷婷狠狠爱综合网| 人妻夜夜爽99麻豆av| 亚洲人与动物交配视频| 深夜a级毛片| 高清毛片免费看| 97超视频在线观看视频| 中文字幕av在线有码专区| 免费观看人在逋| 成年版毛片免费区| 给我免费播放毛片高清在线观看| 欧美+亚洲+日韩+国产| 啦啦啦啦在线视频资源| 国产蜜桃级精品一区二区三区| 观看免费一级毛片| 国产精品日韩av在线免费观看| kizo精华| 国产成人a∨麻豆精品| 夜夜看夜夜爽夜夜摸| 久99久视频精品免费| 亚洲乱码一区二区免费版| 成年av动漫网址| 国产精品,欧美在线| av专区在线播放| 超碰av人人做人人爽久久| 亚洲欧美日韩高清在线视频| 欧美性猛交黑人性爽| 欧美+日韩+精品| 夜夜爽天天搞| 成人毛片60女人毛片免费| 久久久久性生活片| 国产高清激情床上av| 亚洲在线观看片| or卡值多少钱| 三级经典国产精品| 久久久国产成人免费| 日韩人妻高清精品专区| 极品教师在线视频| 日韩三级伦理在线观看| 国产精品不卡视频一区二区| 国产精品久久久久久av不卡| 悠悠久久av| 麻豆av噜噜一区二区三区| 亚洲欧美成人综合另类久久久 | 麻豆久久精品国产亚洲av| 国产日本99.免费观看| 久久精品久久久久久噜噜老黄 | 国产一级毛片七仙女欲春2| 非洲黑人性xxxx精品又粗又长| www日本黄色视频网| 一本精品99久久精品77| 九九热线精品视视频播放| 色5月婷婷丁香| 美女内射精品一级片tv| 成人毛片a级毛片在线播放| 麻豆精品久久久久久蜜桃| avwww免费| 中文字幕久久专区| 国产黄色小视频在线观看| 亚洲人成网站在线播放欧美日韩| 99热6这里只有精品| 日韩精品有码人妻一区| 中文字幕久久专区| 最近中文字幕高清免费大全6| 在线天堂最新版资源| 午夜激情福利司机影院| 国产精品av视频在线免费观看| 中文字幕久久专区| 日本爱情动作片www.在线观看| 国产精品久久久久久久电影| 少妇熟女欧美另类| 亚洲美女视频黄频| 天堂av国产一区二区熟女人妻| av在线播放精品| 国产极品精品免费视频能看的| a级毛色黄片| 久久久成人免费电影| 青春草视频在线免费观看| 日韩成人av中文字幕在线观看| 中文亚洲av片在线观看爽| 少妇熟女欧美另类| 国产成人91sexporn| 精品久久久久久久人妻蜜臀av| 99国产精品一区二区蜜桃av| 12—13女人毛片做爰片一| 成人二区视频| 国产一区亚洲一区在线观看| 欧美日韩国产亚洲二区| 最近手机中文字幕大全| 2021天堂中文幕一二区在线观| 亚洲第一电影网av| or卡值多少钱| 99视频精品全部免费 在线| 国产精品久久久久久精品电影小说 | 丰满的人妻完整版| 精品久久久久久久人妻蜜臀av| 免费人成视频x8x8入口观看| 99久久久亚洲精品蜜臀av| 国产v大片淫在线免费观看| 国产高清视频在线观看网站| 国产成人freesex在线| 午夜精品在线福利| 亚洲国产精品sss在线观看| 亚洲av成人精品一区久久| 亚洲av一区综合| 日本-黄色视频高清免费观看| 免费看av在线观看网站| 在线免费观看的www视频| 国产伦一二天堂av在线观看| 亚洲精品国产av成人精品| 日本与韩国留学比较| 国产大屁股一区二区在线视频| 听说在线观看完整版免费高清| 婷婷亚洲欧美| 国产精品美女特级片免费视频播放器| 久久亚洲精品不卡| 人人妻人人看人人澡| 能在线免费看毛片的网站| av在线观看视频网站免费| 最近最新中文字幕大全电影3| a级毛片免费高清观看在线播放| 黄色日韩在线| 少妇人妻精品综合一区二区 | 极品教师在线视频| 国产黄a三级三级三级人| 免费无遮挡裸体视频| 热99re8久久精品国产| 免费av毛片视频| 亚洲无线观看免费| 99久国产av精品国产电影| 成人三级黄色视频| 啦啦啦韩国在线观看视频| 岛国在线免费视频观看| 日韩欧美 国产精品| 九九爱精品视频在线观看| 亚洲精品国产成人久久av| 在线观看免费视频日本深夜| 亚洲一区高清亚洲精品| 亚洲av免费在线观看| 精品少妇黑人巨大在线播放 | 精品久久久久久久人妻蜜臀av| 18禁在线无遮挡免费观看视频| 日产精品乱码卡一卡2卡三| 真实男女啪啪啪动态图| 搡老妇女老女人老熟妇| ponron亚洲| 亚洲国产精品久久男人天堂| 国产精品爽爽va在线观看网站| 熟女电影av网| 欧美色欧美亚洲另类二区| 国产精品人妻久久久影院| 岛国毛片在线播放| 午夜激情福利司机影院| 一本—道久久a久久精品蜜桃钙片 精品乱码久久久久久99久播 | 国内揄拍国产精品人妻在线| 看黄色毛片网站| 美女cb高潮喷水在线观看| 婷婷色综合大香蕉| 欧美变态另类bdsm刘玥| 久久久久九九精品影院| 国产真实伦视频高清在线观看| 免费人成在线观看视频色| 精品久久久久久久末码| 国产午夜精品久久久久久一区二区三区| 午夜久久久久精精品| 一夜夜www| 国产爱豆传媒在线观看| 高清在线视频一区二区三区 | 男人的好看免费观看在线视频| 国产精品一二三区在线看| 亚洲无线观看免费| 好男人视频免费观看在线| 九草在线视频观看| 免费无遮挡裸体视频| 1024手机看黄色片| 日韩欧美精品v在线| 日韩欧美国产在线观看| 成人特级av手机在线观看| 欧美不卡视频在线免费观看| 日韩亚洲欧美综合| 国产精品福利在线免费观看| 别揉我奶头 嗯啊视频| 国产黄a三级三级三级人| 久久精品国产亚洲av涩爱 | 99热这里只有是精品50| 深爱激情五月婷婷|