Здравствуйте скажите в чем трабла, при билде говорит что не знает что такое malloc, memset,free,memcpy.. все библиотеки вроде как подгружены
файл не прикрепляется. Код (Text): .586 .model flat, stdcall option casemap :none include \masm32\include\windows.inc include \masm32\include\masm32.inc include \masm32\include\user32.inc include \masm32\include\kernel32.inc include \masm32\include\msvcrt.inc include \masm32\include\comdlg32.inc include \masm32\include\shell32.inc include \masm32\include\ws2_32.inc include \masm32\include\gdi32.inc includelib \masm32\lib\gdi32.lib includelib \masm32\lib\masm32.lib includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib includelib \masm32\lib\msvcrt.lib includelib \masm32\lib\comdlg32.lib includelib \masm32\lib\shell32.lib includelib \masm32\lib\ws2_32.lib includelib \masm32\lib\libc.lib includelib \masm32\lib\oldnames.lib includelib zlib.lib WinProc proto :dword, :dword, :dword, :dword WinMain proto :dword Senddatr proto :dword, :dword, :dword, :dword ReciveData proto :dword, :dword, :dword TCPClientThread proto :dword VerifeRecvData proto :dword, :dword AddCheckSumm proto :dword CheckSumm proto :dword, :dword adler32 proto C :dword, :dword, :dword uncompress proto C :dword, :dword, :dword, :dword GetNextFrame proto :dword, :dword XorBuffer proto :dword, :dword, :dword XorBuffer1 proto :dword, :dword, :dword memcopy_ proto :dword, :dword, :dword WindowEvents proto :dword, :dword, :dword, :dword COMPRES_HEADER struct CmpSiz dd ? FullSiz dd ? COMPRES_HEADER ends PACKET_DATA struct pSize dd ? CkSumm dd ? ComCode dd ? PACKET_DATA ends START_DATA struct FregTime dd ? BitNum dd ? START_DATA ends MOUS_PACK struct Wid dd ? Hed dd ? EvTyp dd ? MOUS_PACK ends KEYB_PACK struct Vkey dd ? bScan dd ? KEYB_PACK ends BIND_PORT equ 2121 WM_NEXT_FRAM equ 452h CLIENT_SESION struct hSox dd ? hEvenr dd ? stopFl dd ? FregTime dd ? dWidth dd ? dHeight dd ? BitNum dd ? pLcBuff dd ? pFraeBuff dd ? sClassNm db 100 dup (?) hWind dd ? hInst dd ? CLIENT_SESION ends .data? wsd WSADATA <> destination_sin sockaddr_in <> hsockt dd ? hThred dd ? hInstance dd ? pClintDat dd ? hmuyt dd ? hdcq dd ? .data ThreadID dd 9786 szipadr db "127.0.0.1",0 szClassName db "Clssss", 0 Namey db "svfrvgb",0 .code start: invoke CreateMutex, 0, 1, offset Namey mov hmuyt, eax invoke GetLastError .if eax != 0 invoke CloseHandle, hmuyt invoke ExitProcess, 0 .endif invoke GetModuleHandle, 0 mov hInstance, eax invoke WSAStartup, 202h, addr wsd invoke socket, AF_INET, SOCK_STREAM, 0 mov hsockt, eax mov destination_sin.sin_family, AF_INET invoke gethostbyname, addr szipadr .if eax != 0 mov eax, [eax+0Ch] mov eax, [eax] mov eax, [eax] .else invoke inet_addr, addr szipadr .endif mov destination_sin.sin_addr, eax invoke htons, BIND_PORT mov destination_sin.sin_port, ax invoke connect, hsockt, addr destination_sin, sizeof destination_sin .if eax== 0 invoke malloc, sizeof CLIENT_SESION mov pClintDat, eax mov edi, eax invoke memset, edi, 0, sizeof CLIENT_SESION invoke CreateEvent, 0, 0, 0, 0 mov (CLIENT_SESION ptr [edi]).hEvenr, eax mov (CLIENT_SESION ptr [edi]).BitNum, 8 mov (CLIENT_SESION ptr [edi]).FregTime, 300 mov ecx, hInstance mov (CLIENT_SESION ptr [edi]).hInst, ecx mov ecx, hsockt mov (CLIENT_SESION ptr [edi]).hSox, ecx invoke lstrcpy, addr (CLIENT_SESION ptr [edi]).sClassNm, addr szClassName invoke CreateThread, 0, 0, addr TCPClientThread, pClintDat, 0, addr ThreadID mov hThred, eax invoke WaitForSingleObject, hThred, -1 invoke CloseHandle, hThred .endif invoke closesocket, hsockt invoke ExitProcess, 0 ;################################################################ TCPClientThread proc uses esi ebx edi pArgum:dword LOCAL sizRecv : dword LOCAL pSendBuff : dword LOCAL pAllRecvData : dword LOCAL szptre : dword LOCAL pLcBuff : dword LOCAL pFraeBuff : dword LOCAL hWindw : dword mov ebx, pArgum invoke malloc, sizeof START_DATA mov pSendBuff, eax push (CLIENT_SESION ptr [ebx]).BitNum pop (START_DATA ptr [eax]).BitNum push (CLIENT_SESION ptr [ebx]).FregTime pop (START_DATA ptr [eax]).FregTime mov ecx, 'BEGN' invoke Senddatr, (CLIENT_SESION ptr [ebx]).hSox, ecx, pSendBuff, sizeof START_DATA .if eax != 0 mov ebx, pArgum mov (CLIENT_SESION ptr [ebx]).stopFl, 0 .while (1) mov ebx, pArgum .if dword ptr (CLIENT_SESION ptr [ebx]).stopFl == 1 .break .endif invoke ReciveData, (CLIENT_SESION ptr [ebx]).hSox, addr pAllRecvData, addr sizRecv .if eax != 0 mov esi, pAllRecvData mov edx, (PACKET_DATA ptr [esi]).ComCode add esi, sizeof PACKET_DATA .if edx == 'FRST' mov edi, (COMPRES_HEADER ptr [esi]).FullSiz add edi, 10000h and edi, 0ffff0000h invoke VirtualAlloc, 0, edi, MEM_COMMIT, PAGE_EXECUTE_READWRITE mov (CLIENT_SESION ptr [ebx]).pLcBuff, eax invoke VirtualAlloc, 0, edi, MEM_COMMIT, PAGE_EXECUTE_READWRITE mov (CLIENT_SESION ptr [ebx]).pFraeBuff, eax mov ebx, pArgum mov ecx, (COMPRES_HEADER ptr [esi]).CmpSiz mov eax, (COMPRES_HEADER ptr [esi]).FullSiz add esi, sizeof COMPRES_HEADER shl eax, 1 mov szptre, eax invoke uncompress, (CLIENT_SESION ptr [ebx]).pLcBuff, addr szptre, esi, ecx mov edx, (CLIENT_SESION ptr [ebx]).pLcBuff add edx, sizeof BITMAPFILEHEADER push (BITMAPINFOHEADER ptr [edx]).biWidth pop (CLIENT_SESION ptr [ebx]).dWidth push (BITMAPINFOHEADER ptr [edx]).biHeight pop (CLIENT_SESION ptr [ebx]).dHeight invoke CreateThread, 0, 0, addr WinMain, pArgum, 0, 0 invoke CloseHandle, eax invoke WaitForSingleObject, (CLIENT_SESION ptr [ebx]).hEvenr, -1 invoke CloseHandle, (CLIENT_SESION ptr [ebx]).hEvenr invoke SendMessage, (CLIENT_SESION ptr [ebx]).hWind, WM_NEXT_FRAM, 0, 0 invoke malloc, 8 mov pSendBuff, eax mov ecx, 'GTNX' invoke Senddatr, (CLIENT_SESION ptr [ebx]).hSox, ecx, pSendBuff, 8 .elseif edx == 'NEXT' mov ebx, pArgum mov ecx, (COMPRES_HEADER ptr [esi]).CmpSiz mov eax, (COMPRES_HEADER ptr [esi]).FullSiz add esi, sizeof COMPRES_HEADER shl eax, 1 mov szptre, eax sub ecx, sizeof COMPRES_HEADER invoke uncompress, (CLIENT_SESION ptr [ebx]).pFraeBuff, addr szptre, esi, ecx invoke GetNextFrame, (CLIENT_SESION ptr [ebx]).pLcBuff, (CLIENT_SESION ptr [ebx]).pFraeBuff invoke SendMessage, (CLIENT_SESION ptr [ebx]).hWind, WM_NEXT_FRAM, 0, 0 invoke malloc, 8 mov pSendBuff, eax invoke Sleep, 10 mov ecx, 'GTNX' invoke Senddatr, (CLIENT_SESION ptr [ebx]).hSox, ecx, pSendBuff, 8 .elseif edx == 'ACPT' .else mov ebx, pArgum invoke SendMessage, (CLIENT_SESION ptr [ebx]).hWind, WM_CLOSE, 0, 0 .endif .else .break .endif .endw .endif mov ebx, pArgum invoke VirtualFree, (CLIENT_SESION ptr [ebx]).pLcBuff, 0, MEM_RELEASE invoke VirtualFree, (CLIENT_SESION ptr [ebx]).pFraeBuff, 0, MEM_RELEASE invoke closesocket, (CLIENT_SESION ptr [ebx]).hSox invoke free, ebx xor eax, eax ret TCPClientThread ENDP align 10h ;################################################################ VerifeRecvData proc uses edi esi ebx pData:dword, dataSiz:dword mov esi, pData mov ebx, (PACKET_DATA ptr [esi]).pSize mov edi, (PACKET_DATA ptr [esi]).CkSumm add esi, 8 sub ebx, 8 invoke adler32, 0, esi, ebx .if eax == edi mov eax, 1 .else xor eax, eax .endif ret VerifeRecvData endp align 10h ;######################################################### AddCheckSumm proc uses edi esi ebx pSendDat:dword mov esi, pSendDat mov ebx, (PACKET_DATA ptr [esi]).pSize sub ebx, 8 add esi, 8 invoke adler32, 0, esi, ebx mov [esi-4], eax ret AddCheckSumm endp align 10h ;######################################################### ReciveData proc uses edi esi ebx lkSockt:dword, OutBuff:dword, SizOutBuff:dword LOCAL pAllRecvData : dword LOCAL pSizRecvBuff : dword LOCAL retval : dword LOCAL pzRcvBuff : dword invoke malloc, 1000h mov pzRcvBuff, eax mov retval, 0 invoke recv, lkSockt, pzRcvBuff, 1000h, 0 .if eax != 0 && eax != -1 mov retval, 1 mov edi, eax mov ecx, pzRcvBuff mov ebx, (PACKET_DATA ptr [ecx]).pSize invoke malloc, ebx mov esi, eax mov pAllRecvData, eax invoke memcpy, esi, pzRcvBuff, edi add esi, edi mov pSizRecvBuff, ebx .if ebx > edi sub ebx, edi .if ebx < 1000h mov edi, ebx .else mov edi, 1000h .endif .while ebx != 0 invoke recv, lkSockt, esi, edi, 0 .if eax == -1 || eax == 0 mov retval, 0 .break .endif sub ebx, eax add esi, eax .if ebx < 1000h mov edi, ebx .endif .endw .if retval != 0 invoke VerifeRecvData, pAllRecvData, pSizRecvBuff mov retval, eax .endif .endif .if retval == 1 mov ecx, OutBuff mov eax, pAllRecvData mov [ecx], eax mov ecx, SizOutBuff mov eax, pSizRecvBuff mov [ecx], eax .endif .endif invoke free, pzRcvBuff mov eax, retval ret ReciveData endp align 10h ;################################################################ Senddatr proc uses edi esi ebx hSockt:dword, codeg:dword, pBuff:dword, sizBufr:dword LOCAL retval : dword LOCAL pSndComBuff : dword mov ebx, sizeof PACKET_DATA add ebx, sizBufr mov retval, 0 invoke malloc, ebx .if eax != 0 mov retval, 1 mov pSndComBuff, eax mov esi, eax mov (PACKET_DATA ptr [esi]).pSize, ebx mov eax, codeg mov (PACKET_DATA ptr [esi]).ComCode, eax add esi, sizeof PACKET_DATA invoke memcpy, esi, pBuff, sizBufr invoke free, pBuff invoke AddCheckSumm, pSndComBuff mov esi, pSndComBuff mov ebx, (PACKET_DATA ptr [esi]).pSize .if ebx < 1000h mov edi, ebx .else mov edi, 1000h .endif .while ebx != 0 invoke send, hSockt, esi, edi, 0 .if eax == -1 mov retval, 0 .break .endif sub ebx, eax add esi, eax .if ebx < 1000h mov edi, ebx .endif .endw .if retval != 0 push pSndComBuff pop retval .else invoke free, pSndComBuff .endif .endif mov eax, retval ret Senddatr endp align 10h ;################################################################ WinMain proc uses edi esi ebx pArgr:dword LOCAL WndClass : WNDCLASSA LOCAL Msg : dword mov ebx, pArgr xor esi, esi mov WndClass.style, esi mov WndClass.lpfnWndProc, offset WinProc mov WndClass.cbClsExtra, esi mov WndClass.cbWndExtra, esi mov eax, (CLIENT_SESION ptr [ebx]).hInst mov WndClass.hInstance, eax mov WndClass.hIcon, esi invoke LoadCursor, (CLIENT_SESION ptr [ebx]).hInst, IDC_ARROW mov WndClass.hCursor, eax mov eax, offset szClassName mov WndClass.lpszClassName, eax mov WndClass.hbrBackground, esi mov WndClass.lpszMenuName, esi invoke RegisterClassA, addr WndClass 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 mov (CLIENT_SESION ptr [ebx]).hWind, eax invoke ShowWindow, eax, SW_SHOWDEFAULT invoke SetEvent, (CLIENT_SESION ptr [ebx]).hEvenr .while (1) invoke GetMessageA, addr Msg, esi, esi, esi .if eax == 0 .break .endif invoke TranslateMessage, addr Msg invoke DispatchMessageA, addr Msg .endw ret WinMain endp align 10h ;############################################################# WinProc proc uses edi esi ebx hWnd:dword, Msg:dword, wParam:dword, lParam:dword LOCAL winRect : RECT LOCAL paintdt : PAINTSTRUCT LOCAL hDC : dword LOCAL pBits : dword LOCAL pbmi : dword .if Msg == WM_NEXT_FRAM invoke InvalidateRect, hWnd, 0, 0 .elseif Msg == WM_CLOSE invoke GetWindowLong, hWnd, GWL_USERDATA mov (CLIENT_SESION ptr [eax]).stopFl, 1 invoke PostQuitMessage, 0 ; .elseif Msg == WM_LBUTTONDOWN ; invoke WindowEvents, hWnd, MOUSEEVENTF_LEFTDOWN, wParam, lParam ; .elseif Msg == WM_LBUTTONUP ; invoke WindowEvents, hWnd, MOUSEEVENTF_LEFTUP, wParam, lParam ; .elseif Msg == WM_MBUTTONDOWN ; invoke WindowEvents, hWnd, MOUSEEVENTF_MIDDLEDOWN, wParam, lParam ; .elseif Msg == WM_MBUTTONUP ; invoke WindowEvents, hWnd, MOUSEEVENTF_MIDDLEUP, wParam, lParam ; .elseif Msg == WM_RBUTTONDOWN ; invoke WindowEvents, hWnd, MOUSEEVENTF_RIGHTDOWN, wParam, lParam ; .elseif Msg == WM_RBUTTONUP ; invoke WindowEvents, hWnd, MOUSEEVENTF_RIGHTUP, wParam, lParam ; .elseif Msg == WM_MOUSEMOVE ; invoke WindowEvents, hWnd, MOUSEEVENTF_MOVE, wParam, lParam ; .elseif Msg == WM_KEYDOWN ; invoke keybd_event, wParam, lParam, 1, 0 ; .elseif Msg == WM_KEYUP ; invoke keybd_event, wParam, lParam, KEYEVENTF_KEYUP, 0 .elseif Msg == WM_CREATE mov ecx, lParam invoke SetWindowLong, hWnd, GWL_USERDATA, [ecx] .elseif Msg == WM_PAINT invoke GetWindowLong, hWnd, GWL_USERDATA mov ebx, (CLIENT_SESION ptr [eax]).pLcBuff lea eax, [ebx+sizeof BITMAPFILEHEADER] mov pbmi, eax mov eax, (BITMAPFILEHEADER ptr [ebx]).bfOffBits add eax, ebx mov pBits, eax add ebx, sizeof BITMAPFILEHEADER invoke BeginPaint, hWnd, addr paintdt mov hDC, eax invoke SetStretchBltMode, hDC, STRETCH_HALFTONE invoke GetClientRect, hWnd, addr winRect mov ecx, winRect.bottom sub ecx, winRect.top mov edx, winRect.right sub edx, winRect.left invoke StretchDIBits, hDC, 0, 0, edx, ecx, 0, 0, (BITMAPINFOHEADER ptr [ebx]).biWidth, (BITMAPINFOHEADER ptr [ebx]).biHeight, pBits, pbmi, DIB_RGB_COLORS, SRCCOPY invoke EndPaint, hWnd, addr paintdt .else invoke DefWindowProcA, hWnd, Msg, wParam, lParam .endif ret WinProc endp align 10h ;################################################################ GetNextFrame proc uses edi esi ebx pStatFram:dword, pOutBuff:dword LOCAL dwHeight : dword LOCAL dwWidth : dword LOCAL pArrayd : dword LOCAL linLen : dword LOCAL Reslt : dword LOCAL ResLin : dword mov Reslt, -1 mov ebx, pStatFram add ebx, sizeof BITMAPFILEHEADER mov eax, (BITMAPINFOHEADER ptr [ebx]).biWidth mov dwWidth, eax mov eax, (BITMAPINFOHEADER ptr [ebx]).biHeight mov dwHeight, eax mov eax, dwWidth movzx ecx, word ptr (BITMAPINFOHEADER ptr [ebx]).biBitCount mul ecx shr eax, 3 mov ResLin, eax mov edi, pStatFram add edi, (BITMAPFILEHEADER ptr [edi]).bfOffBits mov ecx, dwHeight dec ecx mul ecx add edi, eax mov esi, pOutBuff .if dword ptr [esi] != 0 mov eax, [esi] shl eax, 2 add esi, 4 mov pArrayd, esi add esi, eax xor ebx, ebx dec dwHeight .while ebx != dwHeight push ResLin pop linLen mov ecx, pArrayd movzx eax, word ptr [ecx] .if eax == ebx movzx eax, word ptr [ecx+2] mov ecx, eax and ecx, 0f000h .if (ecx == 1000h) sub eax, 1000h push eax invoke XorBuffer, esi, edi, ResLin pop linLen .elseif (ecx == 7000h) sub eax, 7000h push eax invoke XorBuffer1, esi, edi, ResLin pop linLen .elseif (ecx == 2000h) sub eax, 2000h push eax mov edx, edi add edx, ResLin invoke memcopy_, edi, edx, ResLin pop linLen .elseif (ecx == 8000h) invoke memcopy_, edi, esi, ResLin .endif add pArrayd, 4 add esi, linLen .endif sub edi, ResLin inc ebx .endw mov Reslt, 0 .endif mov eax, Reslt ret GetNextFrame endp align 10h ;############################################################$ XorBuffer proc uses edi esi ebx pSource:dword, pDest:dword, sizBuff:dword LOCAL trguk:dword mov esi, pSource mov edi, pDest mov eax, sizBuff xor ecx, ecx shr eax, 3 mov edx, eax add edx, esi mov ebx, [esi] add esi, 4 .while sizBuff != 0 bts ebx, ecx jnc @f mov al, byte ptr [edx] inc edx mov [edi], byte ptr al @@: inc ecx .if ecx == 32 mov ebx, [esi] xor ecx, ecx add esi, 4 .endif dec sizBuff inc edi .endw ret XorBuffer endp align 10h ;####################################################### XorBuffer1 proc uses edi esi ebx pSource:dword, pDest:dword, sizBuff:dword mov esi, pSource movzx ebx, byte ptr [esi] inc esi .while ebx != 0 movzx eax, word ptr [esi] movzx ecx, byte ptr [esi+2] mov edi, pDest mov [edi+eax], byte ptr cl add esi, 3 dec ebx .endw ret XorBuffer1 endp align 10h ;####################################################### memcopy_ proc uses edi esi ebx pDest:dword, pSource:dword, sizeDat:dword mov ecx, sizeDat mov esi, pSource mov edi, pDest mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb ret memcopy_ endp align 10h ;####################################################### WindowEvents proc uses edi esi ebx hWd:dword, msg:dword, wPrm:dword, lPrm:dword LOCAL pSendBuff : dword LOCAL winRect : RECT invoke GetWindowLong, hWd, GWL_USERDATA mov ebx, eax invoke malloc, sizeof MOUS_PACK mov pSendBuff, eax invoke GetClientRect, hWd, addr winRect mov ecx, winRect.right sub ecx, winRect.left mov eax, lPrm and eax, 0ffffh invoke MulDiv, eax, (CLIENT_SESION ptr [ebx]).dWidth, ecx mov ecx, pSendBuff mov (MOUS_PACK ptr [ecx]).Wid, eax mov ecx, winRect.bottom sub ecx, winRect.top mov eax, lPrm shr eax, 16 invoke MulDiv, eax, (CLIENT_SESION ptr [ebx]).dHeight, ecx mov ecx, pSendBuff mov (MOUS_PACK ptr [ecx]).Hed, eax mov eax, msg mov (MOUS_PACK ptr [ecx]).EvTyp, eax mov ecx, 'MOUS' invoke Senddatr, (CLIENT_SESION ptr [ebx]).hSox, ecx, pSendBuff, sizeof MOUS_PACK mov eax, 1 ret WindowEvents endp align 10h ;####################################################### end start
climbers > библиотеки вроде как подгружены Библиотеки нужны на этапе линковки. У тебя ругается ассемблер. Добавь прототипы Код (Text): malloc proto C :dword free proto C :dword memset proto C :dword, :dword, :dword memcpy proto C :dword, :dword, :dword