cierto, ya funciona, desconocia lo que mencionas sobre WSADATA en ensamblador, me dio curiosidad y encontre esto
aqui esta reservado el espacio en ebp y de hecho encontre otro modo de hacerlo
me imagino que hacer esto seria lo mismo, no?
y esta es la razon por la que empece con nasm, encontre varios ejemplos ademas que fue lo primero que vi que era compatible con linux y windows, aunque hice el mismo ejemplo en fasm y la verdad fue mucho mas sencillo, pero tampoco encuentro ejemplos o explicaciones de los mismos, y los que encuentro son para windows, en nasm encuentro un poco mas para linux, pero hay otro problema, como apenas estoy empezando la mayoria de los codigos son sobre shellcodes, exploits, etc... y si todavia no se bien ensamblador, no quiero meterme todavia en esos codigos, mejor paso a paso...
este es el que hice en fasm
compilacion para nasm
gracias a los dos por las respuestas
salu2
Código (asm) [Seleccionar]
lea ecx,dword ptr [ebp-400]
push ecx
push 2
call WSAStartup
aqui esta reservado el espacio en ebp y de hecho encontre otro modo de hacerlo
Código (asm) [Seleccionar]
push ebp
mov ebp,esp
add esp,-500
push ebx
; WSAStartup(MAKEWORD(2,0),&wsaData);
;
lea ecx,dword ptr [ebp-400]
push ecx
push 2
call WSAStartup
me imagino que hacer esto seria lo mismo, no?
Código (asm) [Seleccionar]
push ebp
mov ebp,esp
sub esp, 500
y esta es la razon por la que empece con nasm, encontre varios ejemplos ademas que fue lo primero que vi que era compatible con linux y windows, aunque hice el mismo ejemplo en fasm y la verdad fue mucho mas sencillo, pero tampoco encuentro ejemplos o explicaciones de los mismos, y los que encuentro son para windows, en nasm encuentro un poco mas para linux, pero hay otro problema, como apenas estoy empezando la mayoria de los codigos son sobre shellcodes, exploits, etc... y si todavia no se bien ensamblador, no quiero meterme todavia en esos codigos, mejor paso a paso...
este es el que hice en fasm
Código (asm) [Seleccionar]
format PE console 4.0
entry start
include 'include\win32a.inc'
section '.data' data readable writable
wsadata WSADATA
saddr sockaddr_in
sock_size = $-saddr
sock dd ?
sin_addr dd ?
sin_port dd ?
section '.code' code readable executable
start:
invoke WSAStartup, 0202h, wsadata
invoke socket, AF_INET, SOCK_STREAM, 0
mov[sock], eax
mov[saddr.sin_family], AF_INET
mov[saddr.sin_port], 0xB922
mov[saddr.sin_addr], 0x0100007F
invoke connect, [sock], saddr, sock_size
invoke ExitProcess,0
section '.idata' import data readable writeable
library kernel, 'KERNEL32.DLL',\
winsock, 'WSOCK32.DLL'
import kernel,\
ExitProcess, 'ExitProcess'
import winsock,\
WSAStartup, 'WSAStartup',\
WSACleanup, 'WSACleanup',\
socket, 'socket',\
connect, 'connect',\
sendto, 'sendto',\
closesocket, 'closesocket'
compilacion para nasm
Código [Seleccionar]
nasm -f win32 archivo.asm
gcc archivo.obj -o archivo.exe
gracias a los dos por las respuestas
salu2