Вопрос

Тема в разделе "WASM.BEGINNERS", создана пользователем retro, 5 июл 2011.

  1. retro

    retro New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2011
    Сообщения:
    20
    Файл ресурсов rsrc.res во FASM работает а в masm32 НЕТ. Кто сможет помогите пожалуйста!
     
  2. retro

    retro New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2011
    Сообщения:
    20
    Окошко не рисуется.
     
  3. retro

    retro New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2011
    Сообщения:
    20
    Извините что создал тему. Не со зла ,а по незнанию!!
     
  4. retro

    retro New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2011
    Сообщения:
    20
    Помогите присоединить файлик
    Код (Text):
    1. .386
    2. .model flat,stdcall
    3. option casemap :none
    4. ReadFileFromDisk proto  :dword
    5. Base64Conv  proto
    6. ;--------------------------------------------------
    7. include \masm32\include\kernel32.inc
    8. include \masm32\include\windows.inc
    9. include \masm32\include\masm32.inc
    10. include \masm32\include\user32.inc
    11. include \masm32\include\wsock32.inc
    12.  
    13. includelib \masm32\Lib\masm32.lib
    14. includelib \masm32\Lib\user32.lib
    15. includelib \masm32\Lib\kernel32.lib
    16. includelib \masm32\Lib\wsock32.lib
    17. ;--------------------------------------------------
    18.  
    19. CrLf        equ 0dh,0ah
    20. lpRecvBufLen    equ 200h
    21. .data
    22. Base64Date      db 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',0
    23. lszAttach        db "D:\smtpMy\my.txt",0
    24. ;---------------- Mail Header ---------------------
    25. Header      db  'From: <retro83@list.ru>',CrLf                      ;|от кого
    26.         db  'X-Mailer: The Bat! (v2.12.00) Business',CrLf      ;|косим под TheBat!:)
    27.         db  'Reply-To: <retro83@list.ru>',CrLf                  ;|от кого
    28.         db  'X-Priority: 3 (Normal)',CrLf
    29.         db  'To: <retro5555@ukr.net>',CrLf                        ;|кому
    30.         db  'Subject: Test tema',CrLf                          ;|тема письма
    31.         db  'MIME-Version: 1.0',CrLf
    32.     db   'Content-Type: multipart/mixed; boundary="----A4D921C2D10D7DB"',CrLf,CrLf,0
    33.  
    34.  
    35. ;------------------ E-Mail Text --------------------
    36. Message     db  '----A4D921C2D10D7DB',CrLf
    37.                              db 'Content-Type: text/plain; charset=windows-1251',CrLf
    38.                             db  'Content-Transfer-Encoding: 8bit',CrLf
    39.                             db  'soobsenie',CrLf,0
    40. ;---------------------------------------------------------------------------
    41. msg_my  db    'soobsenie',CrLf,0
    42. ;========================================================
    43.  
    44. ;============= Mail Data ==============
    45. Server      db  'smtp.mail.ru',0                     ;|сервер
    46. MailFrom    db  'MAIL FROM: <retro83@list.ru>',CrLf,0 ;|от кого
    47. MailTo      db  'RCPT TO: <retro5555@ukr.net>',CrLf,0   ;|кому
    48. ;---------- Login/Pass (Base64 Encode) -------------
    49. Login       db  'cmV0cm84M0BsaXN0LnJ1',CrLf,0                   ; base64 -- retro83@list.ru    
    50. Pass        db  'cXFxcXFxMQ==',CrLf,0                                  ;base -- qqqqqq1
    51. ;---------------------------------------------------
    52.  
    53. ;---------------------------------------------------
    54. SecondPartTemplate  db '----ct757',0Dh,0Ah    
    55.                 db 'Content-Type: application/octet-stream;name="my.txt"',0Dh,0Ah
    56.                 db 'Content-Disposition: attachment;filename="my.txt"',0Dh,0Ah
    57.                 db 'Content-Transfer-Encoding: base64',0Dh,0Ah
    58.  
    59. ;------------- MailServer's commands ---------------
    60. HELO    db 'EHLO %s',CrLf,0
    61. AUTH    db 'AUTH LOGIN',CrLf,0
    62. DATA    db 'DATA',CrLf,0
    63. ENDD    db CrLf,'.',CrLf,0
    64. QUIT    db 'QUIT',CrLf,0
    65. ;---------------------------------------------------
    66. ;---------------------------------------------------
    67. .data?
    68. wsadata     WSADATA     <>
    69. sin     sockaddr_in <0>
    70. hSock       dd      ?
    71. lpBuf1      db      ?
    72. Helo_Buf    db      ?
    73. buf     db      ?
    74.   ldFileSiz dd ?
    75.   lpFileData dd ?
    76.   lpBase64Out dd ?
    77.    pMessage dd ?
    78.     ldFullSiz dd ?
    79. ;---------------------------------------------------
    80. .code
    81.  
    82. ReadFileFromDisk    proc uses edi esi ebx pFileName:dword
    83.  
    84.     LOCAL hFile:dword
    85.     LOCAL resRead:dword
    86.     LOCAL fileSiz:dword
    87.     LOCAL pBuffer:dword
    88.  
    89.     invoke CreateFile, pFileName, 80000000h, FILE_SHARE_READ, 0, 3, 80h, 0     
    90.         mov    hFile, eax
    91.     .if eax != -1      
    92.        invoke GetFileSize, hFile, 0
    93.        mov    fileSiz, eax
    94.        invoke VirtualAlloc, 0, fileSiz, 1000h, 40h  
    95.        mov    pBuffer, eax
    96.        invoke SetFilePointer, hFile, 0, 0, 0
    97.        .if eax != -1       
    98.               invoke ReadFile, hFile, pBuffer, fileSiz, addr resRead, 0
    99.           .if eax != 0
    100.                 mov  ecx, resRead              
    101.                 .if ecx == fileSiz
    102.                invoke CloseHandle, hFile   
    103.                    mov    eax, pBuffer
    104.                mov    ecx, fileSiz
    105.                    ret
    106.                 .endif  
    107.               .endif
    108.        .endif
    109.     .endif     
    110.         invoke CloseHandle, hFile  
    111.         mov    eax, -1
    112.         ret
    113.  
    114. ReadFileFromDisk    endp
    115. ;===============================================================================
    116. Recv_DataLF proc uses edi
    117.         lea     edi,lpBuf1
    118.         mov     ecx,lpRecvBufLen
    119. @loop:
    120.         jecxz   @err ; Check for buffer overlow
    121.  
    122.         push    ecx
    123.         invoke  recv,hSock,edi,ecx,0
    124.         pop     ecx
    125.  
    126.         ; Error occured
    127.         cmp     eax,SOCKET_ERROR
    128.         je      @err
    129.  
    130.         add     edi,eax ; Move the poiter
    131.         sub     ecx,eax ; Decrease remaining buffer size
    132.  
    133.  
    134.         ; Fix edi-1 problems when connection was closed from the first
    135.         ; call of recv procedure (eg. wasn't received any data)
    136.         cmp     ecx,lpRecvBufLen
    137.         jz      @test
    138.  
    139.         ; Note: recv always receives at least 1 byte if no error occures
    140.         ; or connection hasn't been dropped
    141.         cmp     byte ptr[edi-1],10
    142.         je      @ok
    143.  
    144. @test:
    145.         ; If connection was closed do not try to receive more data
    146.         test    eax,eax        
    147.         jz      @err
    148.  
    149.         jmp     @loop
    150. @err:
    151.         xor     eax,eax
    152.         jmp     @end
    153. @ok:    
    154.         ; Check the received status
    155.         cmp     byte ptr [lpBuf1],'2'; 2** - OK
    156.         jz      @F
    157.     cmp dword ptr [lpBuf1],' 433' ; 334 - Enter Login/Pass
    158.     jz  @F
    159.         cmp     dword ptr [lpBuf1],' 453' ; Accept 354: Start mail input;
    160.         jnz     @err
    161. @@:
    162.         inc     eax ; Result = True
    163.         inc     edi
    164.         mov     byte ptr[edi],0 ; Write the null terminator
    165. @end:
    166.  
    167.         ret        
    168. Recv_DataLF endp
    169. ;===============================================================================
    170. ;===============================================================================
    171. Send_String proc lpStr: DWORD
    172.         ; Get length of the buffer to send to
    173.         invoke  lstrlen, lpStr
    174.         ; In blocking sockets send() blocks until all data hasn't been sent
    175.         ; or error happened (in this case SOCKET_ERROR is returned)
    176.         invoke  send, hSock, lpStr, eax, 0
    177.         ret
    178. Send_String endp
    179. ;===============================================================================
    180.  
    181. start:
    182.  invoke ReadFileFromDisk, addr lszAttach
    183.             mov    lpFileData, eax
    184.            mov    ldFileSiz, ecx
    185.            mov    eax, ldFileSiz
    186.            mov    ecx, 2
    187.            mul    ecx
    188.            invoke VirtualAlloc, 0, eax, 1000h, 40h
    189.            mov    lpBase64Out, eax
    190.            push   lpFileData
    191.            push   ldFileSiz
    192.            push   lpBase64Out
    193.            call   Base64Conv
    194.      ;      invoke lstrlen, lpBase64Out
    195.      ;                           add    ldFullSiz, eax
    196.    ;        add    ldFullSiz, 200
    197.     ;       invoke VirtualAlloc, 0, ldFullSiz, 1000h, 40h
    198.      ;      mov    pMessage, eax
    199.         ;  
    200.        ;               invoke lstrcat, pMessage, addr SecondPartTemplate
    201.        ;    invoke lstrcat, pMessage, lpBase64Out
    202.  
    203.  
    204. invoke  WSAStartup,0101h,addr wsadata
    205. test    eax,eax
    206. jnz @end
    207.  
    208. invoke  socket,AF_INET, SOCK_STREAM, IPPROTO_TCP
    209. cmp     eax, INVALID_SOCKET
    210. je  @end
    211. mov hSock,eax
    212.  
    213. mov sin.sin_family,AF_INET
    214. invoke  htons,25
    215. mov sin.sin_port,ax
    216.  
    217. invoke  gethostbyname,offset Server
    218. mov eax,dword ptr [eax + 12]
    219. mov eax,dword ptr [eax]
    220. mov eax,dword ptr [eax]
    221. mov sin.sin_addr,eax
    222.  
    223. ; соединяемся с сервером
    224. invoke  connect,hSock,addr sin,sizeof sin
    225. test    eax,eax
    226. jnz @cleanup
    227.  
    228. ;получаем приветствие
    229. invoke  Recv_DataLF
    230. test    eax,eax
    231. jz      @cleanup
    232.  
    233. ;формируем свое
    234. invoke  gethostname, addr buf,261
    235. invoke  gethostbyname, addr buf
    236. mov eax,[eax + 12]
    237. mov eax,[eax]
    238. mov eax,[eax]
    239. invoke  inet_ntoa,eax
    240. invoke wsprintf,offset Helo_Buf,offset HELO,eax
    241.  
    242. ;посылаем свое приветствие
    243. invoke  Send_String,addr Helo_Buf
    244. inc eax
    245. jz  @cleanup
    246.  
    247. ;получаем ответ
    248. invoke  Recv_DataLF
    249. test    eax,eax
    250. jz      @cleanup
    251.  
    252. ;посылаем строку аутентификации
    253. invoke  Send_String,offset AUTH
    254. inc eax
    255. jz  @cleanup
    256.  
    257. ;получаем ответ
    258. invoke  Recv_DataLF
    259. test    eax,eax
    260. jz      @cleanup
    261.  
    262. ;посылаем логин
    263. invoke  Send_String,offset Login
    264. inc eax
    265. jz  @cleanup
    266.  
    267. ;получаем ответ
    268. invoke  Recv_DataLF
    269. test    eax,eax
    270. jz      @cleanup
    271.  
    272. ;посылаем пасс
    273. invoke  Send_String,offset Pass
    274. inc eax
    275. jz  @cleanup
    276.  
    277. ;получаем ответ
    278. invoke  Recv_DataLF
    279. test    eax,eax
    280. jz      @cleanup
    281.  
    282. ;MAIL FROM
    283. invoke  Send_String,offset MailFrom
    284. inc eax
    285. jz  @cleanup
    286.  
    287. ;получаем ответ
    288. invoke  Recv_DataLF
    289. test    eax,eax
    290. jz      @cleanup
    291.  
    292. ;RCPT TO
    293. invoke  Send_String,offset MailTo
    294. inc eax
    295. jz  @cleanup
    296.  
    297. ;получаем ответ
    298. invoke  Recv_DataLF
    299. test    eax,eax
    300. jz      @cleanup
    301.  
    302. ;DATA
    303. invoke  Send_String,offset DATA
    304. inc eax
    305. jz  @cleanup
    306.  
    307. ;получаем ответ
    308. invoke  Recv_DataLF
    309. test    eax,eax
    310. jz      @cleanup
    311.  
    312. ;========= посылаем Header ==========
    313. invoke  Send_String,offset Header
    314. inc eax
    315. jz  @cleanup
    316.  
    317. ;посылаем тело письма
    318. invoke  Send_String,offset Message
    319. inc eax
    320. jz  @cleanup
    321.  
    322. invoke  Send_String,offset msg_my
    323. inc eax
    324. jz  @cleanup
    325.  
    326. ;--------------------------------
    327. invoke  Send_String,offset ENDD
    328. inc eax
    329. jz  @cleanup
    330.  
    331. ;получаем ответ
    332. invoke  Recv_DataLF
    333. test    eax,eax
    334. jz      @cleanup
    335.  
    336. ; завершаем работу с сервером
    337. invoke  Send_String,offset QUIT
    338.  
    339. @cleanup:
    340. invoke  closesocket,hSock
    341. invoke VirtualFree, lpBase64Out, 0, 8000h
    342. @end:
    343. invoke  ExitProcess,0
    344. ret
    345.  
    346. Base64Conv      proc near          
    347.  
    348. var_14          = dword ptr -14h
    349. var_10          = dword ptr -10h
    350. var_A           = byte ptr -0Ah
    351. var_9           = byte ptr -9
    352. var_8           = dword ptr -8
    353. var_4           = dword ptr -4
    354. arg_0           = dword ptr  8
    355. arg_4           = dword ptr  0Ch
    356. arg_8           = dword ptr  10h
    357.  
    358.                 push    ebp
    359.                 mov     ebp, esp
    360.                 add     esp, 0FFFFFFECh
    361.                 push    edi
    362.                 push    esi
    363.                 push    ebx          
    364.                 xor     eax, eax
    365.                 mov     [ebp+var_4], eax
    366.                 mov     [ebp+var_8], eax
    367.                 mov     [ebp+var_9], al
    368.                 mov     [ebp+var_A], al
    369.                 mov     [ebp+var_10], eax
    370.                 mov     [ebp+var_14], eax                
    371.                 mov     esi, [ebp+arg_0]
    372.                 mov     edi, esi
    373.                 jmp     loc_40279E
    374. loc_40269A:                          
    375.                 mov     eax, [ebp+arg_4]
    376.                 sub     eax, [ebp+var_4]
    377.                 cmp     eax, 39h
    378.                 jbe     short loc_4026AA
    379.                 mov     eax, 39h
    380. loc_4026AA:                          
    381.                 mov     [ebp+var_10], eax
    382.                 or      eax, eax
    383.                 jnz     short loc_4026B6
    384.                 jmp     loc_4027A6
    385. loc_4026B6:                          
    386.                 mov     ecx, [ebp+arg_8]
    387.                 add     ecx, [ebp+var_4]
    388.                 mov     [ebp+var_14], ecx
    389.                 test    edi, edi
    390.                 jbe     loc_40278E
    391.                 mov     eax, 1
    392. loc_4026CC:                          
    393.                 mov     bl, [eax+ecx-1]
    394.                 and     [ebp+var_A], 0
    395.                 cmp     eax, edi
    396.                 jnb     short loc_4026DE
    397.                 mov     dl, [eax+ecx]
    398.                 mov     [ebp+var_A], dl
    399. loc_4026DE:                          
    400.                 lea     edx, [eax+1]
    401.                 and     [ebp+var_9], 0
    402.                 cmp     edx, edi
    403.                 jnb     short loc_4026F0
    404.                 mov     cl, [eax+ecx+1]
    405.                 mov     [ebp+var_9], cl
    406. loc_4026F0:                          
    407.                 movzx   ecx, bl
    408.                 mov     ebx, [ebp+var_8]
    409.                 mov     edx, ecx
    410.                 and     ecx, 3
    411.                 shr     edx, 2
    412.                 shl     ecx, 4
    413.                 mov     dl, byte ptr Base64Date[edx]
    414.                 mov     [ebx+esi], dl
    415.                 movzx   edx, [ebp+var_A]
    416.                 inc     [ebp+var_8]
    417.                 mov     edi, [ebp+var_8]
    418.                 mov     ebx, edx
    419.                 shr     ebx, 4
    420.                 or      ecx, ebx
    421.                 mov     cl, byte ptr Base64Date[ecx]
    422.                 mov     [esi+edi], cl
    423.                 mov     edi, [ebp+var_10]
    424.                 inc     [ebp+var_8]
    425.                 mov     ecx, [ebp+var_8]
    426.                 mov     bl, [ebp+var_9]
    427.                 cmp     eax, edi
    428.                 jnb     short loc_402758
    429.                 and     edx, 0Fh
    430.                 movzx   edi, bl
    431.                 shr     edi, 6
    432.                 shl     edx, 2
    433.                 or      edi, edx
    434.                 mov     dl, byte ptr Base64Date[edi]
    435.                 mov     edi, esi
    436.                 mov     [edi+ecx], dl
    437.                 inc     [ebp+var_8]
    438.                 mov     ecx, [ebp+var_8]
    439.                 mov     edi, [ebp+var_10]
    440.                 jmp     short loc_402762
    441. loc_402758:                            
    442.                 mov     byte ptr [esi+ecx], 3Dh
    443.                 inc     [ebp+var_8]
    444.                 mov     ecx, [ebp+var_8]
    445. loc_402762:                          
    446.                 mov     byte ptr [esi+ecx], 3Dh
    447.                 lea     edx, [eax+1]
    448.                 cmp     edx, edi
    449.                 jnb     short loc_402779
    450.                 and     ebx, 3Fh
    451.                 mov     bl, byte ptr Base64Date[ebx]
    452.                 mov     [esi+ecx], bl
    453. loc_402779:                            
    454.                 inc     [ebp+var_8]
    455.                 add     eax, 3
    456.                 lea     ecx, [eax-1]
    457.                 cmp     ecx, edi
    458.                 jnb     short loc_40278E
    459.                 mov     ecx, [ebp+var_14]
    460.                 jmp     loc_4026CC
    461. loc_40278E:                        
    462.                 add     [ebp+var_4], edi
    463.                 mov     eax, [ebp+var_8]
    464.                 mov     word ptr [esi+eax], 0A0Dh
    465.                 add     [ebp+var_8], 2
    466. loc_40279E:                            
    467.                 or      esi, esi
    468.                 jnz     loc_40269A
    469. loc_4027A6:                            
    470.                 pop     ebx
    471.                 pop     esi
    472.                 pop     edi
    473.                 leave
    474.                 retn    0Ch
    475.  
    476. Base64Conv      endp
    477.  
    478. end start
     
  5. pivikov

    pivikov New Member

    Публикаций:
    0
    Регистрация:
    19 сен 2010
    Сообщения:
    19
    Я мало что понимаю в ресурсах, но, у масма контроллы между BEGIN и END, да и на си тоже.
    Масм распространяется с примерами, папка - examples, там достаточно информации.