Título: [Duda] Estructuras Publicado por: xv0 en 6 Febrero 2013, 16:56 pm Hola
Cuando una función requiere una estructura cargo los valores al stack, y los paso como dirección, pero la pregunta es la siguiente. Quiero rellenar la estructura tcphdr, el encabezado tcp, pero esta no requiere que la pase a ninguna función, como se hace? Un saludo. Título: Re: [Duda] Estructuras Publicado por: MCKSys Argentina en 6 Febrero 2013, 18:00 pm Fijate esto: http://foro.elhacker.net/programacion_cc/enviar_paquetes_tcpip-t357637.0.html (http://foro.elhacker.net/programacion_cc/enviar_paquetes_tcpip-t357637.0.html)
De ahi, sale esto:http://dlerch.blogspot.com.es/2007/05/raw-sockets.html (http://dlerch.blogspot.com.es/2007/05/raw-sockets.html) Saludos! Título: Re: [Duda] Estructuras Publicado por: xv0 en 6 Febrero 2013, 20:07 pm ¿Pero cómo implemento esa estructura a ASM?
Cómo sabe GAS o GCC que los valores son para esa estructura, porque no requiere pasarla a ninguna función. Un saludo y gracias. P.D: No dispongo de include, utilice la directiva pero así no compila. Título: Re: [Duda] Estructuras Publicado por: MCKSys Argentina en 7 Febrero 2013, 14:39 pm En el ejemplo de la pagina, usa esto:
Código
Ahora, usando Google, llegamos a un .h que contiene una de las structs: http://freebsd.active-venture.com/FreeBSD-srctree/newsrc/netinet/tcp.h.html (http://freebsd.active-venture.com/FreeBSD-srctree/newsrc/netinet/tcp.h.html) Ahi está definida la estructura tcphdr en C: Código
Inicializa todo con ceros y listo (ojo los tamaños). Saludos! PD: Otra fuente: http://ranger.uta.edu/~odell/TCP.H (http://ranger.uta.edu/~odell/TCP.H) Ten en cuenta que justo despues de la estructura IP viene la TCP (para eso usa el tamaño de la estructura ip con sizeof). Título: Re: [Duda] Estructuras Publicado por: xv0 en 7 Febrero 2013, 15:38 pm Ya miré las estrucuras, lo que pasa es que no sabia que hacer.
Tengo que hacer todo eso en la sección .data, y luego ir rellenando la estructura no? Es lo que he visto cuando ago un disassembler. Se puede hacer todo esto en la pila? Así fue como lo hice con la sockaddr_in. Un saludo. Título: Re: [Duda] Estructuras Publicado por: MCKSys Argentina en 7 Febrero 2013, 18:36 pm Claro, siempre y cuando reserves el espacio necesario...
Título: Re: [Duda] Estructuras Publicado por: xv0 en 8 Febrero 2013, 14:38 pm Vale, yo no reserve espacio para la sockaddr_in, bueno tendria que asignar como mucho el tamaño del buffer, que es lo veo en el primer código que me pasaste.
Esto se podría hacer con esas dos? Código
Eso seria pasar la estructura sockaddr_in ala función bind, connect etc... Pero hay estaba mi pregunta, tcphdr y iphdr no requieren ser pasadas a ninguna función, como se iba a saber que los datos del stack eran para esas dos estructuras. Solamente cargo los valores en el stack y ya esta? La función getsockopt le da la opción al descriptor para que los cabezales se tomen en cuenta. Código: #define IP_HDRINCL 2 /* int; header is included with data */ Pero eso lleva de nuevo amí pregunta, como sabén que los datos del stack son para esas estrcucturas. Un saludo. P.D: Perdona, soy un pesado, pero es que estas cosas no salen en los libros pffff... Título: Re: [Duda] Estructuras Publicado por: fary en 9 Febrero 2013, 06:17 am Vamos a ver... si una función no va a necesitar una estructura no se escribe esa estructura.. es así de facil, pero no en ensamblador, en cualquier lenguaje.
Cual es tu problema? un saludo. Título: Re: [Duda] Estructuras Publicado por: xv0 en 10 Febrero 2013, 15:57 pm Vamos a ver... si una función no va a necesitar una estructura no se escribe esa estructura.. es así de facil, pero no en ensamblador, en cualquier lenguaje. Cual es tu problema? un saludo. Mi problema es que quiero cambiar la dirección de origen, y no se como implementarlo en ASM. Al ser posible como el ejemplo de arriba, que ya veo que a causado más confusión. Un saludo. P.D: Un ejemplo me iría de perlas. Título: Re: [Duda] Estructuras Publicado por: fary en 10 Febrero 2013, 16:05 pm A ver si me entero... quieres rellenar tu una estructura a mano envez de que te lo haga una API, no?
Eso se hace mov mov o con push y pop facilmente, ejemplo: En la sección data: Código
En la code: Código
y listo :xD Esa era tu duda? un saludo! Título: Re: [Duda] Estructuras Publicado por: xv0 en 10 Febrero 2013, 17:24 pm A ver si me entero... quieres rellenar tu una estructura a mano envez de que te lo haga una API, no? Exacto, tambien lo podria hacer con PF y unas reglas con NAT, pero me gustaria saber programarlo. Eso se hace mov mov o con push y pop facilmente, ejemplo: En la sección data: Código
En la code: Código
Eso ya lo se hacer, no me explico bien joder :xD Con push seria así, como la de arriba Código
Yo lo que quiero es cargar esa estructura para cambiar la dirección de origen, nada más, pero tiene que ser desde el stack. El ejemplo que puse yo es de la sockaddr_in, para que me entendieran. Un saludo. Título: Re: [Duda] Estructuras Publicado por: fary en 10 Febrero 2013, 19:07 pm Quieres usar la pila como si fuera una estructura?
Código: cambiar la dirección de origen A que llamas direccion de origen? Título: Re: [Duda] Estructuras Publicado por: xv0 en 10 Febrero 2013, 22:06 pm Quieres usar la pila como si fuera una estructura? Exacto. A que llamas direccion de origen? Un miembro de la estructura ip, ip_src, como dije anteriormente solo quiero tocar eso de la estructura. Un saludo. Título: Re: [Duda] Estructuras Publicado por: fary en 11 Febrero 2013, 13:23 pm Simulando una estructura como la que puse anteriormente:
Código
De todas formas hacer esto es una tonteria y no te lo recomiendo para nada. un saludo. Título: Re: [Duda] Estructuras Publicado por: xv0 en 12 Febrero 2013, 02:16 am De todas formas hacer esto es una tonteria y no te lo recomiendo para nada. Es para una shellcode, de ahi viene la tonteria :xD Bueno, aver si esto es válido lo hice en la .section .data. Código
Eso esta bien? Se deja así cargada y ya esta? Si lo quiero hacer como en tú anterior ejemplo, tendría que cargarla directamente en el registro ebp? Un saludo. Título: Re: [Duda] Estructuras Publicado por: fary en 12 Febrero 2013, 10:18 am Entonces estas equivocado, no se hace con la pila :xD se hace ocn al tecnica del delta offset:
http://www.wikilearning.com/curso_gratis/curso_de_programacion_de_virus-infeccion_bajo_windows_i/4312-13 un saludo! |