Cita de: Vaagish en 28 Mayo 2013, 07:26 AMCódigo [Seleccionar]
INET equ 0100007fh
HTOONS equ 0b8220200h
Para que declaras eso? si vas a cargar directamente los valores en la pila.
El de htons esta mal, solo es 0xb822, 0x2 es el valor de AF_INET y el 0x00 es el valor que pones al miembro sin_len de la estructura sockaddr_in, que no existe por lo que veo en windows me confundí pensaba que era como unix-like, linux etc...
MSDN:
Código [Seleccionar]
struct sockaddr_in{
short sin_family; <- 0x2 1byte
unsigned short sin_port; <- 0xb822 2 bytes
struct in_addr sin_addr; <- 0x0100007f 4 bytes
char sin_zero[8]; no es necesario.
};
Código (asm) [Seleccionar]
push 0x00010000
push 0x7fb82202
mov rsi, rsp
Sería en mi caso, muevo la dirección de la estructura sockaddr_in al 2 arg, tú la tendrías que copiar a addr, por lo que veo en esos invoke, o "pushear" y luego hacer un call que es lo que hace ese invoke si no me equivoco.
Haciendo eso creo que podrías tener problemas con el ret, incrementa el stack luego de copiar la estructura a addr por el valor sustraído, ya sabes cual es.
Código (asm) [Seleccionar]
mov sa.sin_addr, INET
push INET
mov ax, HTOONS
push HTOONS
Eso no es lógico, creo que haces cosas que no entiendes.
Un saludo.