elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Ingeniería Inversa (Moderadores: karmany, .:UND3R:., MCKSys Argentina)
| | |-+  Ubicación de variable en un proceso[Help]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: Ubicación de variable en un proceso[Help]  (Leído 9,177 veces)
ignorantev1.1


Desconectado Desconectado

Mensajes: 617


/\ Así acabo cuando quiero programar...


Ver Perfil WWW
Ubicación de variable en un proceso[Help]
« en: 24 Octubre 2011, 22:01 pm »

Buenas, He estado toqueteando la memoria de cierto programa, me interesan algunos datos de ciertos offsets, el problema es que cada vez que inicia la aplicación la ubicación de esas variables cambian de offset, mi pregunta:

¿Hay alguna forma de ubicar estas variables atravez, por ejemplo, de una API que me diga en qué dirección se empiezan a alamacenar las variables?  :silbar:

Disculpen, si la pregunta o la idea no está bien redactada, o si el tema ya existe pero no sé como plantearlo en el  buscador, pero estoy en ceros en esto...  :-\

Muchas gracias y saludos!
En línea

_Enko


Desconectado Desconectado

Mensajes: 538



Ver Perfil WWW
Re: Ubicación de variable en un proceso[Help]
« Respuesta #1 en: 24 Octubre 2011, 22:15 pm »

Hola, nunca tuve que hacer algo asi, pero se me ocurre esta solucion:


Si es Objeto (instancia de una clase) de una aplicacion programada con algun lenguaje orientado a objetos, ni idea que hacer.
(seria instancia de una clase creada con new si fuera cpp)

Si es un bloque creado con HeapAlloc, malloc podrias hacer esto:
1)Agregar un segmento extra a la ejecutable con el tamaño suficiente para que entre el bloque creado. (o bien buscar un espacio vacio grande dentro de la ejecutable)
2)En el lugar que se llama HeapAlloc/Malloc, simplemente reemplazas la instruccion por
Código:
mov eax, offset_segmento_nuevo

De esta manera, la ejecutable usaria como nuevo bloque de memoria el segmento extra que le agregaste que siempre estaria en la misma direccion.


Posible problema... cuando se llame a Free la ejecutable tirará un error. Si el bloque es contantemente realocado no va servir. Solo te serviria si llama a HeapAlloc/Malloc una sola vez.


Saludos.
En línea

ignorantev1.1


Desconectado Desconectado

Mensajes: 617


/\ Así acabo cuando quiero programar...


Ver Perfil WWW
Re: Ubicación de variable en un proceso[Help]
« Respuesta #2 en: 25 Octubre 2011, 00:17 am »

No entiendo tu planteamiento(me parece muy técnico), como te digo: "Estoy en ceros"  :-\

No modificaré el programa, ni siquiera pienso hacerlo ya puesto en memoria.
Aunque no conozco de esto, me imagino que existe una posibilidad a mi idea, ya que el mismo programa usa esta, digamos "variable" constantemente, por lo que debe existir una referencia "intacta" al lugar de la variable. Ten por seguro que "ha de ser" una simple variable, corriente, que seguramente ha sido declarada de la forma más común del lenguaje en el que haya sido programada la aplicación(seguramente C++):

Código
  1. Int Variable;

Espero su ayuda!

Saludos y gracias!

En línea

_Enko


Desconectado Desconectado

Mensajes: 538



Ver Perfil WWW
Re: Ubicación de variable en un proceso[Help]
« Respuesta #3 en: 25 Octubre 2011, 00:49 am »

Habria que ver el programa en cuestion.
En el caso de "int Variable" si es cierto, es una direccion fija.

Pero que pasa si es esto:

Código:
class CClass{
public:
    int Variable
};

CClass *MiClase;


MiClase = new CClass;
MiClass->Variable = 5;

al llamar new CClass, la variable se almacena en algun lado de memoria que no es fijo. El offset del puntero de MiClass si es constante, pero a donde apunta si varia.

Hay que ver de que programa en cuestion se trata.
« Última modificación: 25 Octubre 2011, 00:58 am por _Enko » En línea

.:UND3R:.
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.118


Ingeniería inversa / MASM


Ver Perfil WWW
Re: Ubicación de variable en un proceso[Help]
« Respuesta #4 en: 25 Octubre 2011, 02:18 am »

Hola te invito a que lo subas, para ver que tal y comenta detalladamente que parámetros quieres cambiar o que modificación quieres hacerle al programa.

Saludos
En línea


Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)
ignorantev1.1


Desconectado Desconectado

Mensajes: 617


/\ Así acabo cuando quiero programar...


Ver Perfil WWW
Re: Ubicación de variable en un proceso[Help]
« Respuesta #5 en: 25 Octubre 2011, 03:03 am »

No es un programa propio(claro está), no quiero hacerle ninguna modificación al programa, solo quiero leer datos en la memoria del programa, creo no me están entiendo.

Saludos!
En línea

tena


Desconectado Desconectado

Mensajes: 668



Ver Perfil
Re: Ubicación de variable en un proceso[Help]
« Respuesta #6 en: 25 Octubre 2011, 04:26 am »

¿la direccion en donde se le asigna el valor a la variable no te sirve?

Ej.
401200 mov [variable] , valor

Si la direccion de la variable cambia, pues ponele un bpmw para ver donde le asigna un valor, y de esta forma tendrias por ej que en 401200 se le asigna el valor a dicha variable.

Luego te haces un loader debuguer, con el componente de Suei o lo que sea, un script etc. pones un bp en 401200, y cuando pare en el bo tomas el contenido de la variable.

o directamente desde ollydbg, le pones un bp conditional log, que cada vez que pase por 401200 te loguee el valor de [variable].

slds
En línea

tena


Desconectado Desconectado

Mensajes: 668



Ver Perfil
Re: Ubicación de variable en un proceso[Help]
« Respuesta #7 en: 25 Octubre 2011, 04:45 am »

o como explica en este tute
http://foro.elhacker.net/ingenieria_inversa/tutorial_hallar_pointers_offset_con_ce_mhs5-t342767.0.html
En línea

.:UND3R:.
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.118


Ingeniería inversa / MASM


Ver Perfil WWW
Re: Ubicación de variable en un proceso[Help]
« Respuesta #8 en: 25 Octubre 2011, 16:09 pm »

No es un programa propio(claro está), no quiero hacerle ninguna modificación al programa, solo quiero leer datos en la memoria del programa, creo no me están entiendo.

Saludos!

Creo que te estoy entendiendo quieres saber localizar el lugar(address) en donde el programa realiza una modificación de una variable.

ayer realicé un tutorial sobre eso explica como encontrar una variable de un juego y luego encontrar el address en donde modifica esa variable:

http://foro.elhacker.net/ingenieria_inversa/tutorialcreacion_de_trainers_con_ollydbg_y_cheat_engine-t342664.0.html

Si tienes dudas con el tutorial (si es que solventa la pregunta que tienes jeje) te las respondo inmediatamente, saludos
En línea


Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)
ignorantev1.1


Desconectado Desconectado

Mensajes: 617


/\ Así acabo cuando quiero programar...


Ver Perfil WWW
Re: Ubicación de variable en un proceso[Help]
« Respuesta #9 en: 25 Octubre 2011, 19:06 pm »

@Under

Al poner el BP en la posición de memoria de la variable que necesito me aparece lo siguiente:

Citar
MOV EAX, [Local.73]

Eso no me sirve, ya que sigue siendo relativa la ubicación que busco.

Saludos y gracias!
En línea

Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines