NativeAPI函數重構方法及裝置制造方法

            文檔序號:6514076閱讀:273來源:國知局
            Native API函數重構方法及裝置制造方法
            【專利摘要】本發明公開了一種Native?API函數重構方法及裝置,屬于計算機【技術領域】。所述方法包括:獲取加載函數的系統調用號;將每個加載函數的系統調用號分別拷貝至自定義加載函數的代碼體中;根據自定義加載函數將NTDLL.DLL加載至內存的指定位置;利用NTDLL.DLL中的Native?API函數分別重構自定義代碼段內各個自定義Native?API函數。本發明通過模擬加載函數對NTDLL.DLL進行加載,利用加載后的NTDLL.DLL對Native?API函數進行重構;解決了現有技術中調用API函數時存在較大安全隱患的問題;在應用程序運行時可以直接調用重構后的自定義Native?API函數,達到了避免應用程序被惡意程序處理,提高應用程序安全性的效果。
            【專利說明】Native API函數重構方法及裝置
            【技術領域】
            [0001]本發明涉及計算機【技術領域】,特別涉及一種Native API函數重構方法及裝置。
            【背景技術】
            [0002]隨著WINDOWS API (WINDOWS Application Programming Interface, WINDOWS 應用程序編程接口)編程的廣泛普及和應用,越來越多的應用程序可以通過調用WINDOWS API函數來完成相應的功能。
            [0003]目前,應用程序在實現具體功能時,在應用層,首先需要加載與功能相關的DLL(Dynamic Link Library,動態鏈接庫),然后根據 GetProcAddress 函數獲取 DLL 中 WINDOWSAPI函數的起始地址,根據這些起始地址調用對應的WINDOWS API函數,這些WINDOWS API函數通常會最終調用較低級的Native API函數,這些Native API函數最終完成對驅動層的訪問。
            [0004]在實現本發明的過程中,發明人發現現有技術至少存在以下問題:在應用層上,惡意程序(比如利用鉤子Η00Κ技術的程序)可以預先處理GetPiOcAddress函數,以得到相關的API函數(通常可以包括WINDOWS API函數或者Native API函數)的起始地址,并獲取API函數的內容或對API函數的內容進行修改。因此,在應用層上,惡意程序均可以非法監聽、攔截或篡改API函數中的內容,從而使得應用程序存在較大的安全隱患。

            【發明內容】

            [0005]為了解決現有技術中調用API函數的過程中容易被惡意程序預先處理,使得應用程序存在較大的安全隱患的問題,本發明實施例提供了一種Native API函數重構方法及裝置。所述技術方案如下:
            [0006]第一方面,提供了一種Native API函數重構方法,所述方法,包括:
            [0007]獲取加載函數的系統調用號,所述加載函數用于將動態鏈接庫NTDLL.DLL加載至內存,所述NTDLL.DLL中包含Native API函數;
            [0008]將每個所述加載函數的系統調用號分別拷貝至與所述加載函數對應的各個自定義加載函數的代碼體中,所述自定義加載函數位于用于執行應用程序的自定義代碼段中,所述自定義加載函數的代碼體中的初始代碼與所述加載函數中的代碼相同;
            [0009]根據包含有所述加載函數的系統調用號的所述自定義加載函數將所述NTDLL.DLL加載至所述內存的指定位置;
            [0010]利用位于所述指定位置的NTDLL.DLL中的Native API函數中的代碼分別重構所述自定義代碼段內與所述Native API函數對應的各個自定義Native API函數中的代碼。
            [0011]在第一方面的第一種可能的實施方式中,在所述根據包含有所述加載函數的系統調用號的所述自定義加載函數將所述NTDLL.DLL加載至所述內存的指定位置之前,還包括:
            [0012]獲取分配函數的系統調用號,所述分配函數用于為所述加載函數分配內存讀寫執行權限;
            [0013]將所述分配函數的系統調用號拷貝到所述自定義分配函數的代碼體內,所述自定義分配函數位于所述自定義代碼段中;
            [0014]利用包含有所述分配函數的系統調用號的所述自定義分配函數為所述自定義加載函數分配內存讀寫執行權限。
            [0015]結合第一方面或者第一方面的第一種可能的實施方式,在第二種可能的實施方式中,所述根據包含有所述加載函數的系統調用號的所述自定義加載函數將所述NTDLL.DLL加載至所述內存的指定位置之前,還包括:
            [0016]將用于調用內核函數的公用代碼段拷貝到所述自定義代碼段中;
            [0017]所述根據包含有所述加載函數的系統調用號的所述自定義加載函數將所述NTDLL.DLL加載至所述內存的指定位置,包括:
            [0018]根據包含有所述加載函數的系統調用號的所述自定義加載函數以及所述自定義代碼段中的所述公用代碼段將所述NTDLL.DLL加載至所述內存的指定位置。
            [0019]結合第一方面、第一方面的第一種可能的實施方式或者第一方面的第二種可能的實施方式,在第三種可能的實施方式中,在所述將用于調用內核函數的公用代碼段拷貝到所述自定義代碼段中之前,還包括:
            [0020]遍歷內存中NTDLL的導出表,獲取指定的測試函數的起始地址;
            [0021]根據所述測試函數的起始地址調用所述測試函數以獲取系統類型;
            [0022]所述將用于調用內核函數的公用代碼段拷貝到所述自定義代碼段中,包括:
            [0023]根據所述系統類型將用于調用與所述系統類型對應的內核函數的公用代碼段拷貝至所述自定義代碼段中。
            [0024]結合第一方面、第一方面的第一種可能的實施方式、第一方面的第二種可能的實施方式或者第一方面的第三種可能的實施方式,在第四種可能的實施方式中,所述系統類型為64位W0W64模式、32位或64位,所述根據所述系統類型將用于調用與所述系統類型對應的內核函數的公用代碼段拷貝至所述自定義代碼段中,包括:
            [0025]當所述系統類型為64位時,將用于調用64位W0W64模式的內核函數的公用代碼段拷貝到所述自定義代碼段中的第一指定位置;
            [0026]或者,
            [0027]當所述系統類型為32位時,將用于調用32位的內核函數的公用代碼段拷貝到所述自定義代碼段中的第二指定位置;
            [0028]或者,
            [0029]當所述系統類型為64位時,將用于調用64位的內核函數的公用代碼段拷貝到所述自定義代碼段中的第三指定位置。
            [0030]第二方面,提供了一種Native API函數重構裝置,所述裝置,包括:
            [0031]第一獲取模塊,用于獲取加載函數的系統調用號,所述加載函數用于將動態鏈接庫NTDLL.DLL加載至內存,所述NTDLL.DLL中包含Native API函數;
            [0032]第一拷貝模塊,用于將每個所述加載函數的系統調用號分別拷貝至與所述加載函數對應的各個自定義加載函數的代碼體中,所述自定義加載函數位于用于執行應用程序的自定義代碼段中,所述自定義加載函數的代碼體中的初始代碼與所述加載函數中的代碼相同;
            [0033]加載模塊,用于根據包含有所述加載函數的系統調用號的所述自定義加載函數將所述NTDLL.DLL加載至所述內存的指定位置;
            [0034]重構模塊,用于利用位于所述指定位置的NTDLL.DLL中的Native API函數中的代碼分別重構所述自定義代碼段內與所述Native API函數對應的各個自定義Native API函數中的代碼。
            [0035]在第二方面的第一種可能的實施方式中,所述裝置,還包括:
            [0036]第二獲取模塊,用于獲取分配函數的系統調用號,所述分配函數用于為所述加載函數分配內存讀寫執行權限;
            [0037]第二拷貝模塊,用于將所述分配函數的系統調用號拷貝到所述自定義分配函數的代碼體內,所述自定義分配函數位于所述自定義代碼段中;
            [0038]分配模塊,用于利用包含有所述分配函數的系統調用號的所述自定義分配函數為所述自定義加載函數分配內存讀寫執行權限。
            [0039]結合第二方面或者第二方面的第一種可能的實施方式,在第二種可能的實施方式中,所述裝置,還包括:
            [0040]代碼段拷貝模塊,用于將用于調用內核函數的公用代碼段拷貝到所述自定義代碼段中;
            [0041]所述加載模塊,還用于:
            [0042]根據包含有所述加載函數的系統調用號的所述自定義加載函數以及所述自定義代碼段中的所述公用代碼段將所述NTDLL.DLL加載至所述內存的指定位置。
            [0043]結合第二方面、第二方面的第一種可能的實施方式或者第二方面的第二種可能的實施方式,在第三種可能的實施方式中,所述裝置,還包括:
            [0044]遍歷模塊,遍歷內存中NTDLL的導出表,獲取指定的測試函數的起始地址;
            [0045]類型獲取模塊,用于根據所述測試函數的起始地址調用所述測試函數以獲取系統類型;
            [0046]所述代碼段拷貝模塊,用于:
            [0047]根據所述系統類型將用于調用與所述系統類型對應的內核函數的公用代碼段拷貝至所述自定義代碼段中。
            [0048]結合第二方面、第二方面的第一種可能的實施方式、第二方面的第二種可能的實施方式或者第二方面的第三種可能的實施方式,在第四種可能的實施方式中,所述系統類型為64位W0W64模式、32位或64位,所述代碼段,包括:
            [0049]第一拷貝單元,用于當所述系統類型為64位W0W64模式時,將用于調用64位W0W64模式的內核函數的公用代碼段拷貝到所述自定義代碼段中的第一指定位置;
            [0050]或者,
            [0051]第二拷貝單元,用于當所述系統類型為32位時,將用于調用32位的內核函數的公用代碼段拷貝到所述自定義代碼段中的第二指定位置;
            [0052]或者,
            [0053]第三拷貝單元,用于當所述系統類型為64位時,將用于調用64位的內核函數的公用代碼段拷貝到所述自定義代碼段中的第三指定位置。[0054]本發明實施例提供的技術方案帶來的有益效果是:
            [0055]通過根據包含有加載函數的系統調用號的自定義加載函數將NTDLL.DLL加載至內存的指定位置,位于自定義代碼段中的每個自定義加載函數中包含有對應的加載函數的代碼,利用位于指定位置的NTDLL.DLL中的Native API函數中的代碼分別重構自定義代碼段內與Native API函數對應的各個自定義Native API函數中的代碼;解決了現有技術中調用API函數的過程中容易被惡意程序預先處理,使得應用程序存在較大安全隱患的問題JfNative API函數進行重構,在應用程序運行時可以通過自定義代碼段直接調用重構后的自定義Native API函數,實現應用程序的相關功能,達到了可以避免應用程序被惡意程序處理,大大提高了應用程序安全性的效果。
            【專利附圖】

            【附圖說明】
            [0056]為了更清楚地說明本發明實施例中的技術方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
            [0057]圖1是本發明一個實施例提供的Native API函數重構方法的方法流程圖;
            [0058]圖2是本發明另一個實施例提供的Native API函數重構方法的方法流程圖;
            [0059]圖3是本發明一個實施例提供的Native API函數重構裝置的結構示意圖;
            [0060]圖4是本發明另一個實施例提供的Native API函數重構裝置的結構示意圖。
            【具體實施方式】
            [0061]為使本發明的目的、技術方案和優點更加清楚,下面將結合附圖對本發明實施方式作進一步地詳細描述。
            [0062]在實現本發明的過程中,發明人發現現有技術中在調用執行應用程序所需的WINDOWS API函數或者Native API函數之前,WINDOWS API函數的地址或者Native API函數的地址容易被惡意程序優先獲取,這樣應用程序最終得到的結果很可能被惡意程序監聽到或者被惡意程序修改掉,因此對于應用程序來講,存在很大的安全隱患。而發明人發現應用程序在執行的過程中,調用的WINDOWS API函數最終會調用較低級的Native API函數以完成相應的功能,且應用程序中自己寫的代碼段(稱為自定義代碼段)不易被惡意程序監聽至IJ,因此發明人將Native API函數放入到自己定義的自定義代碼段中,并利用一種特殊的方法重構自定義代碼段中的Native API函數,這樣在應用程序執行時,直接調用自定義代碼段中的Native API函數即可完成相應的功能,從而保證應用程序的內容不會被惡意程序監聽或篡改,可以大大提高應用程序的安全性。
            [0063]也就是說,當應用程序執行時,系統會將相關的動態鏈接庫(包括NTDLL.DLL)自動加載至內存的固定位置,這樣惡意程序就可以獲取內存中該固定位置處動態鏈接庫中的函數信息。由于應用程序在執行時需要調用相關的WINDOWS API函數來完成相應的功能,而WINDOWS API函數最終是通過Native API函數完成對內核函數的調用。因此如果能夠保證WINDOWS API函數正確或者Native API函數正確就可以保證應用程序完成正確的功能。通常,自己定義的代碼段是不容易被惡意程序Hook到的,因此可以將所需要的WINDOWS API函數或者Native API函數放入自己定義的代碼段中,以完成應用程序的相關功能,且可以避免被Hook到。但在實際應用中WINDOWS API函數的種類較多,不容易被重構,因此發明人通過重構Native API函數來實現應用程序的相關功能。
            [0064]下面通過具體的實施例對Native API函數重構方法進行詳細說明。
            [0065]請參見圖1,其示出了本發明一個實施例中提供的Native API函數重構方法的方法流程圖。該Native API函數重構方法可以包括:
            [0066]101,獲取加載函數的系統調用號,加載函數用于將動態鏈接庫NTDLL.DLL加載至內存,該NTDLL.DLL中包含Native API函數;
            [0067]為了避免惡意程序監聽并篡改NTDLL.DLL中的Native API函數,可以通過模擬的加載函數對NTDLL.DLL進行重新加載,以將NTDLL.DLL重新加載至內存中自己指定的位置,這樣就可以避免惡意程序監聽并篡改NTDLL.DLL中的Native API函數。
            [0068]而在模擬加載函數時,需要獲取加載函數的系統調用號,以便于模擬加載函數。舉例來講,當應用程序被執行后,系統首先加載一個NTDLL.DLL至內存的固定位置,此時則可以獲取系統加載的NTDLL.DLL中的加載函數的系統調用號。
            [0069]102,將每個加載函數的系統調用號分別拷貝至與加載函數對應的各個自定義加載函數的代碼體中,自定義加載函數位于用于執行應用程序的自定義代碼段中,自定義加載函數的代碼體中的初始代碼與加載函數中的代碼相同;
            [0070]自定義代碼段是應用程序中自己定義的一段代碼,該自定義代碼段中初始定義了該應用程序所需要的Native API函數,比如可以用于將動態鏈接庫NTDLL.DLL加載至內存的加載函數等。
            [0071]由于自定義代碼段中Native API函數的初始代碼都是從系統中直接獲取到的,在實際應用中,這些函數的初始代碼很可能已經被惡意程序Hook過,因此這些代碼可能是不安全的。
            [0072]此時,需要模擬出加載函數,即自定義加載函數。由于自定義加載函數是模擬的加載函數,在生成自定義加載函數時是不知道該自定義加載函數的系統調用號的,且在利用自定義加載函數需要使用到與自定義加載函數相關的系統調用號,因此需要首先獲取加載函數的系統調用號,然后將該系統調用號拷貝至模擬的自定義加載函數中。
            [0073]103,根據包含有加載函數的系統調用號的自定義加載函數將NTDLL.DLL加載至內存的指定位置;
            [0074]也就是說,通過模擬的自定義加載函數加載NTDLL.DLL的過程可以包括:獲取加載函數的系統調用號,并將加載函數的系統調用號拷貝至自定義代碼段中的自定義加載函數中,利用該包含有加載函數的系統調用號的自定義加載函數將NTDLL.DLL加載至內存的指定位置。這樣由于自定義代碼段中的自定義加載函數無法被惡意程序Hook到,因此,利用模擬出來的自定義加載函數來加載NTDLL.DLL至內存的指定位置后,內存的指定位置處的NTDLL.DLL也無法被惡意程序Hook到。這樣,也就保證了 NTDLL.DLL中的所有NativeAPI函數都是安全的。
            [0075]需要說明的是,當應用程序開始執行時,首先系統加載NTDLL.DLL至內存的固定位置后,然后可以獲取該固定位置處NTDLL.DLL中的加載函數的系統調用號,將該系統調用號拷貝至自定義代碼段中的自定義加載函數中;隨后通過模擬的自定義加載函數加載NTDLL.DLL至內存的指定位置。固定位置處的NTDLL.DLL的內容容易被Hook到,而自己加載的指定位置處的NTDLL.DLL則不容易被Hook到。
            [0076]104,利用位于指定位置的NTDLL.DLL中的Native API函數中的代碼分別重構自定義代碼段內與Native API函數對應的各個自定義Native API函數中的代碼。
            [0077]由于內存的指定位置處的NTDLL.DLL中的所有Native API函數都是安全的,因此可以根據自定義代碼段中設置的自定義Native API函數,從NTDLL.DLL中找到與這些自定義Native API函數對應的Native API函數,并根據這些Native API函數分別重構自定義代碼段內與Native API函數對應的各個自定義Native API函數中的代碼。
            [0078]由此可知,自定義代碼段中重構后的自定義Native API函數具有對應的原有Native API的功能,且自定義Native API函數中的代碼是安全的。由于自定義NativeAPI函數是放置在自定義代碼段中的,因此這些自定義Native API函數也不易被惡意程序Hook 到。
            [0079]在本實施例中的第一種可能的實現方式中,在所述根據包含有所述加載函數的系統調用號的所述自定義加載函數將所述NTDLL.DLL加載至所述內存的指定位置之前,還包括:
            [0080]獲取分配函數的系統調用號,所述分配函數用于為所述加載函數分配內存讀寫執行權限;
            [0081 ] 將所述分配函數的系統調用號拷貝到所述自定義分配函數的代碼體內,所述自定義分配函數位于所述自定義代碼段中;
            [0082]利用包含有所述分配函數的系統調用號的所述自定義分配函數為所述自定義加載函數分配內存讀寫執行權限。
            [0083]在本實施例中的第二種可能的實現方式中,所述根據包含有所述加載函數的系統調用號的所述自定義加載函數將所述NTDLL.DLL加載至所述內存的指定位置之前,還包括:
            [0084]將用于調用內核函數的公用代碼段拷貝到所述自定義代碼段中;
            [0085]所述根據包含有所述加載函數的系統調用號的所述自定義加載函數將所述NTDLL.DLL加載至所述內存的指定位置,包括:
            [0086]根據包含有所述加載函數的系統調用號的所述自定義加載函數以及所述自定義代碼段中的所述公用代碼段將所述NTDLL.DLL加載至所述內存的指定位置。
            [0087]在本實施例中的第三種可能的實現方式中,在所述將用于調用內核函數的公用代碼段拷貝到所述自定義代碼段中之前,還包括:
            [0088]遍歷內存中NTDLL的導出表,獲取指定的測試函數的起始地址;
            [0089]根據所述測試函數的起始地址調用所述測試函數以獲取系統類型;
            [0090]所述將用于調用內核函數的公用代碼段拷貝到所述自定義代碼段中,包括:
            [0091]根據所述系統類型將用于調用與所述系統類型對應的內核函數的公用代碼段拷貝至所述自定義代碼段中。
            [0092]在本實施例中的第四種可能的實現方式中,所述系統類型為64位W0W64模式、32位或64位,所述根據所述系統類型將用于調用與所述系統類型對應的內核函數的公用代碼段拷貝至所述自定義代碼段中,包括:[0093]當所述系統類型為64位W0W64模式時,將用于調用64位W0W64模式的內核函數的公用代碼段拷貝到所述自定義代碼段中的第一指定位置;
            [0094]或者,
            [0095]當所述系統類型為32位時,將用于調用32位的內核函數的公用代碼段拷貝到所述自定義代碼段中的第二指定位置;
            [0096]或者,
            [0097]當所述系統類型為64位時,將用于調用64位的內核函數的公用代碼段拷貝到所述自定義代碼段中的第三指定位置。
            [0098]綜上所述,本發明實施例提供的Native API函數重構方法,通過根據包含有加載函數的系統調用號的自定義加載函數將NTDLL.DLL加載至內存的指定位置,位于自定義代碼段中的每個自定義加載函數中包含有對應的加載函數的代碼,利用位于指定位置的NTDLL.DLL中的Native API函數中的代碼分別重構自定義代碼段內與Native API函數對應的各個自定義Native API函數中的代碼;解決了現有技術中調用API函數的過程中容易被惡意程序預先處理,以使得應用程序存在較大的安全隱患的問題;將Native API函數進行重構,在應用程序運行時可以通過自定義代碼段直接調用重構后的自定義Native API函數,實現應用程序的相關功能,達到了可以避免應用程序被惡意程序處理,大大提高了應用程序安全性的效果。
            [0099]請參見圖2,其示出了本發明另一個實施例中提供的Native API函數重構方法的方法流程圖。該Native API函數重構方法可以包括:
            [0100]201,獲取加載函數的系統調用號,加載函數用于將動態鏈接庫NTDLL.DLL加載至內存,NTDLL.DLL中包含Native API函數;
            [0101]由于本實施例是對Native API函數進行重構,因此需要模擬的加載函數將包含Native API函數的NTDLL.DLL加載至內存,以獲取安全的NTDLL.DLL。舉例來講,當應用程序被執行后,系統首先加載一個NTDLL.DLL至內存的固定位置,此時則可以獲取系統加載的NTDLL.DLL中的加載函數的系統調用號。
            [0102]在一個可能的實現方式中,加載函數可以為ZwCreateFile, ZwCreateSection,ZwMapViewOfSection, ZwAllocateVirtualMemory, ZwFreeVirtualMemory 等,這些加載函數均是在將NTDLL.DLL加載至內存時需要用到的函數。
            [0103]202,將每個加載函數的系統調用號分別拷貝至與加載函數對應的各個自定義加載函數的代碼體中,自定義加載函數位于用于執行應用程序的自定義代碼段中,自定義加載函數的代碼體中的初始代碼與加載函數中的代碼相同;
            [0104]自定義代碼段是應用程序中自己定義的一段代碼,該自定義代碼段中初始定義了該應用程序所需要的自定義Native API函數,比如可以用于將NTDLL.DLL加載至內存的加載函數等,當然自定義Native API函數還可以包括其他函數,比如可以用于生成文檔的函數、可以用于加載其他動態數據鏈接庫的函數或可以用于實現拷貝功能的函數等。
            [0105]自定義代碼段中已經設置了應用程序執行時需要用到的自定義NativeAPI函數,通常,自定義Native API函數的初始代碼都是獲取的與該自定義NativeAPI函數對應的Native API函數中的代碼。舉例來講,當應用程序需要用到NtQuerylnformationProcess這一 Native API函數時,自定義代碼段中會設置一個自定義NtQuerylnformationProcess 函數,該自定義 NtQuerylnformationProcess 函數中的初始代碼即為NtQuerylnformationProcess函數的代碼。
            [0106]值得注意的是,由于自定義Native API函數是自己定義的,因此這些函數在初始時是沒有系統調用號的。由于需要模擬的加載函數對NTDLL.DLL進行加載,因此需要將每個加載函數的系統調用號分別拷貝至與加載函數對應的各個自定義加載函數的代碼體中,以便使用這些自定義加載函數。
            [0107]203,獲取分配函數的系統調用號,分配函數用于為加載函數分配內存讀寫執行權限;
            [0108]舉例來講,當應用程序被執行后,系統首先加載一個NTDLL.DLL至內存的固定位置,此時則可以獲取系統加載的NTDLL.DLL中的分配函數的系統調用號。
            [0109]通常來講,如果加載函數想要對NTDLL.DLL進行加載,這些加載函數首先需要具備內存讀寫執行權限,為這些加載函數分配內存讀寫執行權限的函數即為分配函數。而模擬的自定義加載函數在初始時是沒有加載權限的,因此,需要為這些自定義加載函數分配內存讀寫執行權限,即通過分配函數為這些自定義加載函數分配內存讀寫執行權限。在實際應用中,可以通過分配函數ZwProtectVirtualMemory為自定義加載函數分配內存讀寫執行權限。
            [0110]204,將分配函數的系統調用號拷貝到自定義分配函數的代碼體內,自定義分配函數位于自定義代碼段中;
            [0111]由于分配函數也可以被惡意程序Hook,因此這里也需要在自定義代碼段中模擬一個分配函數,即自定義分配函數。很顯然,這個自定義分配函數在初始時也是沒有系統調用號的,因此首先需要獲取分配函數的系統調用號。
            [0112]在獲取到分配函數的系統調用號之后,將分配函數的系統調用號拷貝至自定義分配函數的代碼體內,以模擬出可用于為自定義加載函數分配內存讀寫權限的自定義分配函數。
            [0113]205,利用包含有分配函數的系統調用號的自定義分配函數為自定義加載函數分配內存讀寫執行權限;
            [0114]當為自定義分配函數拷貝過分配函數的系統調用號之后,即該自定義分函數模擬成功,此時可以通過該自定義分配函數為自定義加載函數分配內存讀寫執行權限。
            [0115]206,將用于調用內核函數的公用代碼段拷貝到自定義代碼段中;
            [0116]公用代碼段是指所有Native API函數調用內核函數時均需要使用的代碼段。
            [0117]在一個可能的實現方式中,可以首先通過遍歷peb,獲取NTDLL的指針ModuleBase,即用來模擬GetMoudleHandle ( “NTDLL”);然后遍歷內存中NTDLL.DLL的導出表,對該導出表進行遍歷以獲取指定的測試函數的起始地址,即用來模擬GetProcAddress ;然后根據測試函數的起始地址調用測試函數以獲取系統類型。
            [0118]舉例來講,這里的測試函數可以為ZwTestAlert,在調用測試函數ZwTestAlert獲取系統的類型時,由于ZwTestAlert測試函數通常沒人使用,也就不會被惡意程序Hook到,且該函數在使用時不需要系統調用號,因此可以直接根據獲取到的測試函數ZwTestAlert來獲取系統類型。當然,在實際應用中,也可以通過其他類似的函數獲取系統類型。
            [0119]通常來講,系統類型可以為64位W0W64模式、32位或64位。一般的,Native API函數都會通過一段公用的代碼段來調用內核函數,這段代碼段可以稱之為公用代碼段。當系統類型不同時,調用內核函數的公用代碼段也會不同,也就是說,64位的系統、32位的系統和64位W0W64模式的系統中調用內核函數的公用代碼段是不同的。因此,為了避免這段公用代碼段被惡意程序Hook到,可以根據系統類型將用于調用與系統類型對應的內核函數的公用代碼段拷貝至自定義代碼段中,以便于后續的Native API使用這段公用代碼段。
            [0120]為了使得自定義代碼段可以共享在不同的類型的系統中,可以在該自定義代碼段中設置三個位置,這三個位置可以分別用于存放在64位系統W0W64模式中需要調用內核函數的公用代碼段、在32位系統中需要調用內核函數的公用代碼段和在64位系統中需要調用內核函數的公用代碼段。舉例來講,當系統類型為64位W0W64模式時,將用于調用64位W0W64模式的內核函數的公用代碼段拷貝到自定義代碼段中的第一指定位置;當系統類型為32位時,將用于調用32位的內核函數的公用代碼段拷貝到自定義代碼段中的第二指定位置;當系統類型為64位時,將用于調用64位的內核函數的公用代碼段拷貝到自定義代碼段中的第三指定位置。這里所講的第一指定位置、第二指定位置和第三指定位置即為自定義代碼段中為不同的公用代碼段指定的三個不同的位置空間。
            [0121]207,根據包含有加載函數的系統調用號的自定義加載函數以及自定義代碼段中的公用代碼段將NTDLL.DLL加載至內存的指定位置;
            [0122]通常,加載函數在將NTDLL.DLL加載至內存時,需要使用到調用內核函數的公用代碼段,因此需要模擬好的自定義加載函數以及拷貝至自定義代碼段中的公用代碼段將NTDLL.DLL加載至內存的指定位置。這個指定位置可以是根據實際情況自由設置,這樣也就避免了惡意程序Hook到這個內存中的NTDLL.DLL。
            [0123]由此可知,通過模擬的安全的自定義加載函數以及安全的公用代碼段實現了將NTDLL.DLL加載至內存的指定位置,這樣NTDLL.DLL中的Native API函數就是安全的了。
            [0124]208,利用位于內存的指定位置的NTDLL.DLL中的Native API函數中的代碼分別重構自定義代碼段內與Native API函數對應的各個自定義Native API函數中的代碼。
            [0125]由于應用程序中所需要的Native API函數可能并不是NTDLL.DLL中所有的Native API函數,因此,只需要將應用程序需要用到的Native API函數重構即可。
            [0126]舉例來講,當應用程序需要η個Native API函數時,首先在自定義代碼段中自定義η個自定義Native API函數,通常來講,這些自定義Native API函數的初始代碼都是通過系統調用得到的Native API函數的代碼,這些代碼可能是不安全的,因此需要對這些自定義Native API函數中的代碼進行重構。此時由于位于內存的指定位置的NTDLL.DLL中的Native API函數中的代碼都是安全的,因此可以對應將與這η個自定義Native API函數對應的Native API函數中的代碼拷貝出來,然后將每個Native API函數中的代碼分別覆蓋對應的自定義Native API函數中的代碼,進而完成對該Native API函數進行的重構。
            [0127]需要說明的是,當應用程序開始執行時,首先系統加載NTDLL.DLL至內存的固定位置后,然后可以獲取該固定位置處NTDLL.DLL中的加載函數的系統調用號、分配函數的系統調用號以及其他需要的Native API函數的系統調用號,將每一個Native API函數的系統調用號分別拷貝至自定義代碼段中的對應的自定義加載函數中;隨后通過模擬的自定義分配函數為自定義加載函數分配內存讀寫訪問權限;最后通過模擬的自定義加載函數加載NTDLL.DLL至內存的指定位置。固定位置處的NTDLL.DLL的內容容易被Hook到,而自己加載的指定位置處的NTDLL.DLL則不容易被Hook到。
            [0128]還需要說明的是,上述實施例中僅示意性描述了加載NTDLL.DLL時用到的幾個Native API函數,當然,在實際應用中,應用程序可能還需要其他的Native API加載其他需要的動態鏈接庫,因此還可能需要其他的Native API函數,比如LdrLoadDll函數、LdrUnLoadDll 函數等。
            [0129]綜上所述,本發明實施例提供的Native API函數重構方法,通過根據包含有加載函數的系統調用號的自定義加載函數將NTDLL.DLL加載至內存的指定位置,位于自定義代碼段中的每個自定義加載函數中包含有對應的加載函數的代碼,利用位于指定位置的NTDLL.DLL中的Native API函數中的代碼分別重構自定義代碼段內與Native API函數對應的各個自定義Native API函數中的代碼;解決了現有技術中調用API函數的過程中容易被惡意程序預先處理,以使得應用程序存在較大的安全隱患的問題;將Native API函數進行重構,在應用程序運行時可以通過自定義代碼段直接調用重構后的自定義Native API函數,實現應用程序的相關功能,達到了可以避免應用程序被惡意程序處理,大大提高了應用程序安全性的效果。
            [0130]請參見圖3所示,其示出了本發明一個實施例中提供的Native API函數重構裝置。該Native API函數重構裝置可以包括但不限于:第一獲取模塊301、第一拷貝模塊302、加載模塊303和重構模塊304。
            [0131]第一獲取模塊301,可以用于獲取加載函數的系統調用號,加載函數用于將動態鏈接庫NTDLL.DLL加載至內存,NTDLL.DLL中包含Native API函數;
            [0132]第一拷貝模塊302,可以用于將每個加載函數的系統調用號分別拷貝至與加載函數對應的各個自定義加載函數的代碼體中,自定義加載函數位于用于執行應用程序的自定義代碼段中,自定義加載函數的代碼體中的初始代碼與加載函數中的代碼相同;
            [0133]加載模塊303,可以用于根據包含有加載函數的系統調用號的自定義加載函數將NTDLL.DLL加載至內存的指定位置;
            [0134]重構模塊304,可以用于利用位于指定位置的NTDLL.DLL中的Native API函數中的代碼分別重構自定義代碼段內與Native API函數對應的各個自定義Native API函數中的代碼。
            [0135]綜上所述,本發明實施例提供的Native API函數重構裝置,通過根據包含有加載函數的系統調用號的自定義加載函數將NTDLL.DLL加載至內存的指定位置,位于自定義代碼段中的每個自定義加載函數中包含有對應的加載函數的代碼,利用位于指定位置的NTDLL.DLL中的Native API函數中的代碼分別重構自定義代碼段內與Native API函數對應的各個自定義Native API函數中的代碼;解決了現有技術中調用API函數的過程中容易被惡意程序預先處理,以使得應用程序存在較大的安全隱患的問題;將Native API函數進行重構,在應用程序運行時可以通過自定義代碼段直接調用重構后的自定義Native API函數,實現應用程序的相關功能,達到了可以避免應用程序被惡意程序處理,大大提高了應用程序安全性的效果。
            [0136]請參見圖4所示,其示出了本發明另一個實施例中提供的Native API函數重構裝置。該Native API函數重構裝置可以包括但不限于:第一獲取模塊401、第一拷貝模塊402、加載模塊403和重構模塊404。[0137]第一獲取模塊401,可以用于獲取加載函數的系統調用號,加載函數用于將動態鏈接庫NTDLL.DLL加載至內存,NTDLL.DLL中包含Native API函數;
            [0138]第一拷貝模塊402,可以用于將每個加載函數的系統調用號分別拷貝至與加載函數對應的各個自定義加載函數的代碼體中,自定義加載函數位于用于執行應用程序的自定義代碼段中,自定義加載函數的代碼體中的初始代碼與加載函數中的代碼相同;
            [0139]加載模塊403,可以用于根據包含有加載函數的系統調用號的自定義加載函數將NTDLL.DLL加載至內存的指定位置;
            [0140]重構模塊404,可以用于利用位于指定位置的NTDLL.DLL中的Native API函數中的代碼分別重構自定義代碼段內與Native API函數對應的各個自定義Native API函數中的代碼。
            [0141]在本實施例的第一種可能的實現方式中,該Native API函數重構裝置還可以包括:第二獲取模塊405、第二拷貝模塊406和分配模塊407。
            [0142]第二獲取模塊405,可以用于獲取分配函數的系統調用號,分配函數用于為加載函數分配內存讀寫執行權限;
            [0143]第二拷貝模塊406,可以用于將分配函數的系統調用號拷貝到自定義分配函數的代碼體內,自定義分配函數位于自定義代碼段中;
            [0144]分配模塊407,可以用于利用包含有分配函數的系統調用號的自定義分配函數為加載函數分配內存讀寫執行權限。
            [0145]在本實施例的第二種可能的實現方式中,該Native API函數重構裝置還可以包括:代碼段拷貝模塊408。
            [0146]代碼段拷貝模塊408,可以用于將用于調用內核函數的公用代碼段拷貝到自定義代碼段中;
            [0147]加載模塊403,還可以用于:
            [0148]根據包含有加載函數的系統調用號的自定義加載函數以及自定義代碼段中的公用代碼段將NTDLL.DLL加載至內存的指定位置。
            [0149]在本實施例的第三種可能的實現方式中,該Native API函數重構裝置還可以包括:遍歷模塊409和類型獲取模塊410。
            [0150]遍歷模塊409,可以遍歷NTDLL.DLL的導出表,獲取指定的測試函數的起始地址;
            [0151]類型獲取模塊410,可以用于根據測試函數的起始地址調用測試函數以獲取系統類型;
            [0152]代碼段拷貝模塊408,還可以用于根據系統類型將用于調用與系統類型對應的內核函數的公用代碼段拷貝至自定義代碼段中。
            [0153]在本實施例的第四種可能的實現方式中,系統類型為64位W0W64模式、32位或64位,代碼段拷貝模塊408可以包括:第一拷貝單元408a、第二拷貝單元408b和第三拷貝單元 408c。
            [0154]第一拷貝單元408a,可以用于當系統類型為64位W0W64模式時,將用于調用64位W0W64模式的內核函數的公用代碼段拷貝到自定義代碼段中的第一指定位置;
            [0155]第二拷貝單元408b,可以用于當系統類型為32位時,將用于調用32位的內核函數的公用代碼段拷貝到自定義代碼段中的第二指定位置;[0156]第三拷貝單元408c,可以用于當系統類型為64位時,將用于調用64位的內核函數的公用代碼段拷貝到自定義代碼段中的第三指定位置。
            [0157]綜上所述,本發明實施例提供的Native API函數重構裝置,通過根據包含有加載函數的系統調用號的自定義加載函數將NTDLL.DLL加載至內存的指定位置,位于自定義代碼段中的每個自定義加載函數中包含有對應的加載函數的代碼,利用位于指定位置的NTDLL.DLL中的Native API函數中的代碼分別重構自定義代碼段內與Native API函數對應的各個自定義Native API函數中的代碼;解決了現有技術中調用API函數的過程中容易被惡意程序預先處理,以使得應用程序存在較大的安全隱患的問題;將Native API函數進行重構,在應用程序運行時可以通過自定義代碼段直接調用重構后的自定義Native API函數,實現應用程序的相關功能,達到了可以避免應用程序被惡意程序處理,大大提高了應用程序安全性的效果。
            [0158]需要說明的是:上述實施例提供的Native API函數重構裝置在Native API函數重構時,僅以上述各功能模塊的劃分進行舉例說明,實際應用中,可以根據需要而將上述功能分配由不同的功能模塊完成,即將設備的內部結構劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。另外,上述實施例提供的Native API函數重構裝置與NativeAPI函數重構方法實施例屬于同一構思,其具體實現過程詳見方法實施例,這里不再贅述。
            [0159]上述本發明實施例序號僅僅為了描述,不代表實施例的優劣。
            [0160]本領域普通技術人員可以理解實現上述實施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關的硬件完成,所述的程序可以存儲于一種計算機可讀存儲介質中,上述提到的存儲介質可以是只讀存儲器,磁盤或光盤等。
            [0161]以上所述僅為本發明的較佳實施例,并不用以限制本發明,凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護范圍之內。
            【權利要求】
            1.一種Native API函數重構方法,其特征在于,所述方法,包括: 獲取加載函數的系統調用號,所述加載函數用于將動態鏈接庫NTDLL.DLL加載至內存,所述NTDLL.DLL中包含Native API函數; 將每個所述加載函數的系統調用號分別拷貝至與所述加載函數對應的各個自定義加載函數的代碼體中,所述自定義加載函數位于用于執行應用程序的自定義代碼段中,所述自定義加載函數的代碼體中的初始代碼與所述加載函數中的代碼相同; 根據包含有所述加載函數的系統調用號的所述自定義加載函數將所述NTDLL.DLL加載至所述內存的指定位置; 利用位于所述指定位置的NTDLL.DLL中的Native API函數中的代碼分別重構所述自定義代碼段內與所述Native API函數對應的各個自定義Native API函數中的代碼。
            2.根據權利要求1所述的方法,其特征在于,在所述根據包含有所述加載函數的系統調用號的所述自定義加載函數將所述NTDLL.DLL加載至所述內存的指定位置之前,還包括: 獲取分配函數的系統調用號,所述分配函數用于為所述加載函數分配內存讀寫執行權限; 將所述分配函數的系統調用號拷貝到所述自定義分配函數的代碼體內,所述自定義分配函數位于所述自定義代 碼段中; 利用包含有所述分配函數的系統調用號的所述自定義分配函數為所述自定義加載函數分配內存讀寫執行權限。
            3.根據權利要求2所述的方法,其特征在于,所述根據包含有所述加載函數的系統調用號的所述自定義加載函數將所述NTDLL.DLL加載至所述內存的指定位置之前,還包括: 將用于調用內核函數的公用代碼段拷貝到所述自定義代碼段中; 所述根據包含有所述加載函數的系統調用號的所述自定義加載函數將所述NTDLL.DLL加載至所述內存的指定位置,包括: 根據包含有所述加載函數的系統調用號的所述自定義加載函數以及所述自定義代碼段中的所述公用代碼段將所述NTDLL.DLL加載至所述內存的指定位置。
            4.根據權利要求3所述的方法,其特征在于,在所述將用于調用內核函數的公用代碼段拷貝到所述自定義代碼段中之前,還包括: 遍歷內存中NTDLL的導出表,獲取指定的測試函數的起始地址; 根據所述測試函數的起始地址調用所述測試函數以獲取系統類型; 所述將用于調用內核函數的公用代碼段拷貝到所述自定義代碼段中,包括: 根據所述系統類型將用于調用與所述系統類型對應的內核函數的公用代碼段拷貝至所述自定義代碼段中。
            5.根據權利要求4所述的方法,其特征在于,所述系統類型為64位W0W64模式、32位或64位,所述根據所述系統類型將用于調用與所述系統類型對應的內核函數的公用代碼段拷貝至所述自定義代碼段中,包括: 當所述系統類型為64位W0W64模式時,將用于調用64位W0W64模式的內核函數的公用代碼段拷貝到所述自定義代碼段中的第一指定位置; 或者,當所述系統類型為32位時,將用于調用32位的內核函數的公用代碼段拷貝到所述自定義代碼段中的第二指定位置; 或者, 當所述系統類型為64位時,將用于調用64位的內核函數的公用代碼段拷貝到所述自定義代碼段中的第三指定位置。
            6.一種Native API函數重構裝置,其特征在于,所述裝置,包括: 第一獲取模塊,用于獲取加載函數的系統調用號,所述加載函數用于將動態鏈接庫NTDLL.DLL加載至內存,所述NTDLL.DLL中包含Native API函數;第一拷貝模塊,用于將每個所述加載函數的系統調用號分別拷貝至與所述加載函數對應的各個自定義加載函數的代碼體中,所述自定義加載函數位于用于執行應用程序的自定義代碼段中,所述自定義加載函數的代碼體中的初始代碼與所述加載函數中的代碼相同;加載模塊,用于根據包含有所述加載函數的系統調用號的所述自定義加載函數將所述NTDLL.DLL加載至所述內存的指定位置; 重構模塊,用于利用位于所述指定位置的NTDLL.DLL中的Native API函數中的代碼分別重構所述自定義代碼段內與所述Native API函數對應的各個自定義Native API函數中的代碼。
            7.根據權利要求6所述的裝置,其特征在于,所述裝置,還包括: 第二獲取模塊,用于獲取分配函數的系統調用號,所述分配函數用于為所述加載函數分配內存讀寫執行權限; 第二拷貝模塊,用于將所述分配函數的系統調用號拷貝到所述自定義分配函數的代碼體內,所述自定義分配函數位于所述自定義代碼段中; 分配模塊,用于利用包含有所述分配函數的系統調用號的所述自定義分配函數為所述自定義加載函數分配內存讀寫執行權限。
            8.根據權利要求7所述的裝置,其特征在于,所述裝置,還包括: 代碼段拷貝模塊,用于將用于調用內核函數的公用代碼段拷貝到所述自定義代碼段中; 所述加載模塊,還用于: 根據包含有所述加載函數的系統調用號的所述自定義加載函數以及所述自定義代碼段中的所述公用代碼段將所述NTDLL.DLL加載至所述內存的指定位置。
            9.根據權利要求8所述的裝置,其特征在于,所述裝置,還包括: 遍歷模塊,遍歷內存中NTDLL的導出表,獲取指定的測試函數的起始地址; 類型獲取模塊,用于根據所述測試函數的起始地址調用所述測試函數以獲取系統類型; 所述代碼段拷貝模塊,用于: 根據所述系統類型將用于調用與所述系統類型對應的內核函數的公用代碼段拷貝至所述自定義代碼段中。
            10.根據權利要求9所述的裝置,其特征在于,所述系統類型為64位W0W64模式、32位或64位,所述代碼段拷貝模塊,包括: 第一拷貝單兀,用于當所述系統類型為64位W0W64模式時,將用于調用64位W0W64模式的內核函數的公用代碼段拷貝到所述自定義代碼段中的第一指定位置; 或者, 第二拷貝單元,用于當所述系統類型為32位時,將用于調用32位的內核函數的公用代碼段拷貝到所述自定義代碼段中的第二指定位置; 或者, 第三拷貝單元,用于當所述系統類型為64位時,將用于調用64位的內核函數的公用代碼段拷貝到所述自定義代碼段中的第三指定位置。
            【文檔編號】G06F21/51GK103530552SQ201310455970
            【公開日】2014年1月22日 申請日期:2013年9月29日 優先權日:2013年9月29日
            【發明者】馮世杰 申請人:廣州華多網絡科技有限公司
            網友詢問留言 已有0條留言
            • 還沒有人留言評論。精彩留言會獲得點贊!
            1
            婷婷六月激情在线综合激情,亚洲国产大片,久久中文字幕综合婷婷,精品久久久久久中文字幕,亚洲一区二区三区高清不卡,99国产精品热久久久久久夜夜嗨 ,欧美日韩亚洲综合在线一区二区,99国产精品电影,伊人精品线视天天综合,精品伊人久久久大香线蕉欧美
            亚洲精品1区 国产成人一级 91精品国产欧美一区二区 亚洲精品乱码久久久久久下载 国产精品久久久久久久伊一 九色国产 国产精品九九视频 伊人久久成人爱综合网 欧美日韩亚洲区久久综合 欧美日本一道免费一区三区 夜夜爽一区二区三区精品 欧美日韩高清一区二区三区 国产成人av在线 国产精品对白交换绿帽视频 国产视频亚洲 国产在线欧美精品 国产精品综合网 国产日韩精品欧美一区色 国产日韩精品欧美一区喷 欧美日韩在线观看区一二 国产区精品 欧美视频日韩视频 中文字幕天天躁日日躁狠狠躁97 视频一二三区 欧美高清在线精品一区二区不卡 国产精品揄拍一区二区久久 99久久综合狠狠综合久久aⅴ 亚洲乱码视频在线观看 日韩在线第二页 亚洲精品无码专区在线播放 成人亚洲网站www在线观看 欧美三级一区二区 99久久精品免费看国产高清 91麻豆国产在线观看 最新日韩欧美不卡一二三区 成人在线观看不卡 日韩国产在线 在线亚洲精品 亚洲午夜久久久久中文字幕 国产精品成人久久久久久久 精品国产一区二区在线观看 欧美精品国产一区二区三区 中文在线播放 亚洲第一页在线视频 国产午夜精品福利久久 九色国产 精品国产九九 国产永久视频 久久精品人人做人人综合试看 国产一区二区三区免费观看 亚洲精品国产电影 9999热视频 国产精品资源在线 麻豆久久婷婷国产综合五月 国产精品免费一级在线观看 亚洲国产一区二区三区青草影视 中文在线播放 国产成人综合在线 国产在线观看色 国产亚洲三级 国产片一区二区三区 久久99精品久久久久久牛牛影视 亚洲欧美日韩国产 四虎永久免费网站 国产一毛片 国产精品视频在 九九热在线精品 99精品福利视频 色婷婷色99国产综合精品 97成人精品视频在线播放 精品久久久久久中文字幕 亚洲欧美一区二区三区孕妇 亚洲欧美成人网 日韩高清在线二区 国产尤物在线观看 在线不卡一区二区 91网站在线看 韩国精品福利一区二区 欧美日韩国产成人精品 99热精品久久 国产精品免费视频一区 高清视频一区 精品九九久久 欧美日韩在线观看免费 91欧美激情一区二区三区成人 99福利视频 亚洲国产精品91 久热国产在线 精品久久久久久中文字幕女 国产精品久久久久久久久99热 成人自拍视频网 国产精品视频久久久久久 久久影院国产 国产玖玖在线观看 99精品在线免费 亚洲欧美一区二区三区导航 久久久久久久综合 国产欧美日韩精品高清二区综合区 国产精品视频自拍 亚洲一级片免费 久久久久久九九 国产欧美自拍视频 视频一区二区在线观看 欧美日韩一区二区三区久久 中文在线亚洲 伊人热人久久中文字幕 日韩欧美亚洲国产一区二区三区 欧美亚洲国产成人高清在线 欧美日韩国产码高清综合人成 国产性大片免费播放网站 亚洲午夜综合网 91精品久久一区二区三区 国产无套在线播放 国产精品视频网站 国产成人亚洲精品老王 91在线网站 国产视频97 欧美黑人欧美精品刺激 国产一区二区三区免费在线视频 久久久国产精品免费看 99re6久精品国产首页 久久精品91 国产成人一级 国产成人精品曰本亚洲 日本福利在线观看 伊人成综合网 久久综合一本 国产综合久久久久久 久久精品成人免费看 久久福利 91精品国产91久久久久久麻豆 亚洲精品成人在线 亚洲伊人久久精品 欧美日本二区 国产永久视频 国产一区二 一区二区福利 国产一毛片 亚洲精品1区 毛片一区二区三区 伊人久久大香线蕉综合影 国产欧美在线观看一区 亚洲国产欧洲综合997久久 国产一区二区免费视频 国产91精品对白露脸全集观看 久久亚洲国产伦理 欧美成人伊人久久综合网 亚洲性久久久影院 久久99国产精一区二区三区! 91精品国产欧美一区二区 欧美日韩亚洲区久久综合 日韩精品一二三区 久久久夜色精品国产噜噜 国产在线精品福利91香蕉 久久久久久久亚洲精品 97se色综合一区二区二区 91国语精品自产拍在线观看性色 91久久国产综合精品女同我 日韩中文字幕a 国产成人亚洲日本精品 久久国产精品-国产精品 久久国产经典视频 久久国产精品伦理 亚洲第一页在线视频 国产精品久久久久三级 日韩毛片网 久久免费高清视频 麻豆国产在线观看一区二区 91麻豆国产福利在线观看 国产成人精品男人的天堂538 一区二区三区中文字幕 免费在线视频一区 欧美日韩国产成人精品 国产综合网站 国产资源免费观看 亚洲精品亚洲人成在线播放 精品久久久久久中文字幕专区 亚洲人成人毛片无遮挡 国产一起色一起爱 国产香蕉精品视频在 九九热免费观看 日韩亚洲欧美一区 九九热精品在线观看 精品久久久久久中文字幕专区 亚洲欧美自拍偷拍 国产精品每日更新 久久久久国产一级毛片高清板 久久天天躁狠狠躁夜夜中文字幕 久久精品片 日韩在线毛片 国产成人精品本亚洲 国产成人精品一区二区三区 九九热在线观看 国产r级在线观看 国产欧美日韩精品高清二区综合区 韩国电影一区二区 国产精品毛片va一区二区三区 五月婷婷伊人网 久久一区二区三区免费 一本色道久久综合狠狠躁篇 亚洲综合色站 国产尤物在线观看 亚洲一区亚洲二区 免费在线视频一区 欧洲精品视频在线观看 日韩中文字幕a 中文字幕日本在线mv视频精品 91精品在线免费视频 精品国产免费人成在线观看 精品a级片 中文字幕日本在线mv视频精品 日韩在线精品视频 婷婷丁香色 91精品国产高清久久久久 国产成人精品日本亚洲直接 五月综合视频 欧美日韩在线亚洲国产人 精液呈暗黄色 亚洲乱码一区 久久精品中文字幕不卡一二区 亚洲天堂精品在线 激情婷婷综合 国产免费久久精品久久久 国产精品亚洲二区在线 久久免费播放视频 五月婷婷丁香综合 在线亚洲欧美日韩 久久免费精品高清麻豆 精品久久久久久中文字幕 亚洲一区网站 国产精品福利社 日韩中文字幕免费 亚洲综合丝袜 91精品在线播放 国产精品18 亚洲日日夜夜 伊人久久大香线蕉综合影 亚洲精品中文字幕乱码影院 亚洲一区二区黄色 亚洲第一页在线视频 一区二区在线观看视频 国产成人福利精品视频 亚洲高清二区 国内成人免费视频 精品亚洲性xxx久久久 国产精品合集一区二区三区 97av免费视频 国产一起色一起爱 国产区久久 国产资源免费观看 99精品视频免费 国产成人一级 国产精品九九免费视频 欧美91精品久久久久网免费 99热国产免费 久久精品色 98精品国产综合久久 久久精品播放 中文字幕视频免费 国产欧美日韩一区二区三区在线 精品久久蜜桃 国产小视频精品 一本色道久久综合狠狠躁篇 91在线免费观看 亚洲精品区 伊人成综合网 伊人热人久久中文字幕 伊人黄色片 99国产精品热久久久久久夜夜嗨 久久免费精品视频 亚洲一区二区三区高清不卡 久久久久国产一级毛片高清板 国产片一区二区三区 久久狠狠干 99久久婷婷国产综合精品电影 国产99区 国产精品成人久久久久 久久狠狠干 青青国产在线观看 亚洲高清国产拍精品影院 国产精品一区二区av 九九热在线免费视频 伊人久久国产 国产精品久久久久久久久久一区 在线观看免费视频一区 国产精品自在在线午夜区app 国产精品综合色区在线观看 国产毛片久久久久久国产毛片 97国产免费全部免费观看 国产精品每日更新 国产尤物视频在线 九九视频这里只有精品99 一本一道久久a久久精品综合 久久综合给会久久狠狠狠 国产成人精品男人的天堂538 欧美一区二区高清 毛片一区二区三区 国产欧美日韩在线观看一区二区三区 在线国产二区 欧美不卡网 91在线精品中文字幕 在线国产福利 国内精品91久久久久 91亚洲福利 日韩欧美国产中文字幕 91久久精品国产性色也91久久 亚洲性久久久影院 欧美精品1区 国产热re99久久6国产精品 九九热免费观看 国产精品欧美日韩 久久久久国产一级毛片高清板 久久国产经典视频 日韩欧美亚洲国产一区二区三区 欧美亚洲综合另类在线观看 国产精品自在在线午夜区app 97中文字幕在线观看 视频一二三区 精品国产一区在线观看 国产欧美日韩在线一区二区不卡 欧美一区二三区 伊人成人在线观看 国内精品91久久久久 97在线亚洲 国产在线不卡一区 久久久全免费全集一级全黄片 国产精品v欧美精品∨日韩 亚洲毛片网站 在线不卡一区二区 99re热在线视频 久久激情网 国产毛片一区二区三区精品 久久亚洲综合色 中文字幕视频免费 国产视频亚洲 婷婷伊人久久 国产一区二区免费播放 久久99国产精品成人欧美 99国产在线视频 国产成人免费视频精品一区二区 国产不卡一区二区三区免费视 国产码欧美日韩高清综合一区 久久精品国产主播一区二区 国产一区电影 久久精品国产夜色 国产精品国产三级国产 日韩一区二区三区在线 久久97久久97精品免视看 久久国产免费一区二区三区 伊人久久大香线蕉综合电影网 99re6久精品国产首页 久久激情网 亚洲成人高清在线 国产精品网址 国产成人精品男人的天堂538 香蕉国产综合久久猫咪 国产专区中文字幕 91麻豆精品国产高清在线 久久国产经典视频 国产精品成人va在线观看 国产精品爱啪在线线免费观看 日本精品久久久久久久久免费 亚洲综合一区二区三区 久久五月网 精品国产网红福利在线观看 久久综合亚洲伊人色 亚洲国产精品久久久久久网站 在线日韩国产 99国产精品热久久久久久夜夜嗨 国产综合精品在线 国产区福利 精品亚洲综合久久中文字幕 国产制服丝袜在线 毛片在线播放网站 在线观看免费视频一区 国产精品久久久精品三级 亚洲国产电影在线观看 最新日韩欧美不卡一二三区 狠狠综合久久综合鬼色 日本精品1在线区 国产日韩一区二区三区在线播放 欧美日韩精品在线播放 亚洲欧美日韩国产一区二区三区精品 久久综合久久网 婷婷六月激情在线综合激情 亚洲乱码一区 国产专区91 97av视频在线观看 精品久久久久久中文字幕 久久五月视频 国产成人福利精品视频 国产精品网址 中文字幕视频在线 精品一区二区三区免费视频 伊人手机在线视频 亚洲精品中文字幕乱码 国产在线视频www色 色噜噜国产精品视频一区二区 精品亚洲成a人在线观看 国产香蕉尹人综合在线 成人免费一区二区三区在线观看 国产不卡一区二区三区免费视 欧美精品久久天天躁 国产专区中文字幕 久久精品国产免费中文 久久精品国产免费一区 久久无码精品一区二区三区 国产欧美另类久久久精品免费 欧美精品久久天天躁 亚洲精品在线视频 国产视频91在线 91精品福利一区二区三区野战 日韩中文字幕免费 国产精品99一区二区三区 欧美成人高清性色生活 国产精品系列在线观看 亚洲国产福利精品一区二区 国产成人在线小视频 国产精品久久久久免费 99re热在线视频 久久久久久久综合 一区二区国产在线播放 成人国产在线视频 亚洲精品乱码久久久久 欧美日韩一区二区综合 精品久久久久免费极品大片 中文字幕视频二区 激情粉嫩精品国产尤物 国产成人精品一区二区视频 久久精品中文字幕首页 亚洲高清在线 国产精品亚洲一区二区三区 伊人久久艹 中文在线亚洲 国产精品一区二区在线播放 国产精品九九免费视频 亚洲二区在线播放 亚洲狠狠婷婷综合久久久久网站 亚洲欧美日韩网站 日韩成人精品 亚洲国产一区二区三区青草影视 91精品国产福利在线观看 国产精品久久久久久久久99热 国产一区二区精品尤物 久碰香蕉精品视频在线观看 亚洲日日夜夜 在线不卡一区二区 国产午夜亚洲精品 九九热在线视频观看这里只有精品 伊人手机在线视频 91免费国产精品 日韩欧美中字 91精品国产91久久久久 国产全黄三级播放 视频一区二区三区免费观看 国产开裆丝袜高跟在线观看 国产成人欧美 激情综合丝袜美女一区二区 国产成人亚洲综合无 欧美精品一区二区三区免费观看 欧美亚洲国产日韩 日韩亚州 国产欧美日韩精品高清二区综合区 亚洲午夜国产片在线观看 精品久久久久久中文字幕 欧美精品1区 久久伊人久久亚洲综合 亚洲欧美日韩精品 国产成人精品久久亚洲高清不卡 久久福利影视 国产精品99精品久久免费 久久久久免费精品视频 国产日产亚洲精品 亚洲国产午夜电影在线入口 精品无码一区在线观看 午夜国产精品视频 亚洲一级片免费 伊人久久大香线蕉综合影 国产精品久久影院 久碰香蕉精品视频在线观看 www.欧美精品 在线小视频国产 亚洲国产天堂久久综合图区 欧美一区二区三区不卡 日韩美女福利视频 九九精品免视频国产成人 不卡国产00高中生在线视频 亚洲第一页在线视频 欧美日韩在线播放成人 99re视频这里只有精品 国产精品91在线 精品乱码一区二区三区在线 国产区久久 91麻豆精品国产自产在线观看一区 日韩精品成人在线 九九热在线观看 国产精品久久不卡日韩美女 欧美一区二区三区综合色视频 欧美精品免费一区欧美久久优播 国产精品网址 国产专区中文字幕 国产精品欧美亚洲韩国日本久久 日韩美香港a一级毛片 久久精品123 欧美一区二区三区免费看 99r在线视频 亚洲精品国产字幕久久vr 国产综合激情在线亚洲第一页 91免费国产精品 日韩免费小视频 亚洲国产精品综合一区在线 国产亚洲第一伦理第一区 在线亚洲精品 国产精品一区二区制服丝袜 国产在线成人精品 九九精品免视频国产成人 亚洲国产网 欧美日韩亚洲一区二区三区在线观看 在线亚洲精品 欧美一区二区三区高清视频 国产成人精品男人的天堂538 欧美日韩在线观看区一二 亚洲欧美一区二区久久 久久精品中文字幕首页 日本高清www午夜视频 久久精品国产免费 久久999精品 亚洲国产精品欧美综合 88国产精品视频一区二区三区 91久久偷偷做嫩草影院免费看 国产精品夜色视频一区二区 欧美日韩导航 国产成人啪精品午夜在线播放 一区二区视频在线免费观看 99久久精品国产自免费 精液呈暗黄色 久久99国产精品 日本精品久久久久久久久免费 精品国产97在线观看 99re视频这里只有精品 国产视频91在线 999av视频 亚洲美女视频一区二区三区 久久97久久97精品免视看 亚洲国产成人久久三区 99久久亚洲国产高清观看 日韩毛片在线视频 综合激情在线 91福利一区二区在线观看 一区二区视频在线免费观看 激情粉嫩精品国产尤物 国产成人精品曰本亚洲78 国产成人精品本亚洲 国产精品成人免费视频 国产成人啪精品视频免费软件 久久精品国产亚洲妲己影院 国产精品成人久久久久久久 久久大香线蕉综合爱 欧美一区二区三区高清视频 99热国产免费 在线观看欧美国产 91精品视频在线播放 国产精品福利社 欧美精品一区二区三区免费观看 国产一区二区免费视频 国产午夜精品一区二区 精品视频在线观看97 91精品福利久久久 国产一区福利 国产综合激情在线亚洲第一页 国产精品久久久久久久久久久不卡 九色国产 在线日韩国产 黄网在线观看 亚洲一区小说区中文字幕 中文字幕丝袜 日本二区在线观看 日本国产一区在线观看 欧美日韩一区二区三区久久 欧美精品亚洲精品日韩专 国产日产亚洲精品 久久综合九色综合欧美播 亚洲国产欧美无圣光一区 欧美视频区 亚洲乱码视频在线观看 久久无码精品一区二区三区 九九热精品免费视频 久久99精品久久久久久牛牛影视 国产精品成久久久久三级 国产一区福利 午夜国产精品视频 日本二区在线观看 99久久网站 国产亚洲天堂 精品国产一区二区三区不卡 亚洲国产日韩在线一区 国产成人综合在线观看网站 久久免费高清视频 欧美在线导航 午夜精品久久久久久99热7777 欧美久久综合网 国产小视频精品 国产尤物在线观看 亚洲国产精品综合一区在线 欧美一区二区三区不卡视频 欧美黑人欧美精品刺激 日本福利在线观看 久久国产偷 国产手机精品一区二区 国产热re99久久6国产精品 国产高清啪啪 欧美亚洲国产成人高清在线 国产在线第三页 亚洲综合一区二区三区 99r在线视频 99精品久久久久久久婷婷 国产精品乱码免费一区二区 国产在线精品福利91香蕉 国产尤物视频在线 五月婷婷亚洲 中文字幕久久综合伊人 亚洲精品一级毛片 99国产精品电影 在线视频第一页 久久99国产精品成人欧美 国产白白视频在线观看2 成人精品一区二区www 亚洲成人网在线观看 麻豆91在线视频 色综合合久久天天综合绕视看 久久精品国产免费高清 国产不卡一区二区三区免费视 欧美国产中文 99精品欧美 九九在线精品 国产中文字幕在线免费观看 国产一区中文字幕在线观看 国产成人一级 国产精品一区二区制服丝袜 国产一起色一起爱 亚洲精品成人在线 亚洲欧美精品在线 国产欧美自拍视频 99精品久久久久久久婷婷 久99视频 国产热re99久久6国产精品 视频一区亚洲 国产精品视频分类 国产精品成在线观看 99re6久精品国产首页 亚洲在成人网在线看 亚洲国产日韩在线一区 久久国产三级 日韩国产欧美 欧美在线一区二区三区 国产精品美女一级在线观看 成人午夜免费福利视频 亚洲天堂精品在线 91精品国产手机 欧美日韩视频在线播放 狠狠综合久久综合鬼色 九一色视频 青青视频国产 亚洲欧美自拍一区 中文字幕天天躁日日躁狠狠躁97 日韩免费大片 996热视频 伊人成综合网 亚洲天堂欧美 日韩精品亚洲人成在线观看 久久综合给会久久狠狠狠 日韩精品亚洲人成在线观看 日韩国产欧美 亚洲成aⅴ人片在线影院八 亚洲精品1区 99久久精品免费 国产精品高清在线观看 国产精品久久久免费视频 在线亚洲欧美日韩 91在线看视频 国产精品96久久久久久久 欧美日韩国产成人精品 91在线亚洲 热久久亚洲 国产精品美女免费视频观看 日韩在线毛片 亚洲永久免费视频 九九免费在线视频 亚洲一区网站 日本高清二区视频久二区 精品国产美女福利在线 伊人久久艹 国产精品久久久久三级 欧美成人精品第一区二区三区 99久久精品国产自免费 在线观看日韩一区 国产中文字幕一区 成人免费午夜视频 欧美日韩另类在线 久久99国产精品成人欧美 色婷婷中文网 久久天天躁夜夜躁狠狠躁2020 欧美成人伊人久久综合网 国产精品福利资源在线 国产伦精品一区二区三区高清 国产精品亚洲综合色区韩国 亚洲一区欧美日韩 色综合视频 国语自产精品视频在线区 国产高清a 成人国内精品久久久久影 国产在线精品香蕉综合网一区 国产不卡在线看 国产成人精品精品欧美 国产欧美日韩综合精品一区二区三区 韩国电影一区二区 国产在线视频www色 91中文字幕在线一区 国产人成午夜免视频网站 亚洲综合一区二区三区 色综合视频一区二区观看 久久五月网 九九热精品在线观看 国产一区二区三区国产精品 99久热re在线精品996热视频 亚洲国产网 在线视频亚洲一区 日韩字幕一中文在线综合 国产高清一级毛片在线不卡 精品国产色在线 国产高清视频一区二区 精品日本久久久久久久久久 亚洲国产午夜精品乱码 成人免费国产gav视频在线 日韩欧美一区二区在线观看 欧美曰批人成在线观看 韩国电影一区二区 99re这里只有精品6 日韩精品一区二区三区视频 99re6久精品国产首页 亚洲欧美一区二区三区导航 欧美色图一区二区三区 午夜精品视频在线观看 欧美激情在线观看一区二区三区 亚洲热在线 成人国产精品一区二区网站 亚洲一级毛片在线播放 亚洲一区小说区中文字幕 亚洲午夜久久久久影院 国产自产v一区二区三区c 国产精品视频免费 久久调教视频 国产成人91激情在线播放 国产精品欧美亚洲韩国日本久久 久久亚洲日本不卡一区二区 91中文字幕网 成人国产在线视频 国产视频91在线 欧美成人精品第一区二区三区 国产精品福利在线 久久综合九色综合精品 欧美一区二区三区精品 久久国产综合尤物免费观看 久久99青青久久99久久 日韩精品免费 久久国产精品999 91亚洲视频在线观看 国产精品igao视频 色综合区 在线亚洲欧国产精品专区 国产一区二区三区在线观看视频 亚洲精品成人在线 一区二区国产在线播放 中文在线亚洲 亚洲精品第一国产综合野 国产一区二区精品久久 一区二区三区四区精品视频 99热精品久久 中文字幕视频二区 国产成人精品男人的天堂538 99精品影视 美女福利视频一区二区 久久午夜夜伦伦鲁鲁片 综合久久久久久久综合网 国产精品国产欧美综合一区 国产99视频在线观看 国产亚洲女在线精品 婷婷影院在线综合免费视频 国产亚洲3p一区二区三区 91成人爽a毛片一区二区 亚洲一区二区高清 国产欧美亚洲精品第二区首页 欧美日韩导航 亚洲高清二区 欧美激情观看一区二区久久 日韩毛片在线播放 亚洲欧美日韩高清中文在线 亚洲日本在线播放 国产精品一区二区制服丝袜 精品国产一区二区三区不卡 国产不卡在线看 国产欧美网站 四虎永久在线观看视频精品 国产黄色片在线观看 夜夜综合 一本色道久久综合狠狠躁篇 欧美亚洲综合另类在线观看 国产91在线看 伊人久久国产 欧美一区二区在线观看免费网站 国产精品久久久久三级 久久福利 日韩中文字幕a 亚洲午夜久久久久影院 91在线高清视频 国产亚洲一区二区三区啪 久久人精品 国产精品亚洲午夜一区二区三区 综合久久久久久 久久伊人一区二区三区四区 国产综合久久久久久 日韩一区精品视频在线看 国产精品日韩欧美制服 日本精品1在线区 99re视频 无码av免费一区二区三区试看 国产视频1区 日韩欧美中文字幕一区 日本高清中文字幕一区二区三区a 亚洲国产欧美无圣光一区 国产在线视频一区二区三区 欧美国产第一页 在线亚洲欧美日韩 日韩中文字幕第一页 在线不卡一区二区 伊人久久青青 国产精品一区二区在线播放 www.五月婷婷 麻豆久久婷婷国产综合五月 亚洲精品区 久久国产欧美另类久久久 99在线视频免费 伊人久久中文字幕久久cm 久久精品成人免费看 久久这里只有精品首页 88国产精品视频一区二区三区 中文字幕日本在线mv视频精品 国产在线精品成人一区二区三区 伊人精品线视天天综合 亚洲一区二区黄色 国产尤物视频在线 亚洲精品99久久久久中文字幕 国产一区二区三区免费观看 伊人久久大香线蕉综合电影网 国产成人精品区在线观看 日本精品一区二区三区视频 日韩高清在线二区 久久免费播放视频 一区二区成人国产精品 国产精品免费精品自在线观看 亚洲精品视频二区 麻豆国产精品有码在线观看 精品日本一区二区 亚洲欧洲久久 久久中文字幕综合婷婷 中文字幕视频在线 国产成人精品综合在线观看 91精品国产91久久久久福利 精液呈暗黄色 香蕉国产综合久久猫咪 国产专区精品 亚洲精品无码不卡 国产永久视频 亚洲成a人片在线播放观看国产 一区二区国产在线播放 亚洲一区二区黄色 欧美日韩在线观看视频 亚洲精品另类 久久国产综合尤物免费观看 国产一区二区三区国产精品 高清视频一区 国产精品igao视频 国产精品资源在线 久久综合精品国产一区二区三区 www.五月婷婷 精品色综合 99热国产免费 麻豆福利影院 亚洲伊人久久大香线蕉苏妲己 久久电影院久久国产 久久精品伊人 在线日韩理论午夜中文电影 亚洲国产欧洲综合997久久 伊人国产精品 久草国产精品 欧美一区精品二区三区 亚洲成人高清在线 91免费国产精品 日韩精品福利在线 国产一线在线观看 国产不卡在线看 久久99青青久久99久久 亚洲精品亚洲人成在线播放 99久久免费看国产精品 国产日本在线观看 青草国产在线视频 麻豆久久婷婷国产综合五月 国产中文字幕一区 91久久精品国产性色也91久久 国产一区a 国产欧美日韩成人 国产亚洲女在线精品 一区二区美女 中文字幕在线2021一区 在线小视频国产 久久这里只有精品首页 国产在线第三页 欧美日韩中文字幕 在线亚洲+欧美+日本专区 精品国产一区二区三区不卡 久久这里精品 欧美在线va在线播放 精液呈暗黄色 91精品国产手机 91在线免费播放 欧美视频亚洲色图 欧美国产日韩精品 日韩高清不卡在线 精品视频免费观看 欧美日韩一区二区三区四区 国产欧美亚洲精品第二区首页 亚洲韩精品欧美一区二区三区 国产精品视频免费 在线精品小视频 久久午夜夜伦伦鲁鲁片 国产无套在线播放 久热这里只精品99re8久 欧美久久久久 久久香蕉国产线看观看精品蕉 国产成人精品男人的天堂538 亚洲人成网站色7799在线观看 日韩在线第二页 一本色道久久综合狠狠躁篇 国产一区二区三区不卡在线观看 亚洲乱码在线 在线观看欧美国产 久久福利青草精品资源站免费 国产玖玖在线观看 在线亚洲精品 亚洲成aⅴ人在线观看 精品91在线 欧美一区二三区 日韩中文字幕视频在线 日本成人一区二区 日韩免费专区 国内精品在线观看视频 久久国产综合尤物免费观看 国产精品系列在线观看 一本一道久久a久久精品综合 亚洲免费播放 久久精品国产免费 久久人精品 亚洲毛片网站 亚洲成a人一区二区三区 韩国福利一区二区三区高清视频 亚洲精品天堂在线 一区二区三区中文字幕 亚洲国产色婷婷精品综合在线观看 亚洲国产成人久久笫一页 999国产视频 国产精品香港三级在线电影 欧美日韩一区二区三区四区 日韩国产欧美 国产精品99一区二区三区 午夜国产精品理论片久久影院 亚洲精品中文字幕麻豆 亚洲国产高清视频 久久免费手机视频 日韩a在线观看 五月婷婷亚洲 亚洲精品中文字幕麻豆 中文字幕丝袜 www国产精品 亚洲天堂精品在线 亚洲乱码一区 国产日韩欧美三级 久久999精品 伊人热人久久中文字幕 久热国产在线视频 国产欧美日韩在线观看一区二区三区 国产一二三区在线 日韩国产欧美 91精品国产91久久久久 亚洲一区小说区中文字幕 精品一区二区免费视频 国产精品视频免费 国产精品亚洲综合色区韩国 亚洲国产精品成人午夜在线观看 欧美国产日韩精品 中文字幕精品一区二区精品