radmin

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

  1. climbers

    climbers New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2009
    Сообщения:
    3
    Здравствуйте

    скажите в чем трабла, при билде говорит что не знает что такое malloc, memset,free,memcpy.. все библиотеки вроде как подгружены
     
  2. climbers

    climbers New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2009
    Сообщения:
    3
    исходник
     
  3. climbers

    climbers New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2009
    Сообщения:
    3
    файл не прикрепляется.
    Код (Text):
    1. .586
    2. .model flat, stdcall
    3. option casemap :none  
    4.  
    5.       include \masm32\include\windows.inc
    6.       include \masm32\include\masm32.inc
    7.       include \masm32\include\user32.inc
    8.       include \masm32\include\kernel32.inc
    9.       include \masm32\include\msvcrt.inc
    10.       include \masm32\include\comdlg32.inc
    11.       include \masm32\include\shell32.inc
    12.       include \masm32\include\ws2_32.inc
    13.       include \masm32\include\gdi32.inc  
    14.  
    15.       includelib \masm32\lib\gdi32.lib
    16.       includelib \masm32\lib\masm32.lib
    17.       includelib \masm32\lib\user32.lib
    18.       includelib \masm32\lib\kernel32.lib
    19.       includelib \masm32\lib\msvcrt.lib
    20.       includelib \masm32\lib\comdlg32.lib
    21.       includelib \masm32\lib\shell32.lib
    22.       includelib \masm32\lib\ws2_32.lib
    23.       includelib \masm32\lib\libc.lib
    24.       includelib \masm32\lib\oldnames.lib      
    25.       includelib zlib.lib
    26.  
    27.       WinProc         proto :dword, :dword, :dword, :dword
    28.       WinMain         proto :dword
    29.       Senddatr        proto :dword, :dword, :dword, :dword
    30.       ReciveData      proto :dword, :dword, :dword
    31.       TCPClientThread proto :dword
    32.       VerifeRecvData  proto :dword, :dword
    33.       AddCheckSumm    proto :dword
    34.       CheckSumm       proto :dword, :dword      
    35.       adler32         proto C :dword, :dword, :dword  
    36.       uncompress      proto C :dword, :dword, :dword, :dword  
    37.       GetNextFrame    proto :dword, :dword
    38.       XorBuffer       proto :dword, :dword, :dword
    39.       XorBuffer1      proto :dword, :dword, :dword
    40.       memcopy_        proto :dword, :dword, :dword
    41.       WindowEvents    proto :dword, :dword, :dword, :dword
    42.      
    43.       COMPRES_HEADER struct
    44.         CmpSiz   dd ?
    45.         FullSiz  dd ?
    46.       COMPRES_HEADER ends
    47.            
    48.       PACKET_DATA struct
    49.          pSize       dd ?
    50.          CkSumm      dd ?
    51.          ComCode     dd ?
    52.       PACKET_DATA ends
    53.  
    54.       START_DATA  struct            
    55.          FregTime    dd ?                
    56.          BitNum      dd ?
    57.       START_DATA  ends      
    58.  
    59.       MOUS_PACK struct
    60.          Wid    dd ?
    61.          Hed    dd ?
    62.          EvTyp  dd ?
    63.       MOUS_PACK ends
    64.  
    65.       KEYB_PACK struct
    66.          Vkey  dd ?
    67.          bScan dd ?
    68.       KEYB_PACK ends
    69.  
    70.       BIND_PORT      equ 2121
    71.       WM_NEXT_FRAM   equ 452h
    72.  
    73.       CLIENT_SESION struct
    74.          hSox        dd ?
    75.          hEvenr      dd ?
    76.          stopFl      dd ?
    77.          FregTime    dd ?                
    78.          dWidth      dd ?
    79.          dHeight     dd ?        
    80.          BitNum      dd ?
    81.          pLcBuff     dd ?
    82.          pFraeBuff   dd ?
    83.          sClassNm    db 100 dup (?)
    84.          hWind       dd ?
    85.          hInst       dd ?  
    86.       CLIENT_SESION ends
    87.  
    88. .data?
    89.       wsd              WSADATA   <>    
    90.       destination_sin  sockaddr_in  <>
    91.       hsockt           dd        ?
    92.       hThred           dd        ?  
    93.       hInstance        dd        ?
    94.       pClintDat        dd ?
    95.       hmuyt            dd ?
    96. hdcq dd ?
    97.  
    98.  
    99. .data  
    100.       ThreadID         dd  9786          
    101.       szipadr          db  "127.0.0.1",0  
    102.  
    103.       szClassName      db  "Clssss", 0
    104.       Namey            db  "svfrvgb",0
    105.    
    106.          
    107.  
    108. .code
    109. start:                
    110.      invoke CreateMutex, 0, 1, offset Namey
    111.      mov    hmuyt, eax
    112.      invoke GetLastError
    113.      .if eax != 0                                                              
    114.         invoke CloseHandle, hmuyt
    115.         invoke ExitProcess, 0
    116.      .endif
    117.      invoke GetModuleHandle, 0
    118.      mov    hInstance, eax  
    119.      invoke WSAStartup, 202h, addr wsd
    120.      invoke socket, AF_INET, SOCK_STREAM, 0                                    
    121.      mov    hsockt, eax                                        
    122.      mov    destination_sin.sin_family, AF_INET                                
    123.      invoke gethostbyname, addr szipadr
    124.      .if eax != 0      
    125.             mov eax, [eax+0Ch]
    126.             mov eax, [eax]
    127.             mov eax, [eax]           
    128.      .else
    129.         invoke inet_addr, addr szipadr                      
    130.      .endif
    131.      mov    destination_sin.sin_addr, eax        
    132.      invoke htons, BIND_PORT
    133.      mov    destination_sin.sin_port, ax              
    134.      invoke connect, hsockt, addr destination_sin,  sizeof destination_sin  
    135.      .if eax== 0                                      
    136.         invoke malloc, sizeof CLIENT_SESION
    137.         mov    pClintDat, eax
    138.         mov    edi, eax
    139.         invoke memset, edi, 0, sizeof CLIENT_SESION
    140.         invoke CreateEvent, 0, 0, 0, 0  
    141.         mov    (CLIENT_SESION ptr [edi]).hEvenr, eax
    142.         mov    (CLIENT_SESION ptr [edi]).BitNum, 8
    143.         mov    (CLIENT_SESION ptr [edi]).FregTime, 300
    144.         mov    ecx, hInstance
    145.         mov    (CLIENT_SESION ptr [edi]).hInst, ecx
    146.         mov    ecx, hsockt
    147.         mov    (CLIENT_SESION ptr [edi]).hSox, ecx
    148.         invoke lstrcpy, addr (CLIENT_SESION ptr [edi]).sClassNm, addr szClassName        
    149.         invoke CreateThread, 0, 0, addr TCPClientThread, pClintDat, 0, addr ThreadID
    150.         mov    hThred, eax
    151.         invoke WaitForSingleObject, hThred, -1
    152.         invoke CloseHandle, hThred                                
    153.      .endif
    154.      invoke closesocket, hsockt  
    155.      invoke ExitProcess, 0  
    156.  
    157. ;################################################################
    158.  
    159. TCPClientThread proc uses esi ebx edi pArgum:dword
    160.  
    161.      LOCAL  sizRecv          : dword
    162.      LOCAL  pSendBuff        : dword
    163.      LOCAL  pAllRecvData     : dword
    164.      LOCAL  szptre           : dword
    165.      LOCAL  pLcBuff          : dword
    166.      LOCAL  pFraeBuff        : dword
    167.      LOCAL  hWindw           : dword
    168.          
    169.      mov    ebx, pArgum
    170.      invoke malloc, sizeof START_DATA
    171.      mov    pSendBuff, eax
    172.      push   (CLIENT_SESION ptr [ebx]).BitNum
    173.      pop    (START_DATA ptr [eax]).BitNum
    174.      push   (CLIENT_SESION ptr [ebx]).FregTime        
    175.      pop    (START_DATA ptr [eax]).FregTime    
    176.      mov    ecx, 'BEGN'
    177.      invoke Senddatr, (CLIENT_SESION ptr [ebx]).hSox, ecx, pSendBuff, sizeof START_DATA
    178.      .if eax != 0      
    179.         mov   ebx, pArgum
    180.         mov   (CLIENT_SESION ptr [ebx]).stopFl, 0
    181.         .while (1)
    182.            mov   ebx, pArgum
    183.            .if dword ptr (CLIENT_SESION ptr [ebx]).stopFl == 1              
    184.               .break
    185.            .endif
    186.            invoke ReciveData, (CLIENT_SESION ptr [ebx]).hSox, addr pAllRecvData, addr sizRecv
    187.            .if eax != 0                                                              
    188.               mov   esi, pAllRecvData
    189.               mov   edx, (PACKET_DATA ptr [esi]).ComCode
    190.               add   esi, sizeof PACKET_DATA
    191.               .if edx == 'FRST'                            
    192.                  mov    edi, (COMPRES_HEADER ptr [esi]).FullSiz
    193.                  add    edi, 10000h
    194.                  and    edi, 0ffff0000h
    195.                  invoke VirtualAlloc, 0, edi, MEM_COMMIT, PAGE_EXECUTE_READWRITE
    196.                  mov    (CLIENT_SESION ptr [ebx]).pLcBuff, eax
    197.                  invoke VirtualAlloc, 0, edi, MEM_COMMIT, PAGE_EXECUTE_READWRITE
    198.                  mov    (CLIENT_SESION ptr [ebx]).pFraeBuff, eax            
    199.                  mov    ebx, pArgum
    200.                  mov    ecx, (COMPRES_HEADER ptr [esi]).CmpSiz
    201.                  mov    eax, (COMPRES_HEADER ptr [esi]).FullSiz                            
    202.                  add    esi, sizeof COMPRES_HEADER            
    203.                  shl    eax, 1
    204.                  mov    szptre, eax
    205.                  invoke uncompress, (CLIENT_SESION ptr [ebx]).pLcBuff, addr szptre, esi, ecx
    206.                  mov    edx, (CLIENT_SESION ptr [ebx]).pLcBuff  
    207.                  add    edx, sizeof BITMAPFILEHEADER
    208.                  push   (BITMAPINFOHEADER ptr [edx]).biWidth      
    209.                  pop    (CLIENT_SESION ptr [ebx]).dWidth    
    210.                  push   (BITMAPINFOHEADER ptr [edx]).biHeight        
    211.                  pop    (CLIENT_SESION ptr [ebx]).dHeight        
    212.                  invoke CreateThread, 0, 0, addr WinMain, pArgum, 0, 0
    213.                  invoke CloseHandle, eax
    214.                  invoke WaitForSingleObject, (CLIENT_SESION ptr [ebx]).hEvenr, -1
    215.                  invoke CloseHandle, (CLIENT_SESION ptr [ebx]).hEvenr
    216.                  invoke SendMessage, (CLIENT_SESION ptr [ebx]).hWind, WM_NEXT_FRAM, 0, 0
    217.                  invoke malloc, 8
    218.                  mov    pSendBuff, eax
    219.                  mov    ecx, 'GTNX'
    220.                  invoke Senddatr, (CLIENT_SESION ptr [ebx]).hSox, ecx, pSendBuff, 8
    221.               .elseif  edx == 'NEXT'
    222.                  mov    ebx, pArgum
    223.                  mov    ecx, (COMPRES_HEADER ptr [esi]).CmpSiz
    224.                  mov    eax, (COMPRES_HEADER ptr [esi]).FullSiz                            
    225.                  add    esi, sizeof COMPRES_HEADER            
    226.                  shl    eax, 1
    227.                  mov    szptre, eax
    228.                  sub    ecx, sizeof COMPRES_HEADER
    229.                  invoke uncompress, (CLIENT_SESION ptr [ebx]).pFraeBuff, addr szptre, esi, ecx
    230.                  invoke GetNextFrame, (CLIENT_SESION ptr [ebx]).pLcBuff, (CLIENT_SESION ptr [ebx]).pFraeBuff
    231.                  invoke SendMessage, (CLIENT_SESION ptr [ebx]).hWind, WM_NEXT_FRAM, 0, 0
    232.                  invoke malloc, 8
    233.                  mov    pSendBuff, eax
    234.                  invoke Sleep, 10
    235.                  mov    ecx, 'GTNX'
    236.                  invoke Senddatr, (CLIENT_SESION ptr [ebx]).hSox, ecx, pSendBuff, 8                            
    237.                  .elseif  edx == 'ACPT'              
    238.               .else
    239.                  mov    ebx, pArgum
    240.                  invoke SendMessage, (CLIENT_SESION ptr [ebx]).hWind, WM_CLOSE, 0, 0                                  
    241.               .endif              
    242.            .else
    243.               .break
    244.            .endif
    245.         .endw
    246.      .endif  
    247.      mov    ebx, pArgum
    248.      invoke VirtualFree, (CLIENT_SESION ptr [ebx]).pLcBuff, 0, MEM_RELEASE
    249.      invoke VirtualFree, (CLIENT_SESION ptr [ebx]).pFraeBuff, 0, MEM_RELEASE
    250.      invoke closesocket, (CLIENT_SESION ptr [ebx]).hSox
    251.      invoke free, ebx  
    252.      xor    eax, eax
    253.      ret
    254.  
    255. TCPClientThread ENDP
    256. align 10h
    257. ;################################################################
    258.  
    259. VerifeRecvData proc uses edi esi ebx pData:dword, dataSiz:dword
    260.  
    261.  
    262.     mov    esi, pData
    263.     mov    ebx, (PACKET_DATA ptr [esi]).pSize
    264.     mov    edi, (PACKET_DATA ptr [esi]).CkSumm
    265.     add    esi, 8
    266.     sub    ebx, 8
    267.     invoke adler32, 0, esi, ebx
    268.     .if eax == edi    
    269.        mov  eax, 1
    270.     .else
    271.        xor  eax, eax
    272.     .endif
    273.     ret
    274.  
    275. VerifeRecvData endp
    276. align 10h
    277. ;#########################################################
    278.  
    279. AddCheckSumm proc uses edi esi ebx pSendDat:dword
    280.  
    281.     mov    esi, pSendDat
    282.     mov    ebx, (PACKET_DATA ptr [esi]).pSize
    283.     sub    ebx, 8
    284.     add    esi, 8
    285.     invoke adler32, 0, esi, ebx
    286.     mov    [esi-4], eax
    287.     ret
    288.    
    289. AddCheckSumm endp
    290. align 10h
    291. ;#########################################################
    292.  
    293. ReciveData proc uses edi esi ebx lkSockt:dword, OutBuff:dword, SizOutBuff:dword
    294.  
    295.        LOCAL  pAllRecvData : dword
    296.        LOCAL  pSizRecvBuff : dword
    297.        LOCAL  retval  : dword
    298.        LOCAL  pzRcvBuff : dword
    299.        
    300.        invoke malloc, 1000h
    301.        mov    pzRcvBuff, eax
    302.        mov    retval, 0      
    303.        invoke recv, lkSockt, pzRcvBuff, 1000h, 0
    304.        .if eax != 0 && eax != -1          
    305.           mov    retval, 1
    306.           mov    edi, eax
    307.           mov    ecx, pzRcvBuff
    308.           mov    ebx, (PACKET_DATA ptr [ecx]).pSize
    309.           invoke malloc, ebx
    310.           mov    esi, eax
    311.           mov    pAllRecvData, eax
    312.           invoke memcpy, esi, pzRcvBuff, edi      
    313.           add    esi, edi
    314.           mov    pSizRecvBuff, ebx
    315.           .if ebx > edi
    316.              sub  ebx, edi
    317.              .if  ebx < 1000h  
    318.                 mov  edi, ebx
    319.              .else
    320.                 mov  edi, 1000h
    321.              .endif
    322.              .while ebx != 0
    323.                 invoke recv, lkSockt, esi, edi, 0
    324.                 .if eax == -1 || eax == 0
    325.                    mov  retval, 0
    326.                    .break
    327.                 .endif
    328.                 sub    ebx, eax
    329.                 add    esi, eax
    330.                 .if ebx < 1000h
    331.                    mov  edi, ebx
    332.                 .endif
    333.              .endw  
    334.              .if retval != 0
    335.                 invoke VerifeRecvData, pAllRecvData,  pSizRecvBuff
    336.                 mov    retval, eax        
    337.              .endif                                
    338.           .endif
    339.           .if retval == 1
    340.              mov   ecx,  OutBuff
    341.              mov   eax, pAllRecvData
    342.              mov   [ecx], eax
    343.              mov   ecx, SizOutBuff
    344.              mov   eax, pSizRecvBuff
    345.              mov   [ecx], eax
    346.           .endif
    347.        .endif  
    348.        invoke free, pzRcvBuff
    349.        mov    eax, retval
    350.        ret
    351.  
    352. ReciveData  endp
    353. align 10h
    354. ;################################################################
    355.  
    356. Senddatr proc uses edi esi ebx hSockt:dword, codeg:dword, pBuff:dword, sizBufr:dword
    357.  
    358.        LOCAL  retval      : dword
    359.        LOCAL  pSndComBuff : dword
    360.                        
    361.        mov    ebx, sizeof PACKET_DATA
    362.        add    ebx, sizBufr
    363.        mov    retval, 0
    364.        invoke malloc, ebx
    365.        .if eax != 0
    366.           mov    retval, 1
    367.           mov    pSndComBuff, eax
    368.           mov    esi, eax
    369.           mov    (PACKET_DATA ptr [esi]).pSize, ebx
    370.           mov    eax, codeg
    371.           mov    (PACKET_DATA ptr [esi]).ComCode, eax                                            
    372.           add    esi, sizeof PACKET_DATA
    373.           invoke memcpy, esi, pBuff, sizBufr
    374.           invoke free, pBuff
    375.           invoke AddCheckSumm, pSndComBuff                      
    376.             mov    esi, pSndComBuff
    377.             mov    ebx, (PACKET_DATA ptr [esi]).pSize
    378.             .if ebx < 1000h
    379.                mov   edi, ebx
    380.             .else
    381.                mov   edi, 1000h
    382.             .endif
    383.             .while  ebx != 0
    384.                invoke send, hSockt, esi, edi, 0
    385.              .if eax == -1
    386.                 mov  retval, 0
    387.                 .break
    388.              .endif
    389.              sub    ebx, eax
    390.              add    esi, eax
    391.              .if ebx < 1000h
    392.                 mov   edi, ebx
    393.              .endif
    394.           .endw
    395.           .if retval != 0
    396.              push   pSndComBuff
    397.              pop    retval              
    398.           .else
    399.              invoke free, pSndComBuff
    400.           .endif
    401.        .endif
    402.        mov   eax, retval            
    403.        ret
    404.  
    405. Senddatr endp  
    406. align 10h
    407. ;################################################################
    408.  
    409. WinMain     proc uses edi esi ebx pArgr:dword        
    410.  
    411.          LOCAL WndClass       : WNDCLASSA
    412.          LOCAL Msg            : dword
    413.              
    414.          mov     ebx, pArgr
    415.          xor     esi, esi          
    416.          mov     WndClass.style, esi
    417.          mov     WndClass.lpfnWndProc, offset WinProc
    418.          mov     WndClass.cbClsExtra, esi
    419.          mov     WndClass.cbWndExtra, esi
    420.          mov     eax, (CLIENT_SESION ptr [ebx]).hInst
    421.          mov     WndClass.hInstance, eax
    422.          mov     WndClass.hIcon, esi
    423.          invoke  LoadCursor, (CLIENT_SESION ptr [ebx]).hInst, IDC_ARROW                
    424.          mov     WndClass.hCursor, eax
    425.          mov     eax, offset szClassName
    426.          mov     WndClass.lpszClassName, eax
    427.          mov     WndClass.hbrBackground, esi
    428.          mov     WndClass.lpszMenuName, esi
    429.          invoke  RegisterClassA, addr WndClass
    430.          invoke  CreateWindowExA, 8, addr (CLIENT_SESION ptr [ebx]).sClassNm, addr (CLIENT_SESION ptr [ebx]).sClassNm, 0C0000h, 50, 50, 400, 320, esi, esi, (CLIENT_SESION ptr [ebx]).hInst, pArgr          
    431.          mov     (CLIENT_SESION ptr [ebx]).hWind, eax      
    432.          invoke  ShowWindow, eax, SW_SHOWDEFAULT
    433.          invoke  SetEvent, (CLIENT_SESION ptr [ebx]).hEvenr
    434.          .while (1)                            
    435.             invoke  GetMessageA, addr Msg, esi, esi, esi
    436.             .if eax == 0
    437.                .break
    438.             .endif
    439.             invoke  TranslateMessage, addr Msg                                              
    440.             invoke  DispatchMessageA, addr Msg                                
    441.          .endw                                      
    442.          ret
    443.  
    444. WinMain     endp
    445. align 10h
    446. ;#############################################################
    447.  
    448. WinProc  proc uses edi esi ebx  hWnd:dword, Msg:dword, wParam:dword, lParam:dword
    449.  
    450.               LOCAL winRect  : RECT  
    451.               LOCAL paintdt  : PAINTSTRUCT
    452.               LOCAL hDC      : dword        
    453.               LOCAL pBits    : dword
    454.               LOCAL pbmi     : dword                        
    455.                
    456.               .if Msg == WM_NEXT_FRAM
    457.                  invoke  InvalidateRect, hWnd, 0, 0    
    458.               .elseif Msg == WM_CLOSE
    459.                  invoke GetWindowLong, hWnd, GWL_USERDATA
    460.                  mov    (CLIENT_SESION ptr [eax]).stopFl, 1
    461.                  invoke PostQuitMessage, 0          
    462. ;              .elseif Msg == WM_LBUTTONDOWN  
    463. ;                 invoke WindowEvents, hWnd, MOUSEEVENTF_LEFTDOWN, wParam, lParam  
    464. ;              .elseif Msg == WM_LBUTTONUP                  
    465. ;                 invoke WindowEvents, hWnd, MOUSEEVENTF_LEFTUP, wParam, lParam  
    466. ;              .elseif Msg == WM_MBUTTONDOWN  
    467. ;                 invoke WindowEvents, hWnd, MOUSEEVENTF_MIDDLEDOWN, wParam, lParam  
    468. ;              .elseif Msg == WM_MBUTTONUP  
    469. ;                 invoke WindowEvents, hWnd, MOUSEEVENTF_MIDDLEUP, wParam, lParam  
    470. ;              .elseif Msg == WM_RBUTTONDOWN
    471. ;                 invoke WindowEvents, hWnd, MOUSEEVENTF_RIGHTDOWN, wParam, lParam  
    472. ;              .elseif Msg == WM_RBUTTONUP  
    473. ;                 invoke WindowEvents, hWnd, MOUSEEVENTF_RIGHTUP, wParam, lParam  
    474. ;              .elseif Msg == WM_MOUSEMOVE  
    475. ;                 invoke WindowEvents, hWnd, MOUSEEVENTF_MOVE, wParam, lParam        
    476. ;              .elseif Msg == WM_KEYDOWN  
    477. ;                 invoke keybd_event, wParam, lParam, 1, 0
    478. ;              .elseif Msg == WM_KEYUP                
    479. ;                 invoke keybd_event, wParam, lParam, KEYEVENTF_KEYUP, 0
    480.               .elseif Msg == WM_CREATE  
    481.                  mov    ecx, lParam
    482.                  invoke SetWindowLong, hWnd, GWL_USERDATA, [ecx]
    483.               .elseif Msg == WM_PAINT  
    484.                  invoke GetWindowLong, hWnd, GWL_USERDATA
    485.                  mov    ebx, (CLIENT_SESION ptr [eax]).pLcBuff                
    486.                  lea    eax, [ebx+sizeof BITMAPFILEHEADER]
    487.                    mov    pbmi, eax
    488.                    mov    eax, (BITMAPFILEHEADER ptr [ebx]).bfOffBits
    489.                  add      eax, ebx
    490.                  mov      pBits, eax   
    491.                  add    ebx, sizeof BITMAPFILEHEADER                     
    492.                  invoke BeginPaint, hWnd, addr paintdt
    493.                  mov    hDC, eax  
    494.                  invoke SetStretchBltMode, hDC, STRETCH_HALFTONE
    495.                  invoke GetClientRect, hWnd, addr winRect  
    496.                  mov    ecx, winRect.bottom
    497.                  sub    ecx, winRect.top  
    498.                  mov    edx, winRect.right
    499.                  sub    edx, winRect.left
    500.                  invoke StretchDIBits, hDC, 0, 0, edx, ecx, 0, 0, (BITMAPINFOHEADER ptr [ebx]).biWidth, (BITMAPINFOHEADER ptr [ebx]).biHeight, pBits, pbmi, DIB_RGB_COLORS, SRCCOPY
    501.                  invoke EndPaint, hWnd, addr paintdt                
    502.               .else    
    503.                  invoke DefWindowProcA, hWnd, Msg, wParam, lParam
    504.               .endif  
    505.               ret
    506.  
    507. WinProc endp
    508. align 10h
    509. ;################################################################
    510.  
    511. GetNextFrame proc uses edi esi ebx pStatFram:dword, pOutBuff:dword
    512.  
    513.          LOCAL  dwHeight : dword
    514.          LOCAL  dwWidth  : dword
    515.          LOCAL  pArrayd  : dword
    516.          LOCAL  linLen   : dword
    517.          LOCAL  Reslt    : dword
    518.          LOCAL  ResLin   : dword
    519.            
    520.          mov    Reslt, -1
    521.          mov    ebx, pStatFram                
    522.          add    ebx, sizeof BITMAPFILEHEADER   
    523.          mov    eax, (BITMAPINFOHEADER ptr [ebx]).biWidth
    524.          mov    dwWidth, eax
    525.          mov    eax, (BITMAPINFOHEADER ptr [ebx]).biHeight
    526.          mov    dwHeight, eax        
    527.          mov    eax, dwWidth    
    528.          movzx  ecx, word ptr  (BITMAPINFOHEADER ptr [ebx]).biBitCount  
    529.          mul    ecx
    530.          shr    eax, 3
    531.          mov    ResLin, eax
    532.          mov    edi, pStatFram
    533.          add    edi, (BITMAPFILEHEADER ptr [edi]).bfOffBits        
    534.          mov    ecx, dwHeight
    535.          dec    ecx
    536.          mul    ecx      
    537.          add    edi, eax  
    538.          mov    esi, pOutBuff
    539.          .if dword ptr [esi] != 0
    540.             mov    eax, [esi]
    541.             shl    eax, 2
    542.             add    esi, 4
    543.             mov    pArrayd, esi  
    544.             add    esi, eax
    545.             xor    ebx, ebx
    546.             dec    dwHeight
    547.             .while ebx != dwHeight
    548.                push   ResLin
    549.                pop    linLen
    550.                mov    ecx, pArrayd
    551.                movzx  eax, word ptr  [ecx]
    552.                .if eax == ebx                                      
    553.                   movzx eax, word ptr [ecx+2]
    554.                   mov   ecx, eax
    555.                   and   ecx, 0f000h
    556.                   .if (ecx == 1000h)
    557.                      sub    eax, 1000h
    558.                      push   eax
    559.                      invoke XorBuffer, esi, edi, ResLin
    560.                      pop    linLen
    561.                   .elseif (ecx == 7000h)
    562.                      sub    eax, 7000h
    563.                      push   eax
    564.                      invoke XorBuffer1, esi, edi, ResLin
    565.                      pop    linLen                                                                            
    566.                   .elseif (ecx == 2000h)
    567.                      sub    eax, 2000h                      
    568.                      push   eax
    569.                      mov    edx, edi
    570.                      add    edx, ResLin
    571.                      invoke memcopy_, edi, edx, ResLin                                          
    572.                      pop    linLen
    573.                   .elseif (ecx == 8000h)
    574.                      invoke memcopy_, edi, esi, ResLin
    575.                   .endif
    576.                   add    pArrayd, 4
    577.                   add    esi, linLen
    578.                .endif                                                                                                                    
    579.                sub    edi, ResLin
    580.                inc    ebx
    581.             .endw
    582.             mov  Reslt, 0
    583.          .endif
    584.          mov    eax, Reslt
    585.          ret
    586.  
    587. GetNextFrame endp
    588. align 10h
    589. ;############################################################$
    590.  
    591. XorBuffer proc uses edi esi ebx pSource:dword, pDest:dword, sizBuff:dword
    592.  
    593.         LOCAL  trguk:dword
    594.  
    595.         mov   esi, pSource
    596.         mov   edi, pDest
    597.         mov   eax, sizBuff
    598.         xor   ecx, ecx
    599.         shr   eax, 3
    600.         mov   edx, eax              
    601.         add   edx, esi
    602.         mov   ebx, [esi]
    603.         add   esi, 4      
    604.         .while sizBuff != 0                                                                                          
    605.            bts     ebx, ecx                                                                    
    606.            jnc     @f              
    607.            mov    al, byte ptr [edx]  
    608.            inc    edx
    609.            mov    [edi], byte ptr al
    610. @@:          
    611.            inc    ecx
    612.            .if ecx == 32
    613.               mov   ebx, [esi]
    614.               xor   ecx, ecx
    615.               add   esi, 4                                          
    616.            .endif
    617.            dec  sizBuff
    618.            inc  edi                              
    619.         .endw
    620.         ret
    621.  
    622. XorBuffer endp
    623. align 10h
    624. ;#######################################################  
    625.  
    626. XorBuffer1 proc uses edi esi ebx pSource:dword, pDest:dword, sizBuff:dword
    627.  
    628.  
    629.         mov   esi, pSource      
    630.         movzx ebx, byte ptr [esi]        
    631.         inc   esi
    632.         .while ebx != 0                                                                                                                                                                                              
    633.            movzx  eax, word ptr [esi]              
    634.            movzx  ecx, byte ptr [esi+2]    
    635.            mov    edi, pDest          
    636.            mov    [edi+eax], byte ptr cl                                                                                    
    637.            add    esi, 3
    638.            dec    ebx                                                    
    639.         .endw
    640.         ret
    641.  
    642. XorBuffer1 endp
    643. align 10h
    644. ;#######################################################  
    645.  
    646. memcopy_ proc uses edi esi ebx pDest:dword, pSource:dword, sizeDat:dword
    647.  
    648.         mov     ecx, sizeDat
    649.         mov     esi, pSource
    650.         mov     edi, pDest
    651.         mov     eax, ecx
    652.         shr     ecx, 2
    653.         rep movsd
    654.         mov     ecx, eax
    655.         and     ecx, 3
    656.         rep movsb
    657.         ret
    658.  
    659. memcopy_ endp
    660. align 10h
    661. ;#######################################################
    662.  
    663. WindowEvents proc uses edi esi ebx hWd:dword, msg:dword, wPrm:dword, lPrm:dword
    664.  
    665.             LOCAL  pSendBuff : dword
    666.             LOCAL  winRect  : RECT      
    667.      
    668.             invoke GetWindowLong, hWd, GWL_USERDATA
    669.             mov    ebx, eax
    670.             invoke malloc, sizeof MOUS_PACK
    671.             mov    pSendBuff, eax
    672.             invoke GetClientRect, hWd, addr winRect
    673.             mov    ecx, winRect.right
    674.             sub    ecx, winRect.left
    675.             mov    eax, lPrm
    676.             and    eax, 0ffffh
    677.             invoke MulDiv, eax, (CLIENT_SESION ptr [ebx]).dWidth, ecx
    678.             mov    ecx, pSendBuff
    679.             mov   (MOUS_PACK ptr [ecx]).Wid, eax
    680.             mov    ecx, winRect.bottom
    681.             sub    ecx, winRect.top  
    682.             mov    eax, lPrm
    683.             shr    eax, 16
    684.             invoke MulDiv, eax, (CLIENT_SESION ptr [ebx]).dHeight, ecx
    685.             mov    ecx, pSendBuff
    686.             mov    (MOUS_PACK ptr [ecx]).Hed,  eax                                          
    687.             mov    eax, msg
    688.             mov    (MOUS_PACK ptr [ecx]).EvTyp, eax
    689.             mov    ecx, 'MOUS'                   
    690.             invoke Senddatr, (CLIENT_SESION ptr [ebx]).hSox, ecx, pSendBuff, sizeof MOUS_PACK  
    691.             mov    eax, 1
    692.             ret
    693.  
    694. WindowEvents endp
    695. align 10h
    696. ;#######################################################
    697.  
    698. end start
     
  4. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    climbers
    > библиотеки вроде как подгружены
    Библиотеки нужны на этапе линковки. У тебя ругается ассемблер.
    Добавь прототипы
    Код (Text):
    1. malloc proto C :dword
    2. free   proto C :dword
    3. memset proto C :dword, :dword, :dword
    4. memcpy proto C :dword, :dword, :dword
     
  5. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    причем здесь radmin ?
     
  6. Dian

    Dian Member

    Публикаций:
    0
    Регистрация:
    19 июн 2008
    Сообщения:
    222
    Ну а как? Не писать же сразу rtrojan :)