Autor
|
Tema: Ubicación de variable en un proceso[Help] (Leído 9,178 veces)
|
.:UND3R:.
|
@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
Mensajes: 668
|
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
Mensajes: 617
/\ Así acabo cuando quiero programar...
|
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:.
|
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.htmlSi 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 OllyScriptluego 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
Mensajes: 617
/\ Así acabo cuando quiero programar...
|
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
|
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 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: 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? [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: 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
Mensajes: 617
/\ Así acabo cuando quiero programar...
|
@Enko_ 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
|
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:.
|
@Enko_ 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: 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
Mensajes: 617
/\ Así acabo cuando quiero programar...
|
No todas las cabeceras PE son iguales Claro, pero la cabecera del programa en cuestión es la misma para todas las maquinas. 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.exeSaludos y gracias!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Como imprimir el valor de una variable definida en una variable...
Scripting
|
nhaalclkiemr
|
5
|
6,511
|
3 Mayo 2007, 17:58 pm
por sirdarckcat
|
|
|
La variable de tipo Object o la variable de bloque With no está establecida
Programación Visual Basic
|
rubeng
|
5
|
12,092
|
17 Septiembre 2007, 00:04 am
por rubeng
|
|
|
Error 91: Variable de tipo object o la variable de bloque with no esta estableci
Programación Visual Basic
|
brus_k10
|
2
|
6,414
|
16 Junio 2009, 16:20 pm
por cassiani
|
|
|
Inyección de archivos en un proceso [1 proceso 2 ejecutables]
« 1 2 3 »
Análisis y Diseño de Malware
|
[Zero]
|
24
|
20,106
|
14 Junio 2013, 15:09 pm
por Cromatico
|
|
|
my.resources.source.replace(variable, variable) Ayuda codedom
.NET (C#, VB.NET, ASP)
|
70N1
|
4
|
4,809
|
19 Octubre 2011, 12:57 pm
por 70N1
|
|