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

 

 


Tema destacado:


+  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,178 veces)
.: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 #10 en: 25 Octubre 2011, 19:55 pm »

@Under

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

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

Saludos y gracias!

si pones un breakpoint on memory en Local.73?, el método del tutorial serviría para encontrar el address dentro del ejecutable, que es lo que buscas.
 ya que encontraste MOV EAX, [Local.73] puedes hacer un injerto para operar con el contenido de Local.73 y de manera indirecta tendría siempre la variable.
también puede ser que la variable sea asignada por el sistema (VirtualAlloc) y desde el retorno de tal API podrías hacer un injerto que guardara en otro lugar el valor de EAX, que sería el VA en donde se localizó la nueva memoria virtual

Saludos
En línea


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


Desconectado Desconectado

Mensajes: 668



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

Si solo queres loguear valores, Podes poner un bp conditional log en la direccion de dicha variable, y que te loguee el contenido de la [variable] cuando escribe ahi.

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 #12 en: 28 Octubre 2011, 04:36 am »

Mmmm, pues sigo intentando, las posiciones varían segun la maquina, lo de "hacer el injerto" no me sirve...



Intentaré lo del bp condicional... a ver qué resulta...

También he leido algo y me topé con que "base address", no sé qué con eso...

A ver, a ver: ¿Cómo encuentro la dirección absoluta ese dato?, Sumandole qué con qué o restandole qué con qué... ¿Quién ayuda?
Saludos y gracias!
« Última modificación: 28 Octubre 2011, 04:44 am por ignorantev1.1 » 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 #13 en: 28 Octubre 2011, 05:06 am »

Puedes utilizar un script que hice en donde colocas la address y te entrega el RAW (lo que comúnmente muestran los editores hexadecimales)
 

http://foro.elhacker.net/ingenieria_inversa/scriptscript_para_calcular_offset_de_un_ejectuable-t340094.0.html

Si eres de los que quiere entender de manera manual y no a través de script puedes ver el comentario del script ya que expliqué detalladamente como es la "fórmula"

de todas formas para ejecutar el script necesitas el plugins para olly OllyScript

luego vas a la pestaña plugins verás OllyScript te ubicas en el y presionas RUN y eliges el script que está en el post que previamente lo guardaste en txt y lo eliges con eso saldrá una ventana preguntando el address a calcular tan simple como eso

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 #14 en: 29 Octubre 2011, 19:20 pm »

A ver, a ver si te entiendo:

¿Los datos se empiezan a almacenar en la sección ".data"?
Bueno, supongo que a esa sección corresponde "RAW" o "RVA" del que haces referencia, pero para que sea valido es necesario sumarle "imagebase"... ¿sí?

Ahora:

Estos datos se pueden obtener leyendo la info PE del programa, y el programa para cualquier maquina tiene la misma cabecera(ya lo comprobé), o sea que "RAW" + "imagebase" es igual para todas las maquinas, pero hay algo que cambia, y supongo "en tiempo de ejecución".

Disculpame si no entiendo, pero no tengo mucha experiencia en esto, así que si estoy mal, por favor, ¿a qué datos te refieres?...

Gracias y saludos!
En línea

_Enko


Desconectado Desconectado

Mensajes: 538



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

No vi el programa en cuestion, pero estoy seguro que en este momento el problema que estas teniendo es porque no entiendes el concepto de un puntero, y para el caso, hasta puede ser puntero a puntero a putnero etc...

suponte este codigo
Código:
int var_a = 5

Que significa eso?
"var_a"  es un entero igual a 5.

pero ese en un lenguaje de programacion. para el cpu no existe tal cosa como "var_a"

Para el cpu existe una direccion de momeria, digamos 40100. El contenido de esa direccion de memoria es 5.

Para que veas la diferencia en pseudo codigo de maquina:
Código:
var_a seria equivalente a 40100
[var_a] contenido var_a seria equivalente a 5
[40100] conenido de 40100 es equivalente a 5

Ahora que pasa si el contenido es una direccion de memoria?
Código:
[var_a] = 40200
contenido de var_a es equivalente a 40200 que es otra direccion de memoria

