Encontrar EBP dirección con c++

Iniciado por patilanz, 2 Noviembre 2014, 19:18 PM

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

patilanz

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

ivancea96


patilanz

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 ?

ivancea96


cpu2

Claro que puedes hacer eso, quieres pasar el offset a la variable? lea estaria bien, recuerda usar Inline ASM.


Un saludo.

someRandomCode

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

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

Eternal Idol

Notese que el valor del registro EBP solo tiene sentido en el contexto de la ejecucion de una funcion en particular ...
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

patilanz

Hola gracias por sus respuestas. Lei y consegui encontrar el EPB con assambly

Código (cpp) [Seleccionar]
__int32 direction;
_asm{
MOV direction, EBP
}

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 ?