[Duda] Estructuras

Iniciado por cpu2, 6 Febrero 2013, 16:56 PM

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

cpu2

Cita de: mDrinky 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?

Exacto, tambien lo podria hacer con PF y unas reglas con NAT, pero me gustaria saber programarlo.

Cita de: mDrinky en 10 Febrero 2013, 16:05 PM
Eso se hace mov mov o con push y pop facilmente, ejemplo:

En la sección data:
Código (asm) [Seleccionar]
struct Numeros
    Numero1        dd ?
    Numero2        dd ?
ends

mNumeros        Numeros ?


En la code:

Código (asm) [Seleccionar]
mov eax,1
mov [mNumeros.Numero1],eax
mov eax,2
mov [mNumeros.Numero2],eax


Eso ya lo se hacer, no me explico bien joder  :xD

Con push seria así, como la de arriba

Código (asm) [Seleccionar]
pushw $0x0201

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.

fary

Quieres usar la pila como si fuera una estructura?

cambiar la dirección de origen

A que llamas direccion de origen?

Un byte a la izquierda.

cpu2

Cita de: mDrinky en 10 Febrero 2013, 19:07 PM
Quieres usar la pila como si fuera una estructura?

Exacto.

Cita de: mDrinky en 10 Febrero 2013, 19:07 PM
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.

fary

Simulando una estructura como la que puse anteriormente:

Código (asm) [Seleccionar]
include 'win32ax.inc'

.data
  ;struct Numeros
  ;    Numero1        dd ?
  ;    Numero2        dd ?
  ;ends
  var           dd ?

.code
start:

  push 0x1 ; Numero1
  push 0x2 ; Numero2

  push ebp
  mov ebp,esp

  mov dword[ebp+4],3    ; Modificamos Numero2
  mov dword[ebp+8],4    ; Modificamos Numero1

  ; el puntero a la estructura seria ebp

  mov esp,ebp
  pop ebp

  ret
.end start          


De todas formas hacer esto es una tonteria y no te lo recomiendo para nada.

un saludo.
Un byte a la izquierda.

cpu2

#14
Cita de: mDrinky en 11 Febrero 2013, 13:23 PM
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 (asm) [Seleccionar]
.section .data

ip:

ip_tos:

.byte 0

ip_len:

.word 0

ip_id:

.word 0

ip_off:

.word 0

ip_ttl:

.byte 0

ip_p:

.byte 0

ip_sum:

.word 0

in_addr:

ip_src:

.long 0x0100007f

ip_dst:

.long 0


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.

fary

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!
Un byte a la izquierda.