por ejemplo, se podria dar el caso de
var_b = 6
donde var_b seria equivalente a la direccion de memoria 40200

de esta manera, var_a apuntaria a donde se encuentra var_b

Entonces, para llegar a "6" a partir de var_a tendrias que:
Citar
tomar el contenido de var_a
ese contenido seria 40200
luego, tomar el contenido de 40200
y ahi llegarias a  [40200]  == 6
recuerda que puede ser puntero a puntero a puntero a puntero a "tu variable"


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 #16 en: 29 Octubre 2011, 22:25 pm »

@Enko_

:xD Claro que sé lo que es un puntero, ese no es el problema, en serio.

Mira:



Supongamos que en otra maquina, abro el proceso y leo el offset 4146D2, me dá "0". Por que, supongo, el rango de valores no es el mismo, ¿por qué?, no sé, memoria disponible, OS, 86 o 64, ¿qué sé yo?, pero no es el mismo...

Saludos y gracias!




En línea

_Enko


Desconectado Desconectado

Mensajes: 538



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

si la variable realmente es "LOCAL" entonces esta metida en la pila, y no en el segmento .DATA

4146D2 es .CODE segment, es decir, no es la variable, es la direccion de ejecucion del programa, no tiene nada que ver con una variable.. la variable serial LOCAL.78 y no tenemos ni idea de lo que es... como ya te dije, si realmente es local, es una direccion de la pila.

Estas traceando algo mal... y con la screenshot no se ayuda mucho



« Última modificación: 30 Octubre 2011, 00:29 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 #18 en: 30 Octubre 2011, 16:32 pm »

@Enko_

:xD Claro que sé lo que es un puntero, ese no es el problema, en serio.

Mira:



Supongamos que en otra maquina, abro el proceso y leo el offset 4146D2, me dá "0". Por que, supongo, el rango de valores no es el mismo, ¿por qué?, no sé, memoria disponible, OS, 86 o 64, ¿qué sé yo?, pero no es el mismo...

Saludos y gracias!






Cito la info de mi script:
Citar
Fórmula:
     RVA: Valor relativo en memoria (Relative Value Address)                                 
     VA: Valor absoluto en memoria (Value Absolute)                                                               
     RAW: Dirección en el disco
 
     -OllyDBG Nos muestra por defecto direciones de tipo VA
     VA(Value Absolute)=ImageBase+RVA     
 
     Ejemplo: 40101D=400000(ImageBase)+101D(RVA)
 
     -Si queremos saber el raw de un address ubicado en la cabezera PE (PE header)
     se debe restar address-ImageBase=RVA=RAW     
 
     Ejemplo: 400056(VA)-400000(ImageBase)=56h(RAW)   
 
     -Si queremos saber el raw de un address ubicado en una sección     
     se debe hacer lo siguiente:
 
     Obtener el RVA del addres:
     Address-ImageBase=RVA
 
     luego a RVA restarle los siguientes valores:     
     RVA-(VirtualAddress-PointerToRawData)=RAW     
 
     *VirtualAddress y PointerToRawData varían en cada sección


No todas las cabeceras PE son iguales,el address que comentas es un VA que es lo muestra OllyDBG con el script colocas esa address y te dará el RAW teniendo el RAW que es la dirección del ejecutable en el disco duro abres un editor hexadecimal verás lo mismo, puedes corroborar nopeando el OP-Code del address (click derecho fill with nop's) eso hará que en el address se escriban 90 hexadecimal si con un editor hex pones el RAW deberías ver 90 obviamente si guardaste los cambios

Podrías enviarnos el ejecutable para que te saquemos de las dudas

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 #19 en: 31 Octubre 2011, 18:57 pm »

Citar
No todas las cabeceras PE son iguales

Claro, pero la cabecera del programa en cuestión es la misma para todas las maquinas.

Citar
     RVA: Valor relativo en memoria (Relative Value Address)                                 
     VA: Valor absoluto en memoria (Value Absolute)                                                               
     RAW: Dirección en el disco
 

¿Estos datos son de la info del PE?

No quería llegar a esto, pero si gustan el programa en custión aquí está, solo que deben registrarse para poderlo usar:

http://download.tibia.com/tibia931.exe

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