El codigo misterioso ...o es que no lo se ver

Iniciado por Tinkipinki, 11 Septiembre 2011, 21:05 PM

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

Tinkipinki

Hola a todos:
Esto tiene que ver a razon de este post:
http://foro.elhacker.net/ingenieria_inversa/como_conocer_el_offset_de_una_direccion_en_ollydbg-t338573.0.html

Citar
Me surge otra duda:

Si tenemos un programa con el principio de codigo en el Olly por ejemplo en 401000 con un offset 400 pero mas arriba en el Olly no hay codigo pero estamos en el offset 400 per en el editor hex de 400 a 000 hay mas codigo.
¿Pues donde se encuentran estas lineas de codigo que faltan pertenecientes sa las cabeceras en el Olly?

Saludos

Saludos

Иōҳ

No entendí muy bien tu pregunta, pero estudiastes el formato PE?, si el entry point 00401000 su RAW es el offset 400 a eso te refieres?.

Lo que creo que entendí, es que hay más arriba del EntryPoint no?

pues facil:

Formato PE

http://foro.elhacker.net/analisis_y_diseno_de_malware/abril_negro_2008_taller_de_formato_pe_by_ferchu-t208278.0.html

Cabecera DOS
Stub Dos
Cabecera PE
Tabla de secciones
1º sección
2° Sección
N° Secciones

el EP que tu vez en el Olly está en la sección .CODE, así que tenes todo eso antes de las secciones.

Nox.
Eres adicto a la Ing. Inversa? -> www.noxsoft.net

_Enko

#2
nada te impide tener codigo antes del EP.....


section '.data'
;variables

section '.code'
proc1;
proc2;
proc3;

EntryPoint:
push ebp
mov ebp, esp
call proc1;
call proc2;
call proc3;
pop ebp
ret


o bien, en section '.data' en vez de haber variables, puede haber codigo

MCKSys Argentina

Pero para ejecutar en .data (o cualquier otra), deberas modificar el PE header, para que la sección tenga permisos de ejecucion, o bien, darselos usando VirtualProtect...
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


_Enko

#4
No necesariamente. Depende de:
El compilador (Si coloca o no coloca el flag NX, No eXecute)
El SO (segun la version de windows, algunas no le prestan atencion)


section '.data' redeable writeable
xor eax, eax
ret

Si se compila sin el flag NX, el codigo se ejecuta igualmente en winxp y win7 probado.

http://en.wikipedia.org/wiki/NX_bit

Иōҳ

Cita de: MCKSys Argentina en 12 Septiembre 2011, 16:11 PM
Pero para ejecutar en .data (o cualquier otra), deberas modificar el PE header, para que la sección tenga permisos de ejecucion, o bien, darselos usando VirtualProtect...

Es que Fly tiene mente de cracker por eso de modificar el PE, jeje...

CitarNo necesariamente. Depende de:
El compilador (Si coloca o no coloca el flag NX, No eXecute)
El SO (segun la version de windows, algunas no le prestan atencion)

Exacto, aunque también se lo puedes dar a la hora de linkear, en los comandos que usas para tal acción, almenos es lo que yo hago :B
Eres adicto a la Ing. Inversa? -> www.noxsoft.net

Tinkipinki

Uy.. vosotros vais unas cuantas clases mas adelantadas que yo y no hay quien os entienda jeje.. :xD
Igual no he sabido explicarme, os cuento:
Si abrimos el notepad con un editor hexadecimal vemos que los offset van del 00000000 al 000111F0.
Si lo abrimos con el Olly vemos que analiza el codigo de 01001000 offset 00000400 a 01008FFF offset 00007BFA.
Lo que me pregunto es porque no aparece en el Olly el codigo que va del offset 00000000 a 00000400?

Saludos

MCKSys Argentina

El tema es que cuando cargas un EXE en Olly, lo estas viendo mapeado en memoria, lo cual es muy diferente a como lo ves en el disco (editor Hexa).

Te recomiendo seguir (o empezar) con los cursos de Ricardo Narvaja.

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


Иōҳ

#8
Cita de: Tinkipinki en 12 Septiembre 2011, 20:34 PM
Uy.. vosotros vais unas cuantas clases mas adelantadas que yo y no hay quien os entienda jeje.. :xD
Igual no he sabido explicarme, os cuento:
Si abrimos el notepad con un editor hexadecimal vemos que los offset van del 00000000 al 000111F0.
Si lo abrimos con el Olly vemos que analiza el codigo de 01001000 offset 00000400 a 01008FFF offset 00007BFA.
Lo que me pregunto es porque no aparece en el Olly el codigo que va del offset 00000000 a 00000400?

Saludos



Ese es un Crackme que tengo a la mano, je es un DELPHI, ahí te enseño el OEP.

Luego te vas a la ventana Memory y vez esto

Memory map, item 19
Address=00400000
Size=00001000 (4096.)
Owner=Nox_Dump 00400000 (itself)
Section=
Contains=PE header
Type=Imag 01001002
Access=R
Initial access=RWE

Que es donde empieza el proggie.

Sí vemos el DUMP vez esto:

00400000    4D 5A       ASCII "MZ"           ; DOS EXE Signature

La ImagenBase es está (no la muestro en la img que puse)

00400134    00004000    DD 00400000          ; ImageBase = 400000

Así que si restamos la addy donde empieza el proggie (el header)

00400000 - ImageBase = Offset en disco (la que tú vez en tu HexEditor)

Reemplazamos:

00400000 - 00400000 = 0, que sería el Offset


AQUÍ, te lo explican mejor, está es la segunda vez que te doy el link, leelo, que parece que no tienes ganas de hacerlo, yo tampocó lo tendré al no leer tus próximos post.

http://foro.elhacker.net/analisis_y_diseno_de_malware/abril_negro_2008_taller_de_formato_pe_by_ferchu-t208278.0.html

Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.



Eres adicto a la Ing. Inversa? -> www.noxsoft.net

Tinkipinki

Ante todo gracias por buestras respuestas y disculparme si en cualquier momento alguien ha pensado en que no tenia el suficiente interes en asimilar lo que me explicais.
Escribir es complicado y a veces lo que uno intenta transmitir puede no ser interpretado como uno quisiera.

CitarAQUÍ, te lo explican mejor, está es la segunda vez que te doy el link, leelo, que parece que no tienes ganas de hacerlo, yo tampocó lo tendré al no leer tus próximos post.

Иōҳ, la razon de este post surgio precisamente a la lectura del tutorial de Ferchu antes de que tu publicaras el primer post donde pone los ejemplos con el editor hexadecimal para saber encontrar las diferentes cabeceras y entender un poco la estructura de un EXE.
No comentarte nada en la referencia al lik en tu post ha estado un acto reflejo para que tu respuesta tuviera la importancia que debia tener, tu me pasas la informacion y yo te agradezco el post. Yo creo que hubiera quedado muy mal  que que hubiese contestado "Es que ya lo estaba leyendo antes de que tu me lo pasaras" o cualquier otra respuesta que diera a entender que ya lo conocia, para mi, una respuesta como esta queda feo.
Gracias por tu ultimo post.

Иōҳ, _Enko, MCKSys Argentina os pido mis mas humildes disculpas por este entuerto.

Saludos