Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: patilanz en 2 Noviembre 2014, 19:18 pm



Título: Encontrar EBP dirección con c++
Publicado por: patilanz en 2 Noviembre 2014, 19:18 pm
Hola estoy haciendo un programa con el que quiero cambiar una dirección no estática. Vi aquí MOV DWORD PTR SS:[EBP-8],ECX que la dirección que quiero encontrar es EBP-8 pero ahora me toca encontrar EBP.

Como se hace con c++?

Saludos


Título: Re: Encontrar EBP dirección con c++
Publicado por: ivancea96 en 2 Noviembre 2014, 20:19 pm
Puedes usar ensamblador:

http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html#s3 (http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html#s3)

Eso va sobre el inline Assembly de GCC.


Título: Re: Encontrar EBP dirección con c++
Publicado por: patilanz en 2 Noviembre 2014, 20:25 pm
Para vs seria esto no ?
http://msdn.microsoft.com/es-es/library/4ks26t93.aspx

Se puede asignar la dirección de EBP a una variable de c++ con ensamblador ?


Título: Re: Encontrar EBP dirección con c++
Publicado por: ivancea96 en 2 Noviembre 2014, 21:03 pm
Precisamente EBP es un registro.


Título: Re: Encontrar EBP dirección con c++
Publicado por: xv0 en 2 Noviembre 2014, 22:04 pm
Claro que puedes hacer eso, quieres pasar el offset a la variable? lea estaria bien, recuerda usar Inline ASM.


Un saludo.


Título: Re: Encontrar EBP dirección con c++
Publicado por: someRandomCode en 2 Noviembre 2014, 22:50 pm
Para vs seria esto no ?
http://msdn.microsoft.com/es-es/library/4ks26t93.aspx

Se puede asignar la dirección de EBP a una variable de c++ con ensamblador ?

Inline assembly como te dijeron che..
Lo unico aparte de lo que te dijeron que te puedo decir es que el valor que este en EBP para leerlo estilo el retorno de una funcion tenes que moverlo a EAX antes del ret


Título: Re: Encontrar EBP dirección con c++
Publicado por: Eternal Idol en 2 Noviembre 2014, 23:29 pm
Notese que el valor del registro EBP solo tiene sentido en el contexto de la ejecucion de una funcion en particular ...


Título: Re: Encontrar EBP dirección con c++
Publicado por: patilanz en 8 Noviembre 2014, 00:22 am
Hola gracias por sus respuestas. Lei y consegui encontrar el EPB con assambly

Código
  1. __int32 direction;
  2. _asm{
  3. MOV direction, EBP
  4. }
Pero esto es el EBP de mi programa que se esta ejecutando no del programa que quiero cambiar de valor. Como ejecuto codigo assambly en un proceso por separado.

Pense cambiar una parte de la memoria vista previamente con ollydbg y encontre una parte que me puede servir:

de MOV DWORD PTR SS:[EBP-8],ECX
a MOV DWORD PTR SS:[EBP-8],mi_numero

Pero como el tamano no es el mismo con olly quito la opcion de keep size y me lo hace solo. Me agrega 3  NOP y creo que modifica todas las demás instrucciones.

Lo intente directamente pero no hay espacio y se produce un overflow. Tengo que buscar otra instrucción o hay otras maneras mejores ?

Saludos

@Esto ya iría en la parte de Ingeniería Inversa no ?