Principio de Troyano ASM

Iniciado por Vaagish, 15 Mayo 2013, 02:44 AM

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

cpu2

Cita de: Vaagish en 28 Mayo 2013, 07:26 AM

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:

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.

Vaagish

Gracias cpu2! Ahora lo intentare !!

las constantes las declare para no escibir una y otra vez los valores mientras probaba como hacer funcionar esto que explicas con tanta naturalidad jajaja

por otro lado,, es verdad, aun no domino el arte de los registros y el stack...hay cosas que aun no se  :-\ pero mi experiencia dice: "Hacer y entender" ( Aunque un libro tampoco estaria mal en asm ) jajajaja Igual, juro que he leido! ( Hace 2 meses siquiera pensaba en programar en asm... )

Saludos!