Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: weggi en 6 Noviembre 2011, 22:41 pm



Título: diferencia entre RVA y offset?
Publicado por: weggi en 6 Noviembre 2011, 22:41 pm
hola e leido unos cuantos temas al respecto y no lo logro comprender  :huh:
si fueran tan amables de hacerme una pequeña explicacion entendible porfavor  :-\

por ejemplo la función ExitProcess de kernel32.dll

RVA      : 0x0001CAFA
OFFSET : 0x7C81CAFA


Título: Re: diferencia entre RVA y offset?
Publicado por: .:UND3R:. en 7 Noviembre 2011, 02:54 am
Hola RVA Relative Value address este es la dirección en memoria de un programa sin su image base

Offset o raw (creo que son lo mismo) es la ubicación física de un archivo en el disco



Saludos


Título: Re: diferencia entre RVA y offset?
Publicado por: _Enko en 7 Noviembre 2011, 05:05 am
Citar
Offset o raw (creo que son lo mismo) es la ubicación física de un archivo en el disco
Si se trata del offset de un archivo si.

Si se trata del offset de una variable, generalmente se refiere  al VirtualAddress de esa variable. (ImageBase + RVA de la variable)

RAW  significa CRUDO, algo que no se le dio un formato  y viene tal cual se genera

Código:
RVA    : 0x0001CAFA
OFFSET : 0x7C81CAFA
ImgBase: 0x7C800000 (kernel32.dll)


Título: Re: diferencia entre RVA y offset?
Publicado por: weggi en 7 Noviembre 2011, 18:43 pm
Hola Gracias por las respuestas me acaban de aclararme la duda  ;-)
_EnKo gracias por el ejemplo soy un poco duro de la cabeza con esto  :laugh:

saludos


Título: Re: diferencia entre RVA y offset?
Publicado por: karmany en 8 Noviembre 2011, 23:48 pm
Cuando se habla de Offset en el archivo físico se habla de:
Raw Offset

Cuando se habla de Offset relacionado con la carga del programa en memoria se habla de:
Virtual Offset

Cuando hablamos de offset nos referimos a un desplazamiento, aunque normalmente se suele utilizar para relacionar el Raw Offset. Al igual que dice _Enko algunos autores cuando hablan de offset suelen utilizarlo para hablar de VA.

La RVA (Relative Virtual Address) es una dirección virtual relativa, que corresponde a la VA cargada en memoria a la cuál se le resta la Image Base. En el ejemplo que te ha puesto _Enko, el valor que él ha llamado OFFSET corresponde a la VA.

Para que veas un poco la diferencia de valores entre offset (raw) y RVA te recomiendo que uses este programa mio y verás dichos datos:
http://foro.elhacker.net/ingenieria_inversa/file_location_calculator_v032_por_karmany-t262979.0.html (http://foro.elhacker.net/ingenieria_inversa/file_location_calculator_v032_por_karmany-t262979.0.html)


Título: Re: diferencia entre RVA y offset?
Publicado por: _Enko en 9 Noviembre 2011, 00:10 am
Por cierto, hay una muy buena explicacion del tema aqui:
http://stackoverflow.com/questions/2170843/va-virutual-adress-rva-relative-virtual-address
(es la primer respuesta)
Aviso: esta en ingles y es para leerlo con paciencia.

gracias por la aclaracion karmany, no sabia que se refería al offset en un archivo como "raw offset"


Título: Re: diferencia entre RVA y offset?
Publicado por: Tinkipinki en 9 Noviembre 2011, 07:14 am
Hace tiempo yo tambien me preguntaba lo mismo.
Mirate la respuesta de Nox en el post:
http://foro.elhacker.net/ingenieria_inversa/como_conocer_el_offset_de_una_direccion_en_ollydbg-t338573.0.html (http://foro.elhacker.net/ingenieria_inversa/como_conocer_el_offset_de_una_direccion_en_ollydbg-t338573.0.html)

Saludos