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 (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.
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
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...
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
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
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!
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
(http://i55.tinypic.com/5dqvbk.jpg)
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 =
400000Así 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.
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
En fin dejando mis palabras offtopic de lado, pudistes resolver tu duda?
Nox.
Ok, en tu ultimo ejemplo queda muy bien explicado.
Saludos