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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Análisis y Diseño de Malware (Moderador: fary)
| | |-+  [Taller en construcción]Secciones en archivos PE.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 2 3 [4] 5 6 Ir Abajo Respuesta Imprimir
Autor Tema: [Taller en construcción]Secciones en archivos PE.  (Leído 44,781 veces)
The Swash

Desconectado Desconectado

Mensajes: 194


Programmer


Ver Perfil WWW
Re: [Taller en construcción]Secciones en archivos PE.
« Respuesta #30 en: 1 Junio 2012, 02:40 am »

Hola,

Estás leyendo bien los datos del ejecutable?, los punteros se se me hacen un poco altos como para el tamaño de un "notepad". Y sin duda, si esos fuesen los valores están alineados. Para verificar si un valor está alineado o no debes hacer (valor módulo FileAlignment), si esto es igual a 0, está alineado.

Un saludo,
Iván Portilla.
En línea

Belial & Grimoire


Desconectado Desconectado

Mensajes: 559


Tea_Madhatter


Ver Perfil
Re: [Taller en construcción]Secciones en archivos PE.
« Respuesta #31 en: 1 Junio 2012, 05:24 am »

si hice basicamente lo mismo que con la aplicacion VB6, el archivo queda con la misma cantidad de datos al final

Código:
0x2BE00

lo repeti varias veces para verificar que no me equivoque al cambiar los bytes, y conte poco a pco los hexa de las secciones

en la aplicacion de VB6, me salio bien, y se que practicamente es lo mismo, pero no se que podria ser ahora

mira esto es lo de la PE

Código:
000000E0 50 45 00 00 4C 01 04 00 0F C6 5B 4A 00 00 00 00 00 PE..L.....[J.....
000000F1 00 00 00 E0 00 02 01                               .......          

FileAligment

Código:
00020000

Esto es .text

Código:
000001D8 2E 74 65 78 74 00 00 00 8C A6 00 00 00 10 00 00 00 .text............
000001E9 A8 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 .................
000001FA 00 00 20 00 00 60                                  .. ..`          

este es .reloc

Código:
00000250 2E 72 65 6C 6F 63 00 00 34 0E 00 00 00 F0 02 00 00 .reloc..4........
00000261 10 00 00 00 AE 02 00 00 00 00 00 00 00 00 00 00 00 .................
00000272 00 00 40 00 00 42                                  ..@..B          

Y como te menciono, en la aplicacion de VB6 lo hice bien, pero aqui no se que podria pasar
« Última modificación: 1 Junio 2012, 05:50 am por Belial & Grimoire » En línea

.                                 
The Swash

Desconectado Desconectado

Mensajes: 194


Programmer


Ver Perfil WWW
Re: [Taller en construcción]Secciones en archivos PE.
« Respuesta #32 en: 1 Junio 2012, 05:56 am »

Hola,

Si leemos los datos (recuerda lo del endian byte). Tenemos que:
  • .text:
  • VirtualAddress: 0x1000
  • VirtualSize: 0xA68C
  • PointerToRawData: 0x400
  • SizeOfRawData: 0xA800

  • .data:
  • VirtualAddress: 0xC000
  • VirtualSize: 0x2164
  • PointerToRawData: 0xAC00
  • SizeOfRawData: 0x1000

  • .rsrc:
  • VirtualAddress: 0xF000
  • VirtualSize: 0x1F160
  • PointerToRawData: 0xBC00
  • SizeOfRawData: 0x1F200

  • .reloc:
  • VirtualAddress: 0x2F000
  • VirtualSize: 0xE34
  • PointerToRawData: 0x2AE000
  • SizeOfRawData: 0x1000

Ahora resulta que los tamaños de las secciones a intercambiar no son iguales, por ende deberás "desbaratar" y rearmar todo el cuerpo del archivo. Para ello deberás trabajar con sus SizeOfRawData y cambiarles el orden, luego actualizar las cabeceras.

Si vamos a cambiar ".reloc" por ".text" primero que todo analizamos que todas las otras secciones se desplazarán debido a que ".text" es más grande.

Entonces vamos de a poco:
  • .reloc:
  • VirtualAddress: 0x1000
  • VirtualSize: 0xE34
  • PointerToRawData: 0x2AE000
  • SizeOfRawData: 0x1000

Luego seguiría:

  • .data:
  • VirtualAddress: 0xC000
  • VirtualSize: 0x2164
  • PointerToRawData: 0x2000 -> Suma de PointerToRawData y SizeOfRawData de ".reloc".
  • SizeOfRawData: 0x1000

Luego:

  • .rsrc:
  • VirtualAddress: 0xF000
  • VirtualSize: 0x1F160
  • PointerToRawData: 0x3000 -> Hacemos lo mismo con ".data".
  • SizeOfRawData: 0x1F200

Y por último:

  • .text:
  • VirtualAddress: 0x1000
  • VirtualSize: 0xA68C
  • PointerToRawData: 0x22200
  • SizeOfRawData: 0xA800

Y en base a estos datos es que debes ubicar las secciones en el cuerpo del archivo en el orden tal cual porque ese era el cambio que querías hacer.

Recuerda CUERPO DEL ARCHIVO, no en la cabecera de secciones, en la cabecera solo actualizas los nuevos valores pero no el orden.

Un saludo,
Iván Portilla.


« Última modificación: 1 Junio 2012, 05:59 am por The Swash » En línea

Belial & Grimoire


Desconectado Desconectado

Mensajes: 559


Tea_Madhatter


Ver Perfil
Re: [Taller en construcción]Secciones en archivos PE.
« Respuesta #33 en: 2 Junio 2012, 21:47 pm »

Hola

Ok creo si se tenia que modificar algunas cosas, bueno creo ahora haré el intento y como ejercicio tratare de agregar una secciona mia y vere si puedo cambiarla por. Text

Solo una última duda, porque quedo 0x1000 Reloc si la suma de la sección anterior no da. 0x1000?

Y otra pregunta, si filealigment es de 0x200 como podría estar alineado con 0xA800?

Bueno mientras haré esto y el ejercicio a ver que tal me va

Salu2
En línea

.                                 
The Swash

Desconectado Desconectado

Mensajes: 194


Programmer


Ver Perfil WWW
Re: [Taller en construcción]Secciones en archivos PE.
« Respuesta #34 en: 3 Junio 2012, 00:23 am »

Hola,

Te explico:
Tú vas a cambiar de posición ".reloc" y ".data", el 0x1000 que ahora vale el PointerToRawData de ".reloc" sale de donde estaba ubicado ".text" recuerda que ahí es justamente donde finaliza la cabecera y empieza la primera sección.

En cuanto a lo otro:
0xA800 %(modulo, residuo) 0x200 = 0. Entonces es múltiplo.

Un saludo,
Iván Portilla.
En línea

Belial & Grimoire


Desconectado Desconectado

Mensajes: 559


Tea_Madhatter


Ver Perfil
Re: [Taller en construcción]Secciones en archivos PE.
« Respuesta #35 en: 9 Junio 2012, 20:54 pm »

hola

bueno, pues ya logre agregar al block de notas mi sección y cambiarla con .reloc

solo que cambiar la secciones del block .text, .data, .rsrc y .reloc, he tenido problemas

si cambio .data y .reloc se alinea a 0x22200, pero .text y .rsrc son muy grandes y cuando los selecciono

0x1f200 ---> .rsrc

0xA800 ----> .text

abarca mucho incluso, se selecciona parte de .data y .reloc y no puedo borralos

ahora si primero cambio .rsrc y .text pasan dos cosas

si .text tiene que quedar en 0x22200, al seleccionar y luego eliminar 0xA800 ya no queda lineado con 0x22200, y pensando que si alineo .data y .reloc se alienaria todo... pero no alcanza y lo mismo pasa con .rsrc --> 0x1f200, es muy grande y si lo elimino ya no quedan alineados

lo unico que se me ocurre, es fijarme donde quedan alineados y volver a modificar PointerToRawData con las nuevas direcciones

Aunque...

de la misma manera que hice con el ejercicio de poner mi sección y cambiarlo por otra, al modificarlo ya no queda en 0x2BE00, la nueva direccion fue 0x2B000 y con cambiar eso funciono, aunque si al intentar cambiar .text con mi sección tambien hay algo mal

0x400 ---> .text

0x2BE00 --> .BAG

al cambiarlo quedo

0x400 ---> .BAG

0x21800 --> .text

queda como 0x21800 porque al borrar A800 de 0x2CA00 se eliminan hasta quedar en 0x21800

y son 0x2CA00 por la suma de mi sección agregada

pero me dice que ya no es un aplicacion win32

creo al eliminar A800, tambien elimino parte de .data incluso tambien .rsrc, talvez por eso falla

pero entonces tendria que eliminar de A800, el tamaño de las secciones siguientes para no tocarlas?


bueno almenos, ya logre agregar mi sección y cambiarla con .reloc, jeje ahora no tuve tiempo de practicar, pero creo cada vez entiendo mas  ;-)

salu2
« Última modificación: 9 Junio 2012, 21:03 pm por Belial & Grimoire » En línea

.                                 
d(-_-)b


Desconectado Desconectado

Mensajes: 1.331



Ver Perfil WWW
Re: [Taller en construcción]Secciones en archivos PE.
« Respuesta #36 en: 11 Junio 2012, 22:30 pm »

Exelente material muchas gracias.
En línea

Max 400; caracteres restantes: 366
franfis

Desconectado Desconectado

Mensajes: 248



Ver Perfil
Re: [Taller en construcción]Secciones en archivos PE.
« Respuesta #37 en: 11 Julio 2012, 02:02 am »

Muy buen tutorial, felicitaciones  ;-) , no se mucho de esto pero donde quedan las estructuras IMAGE_RESOURCE_DIRECTORY, IMAGE_RESOURCE_DIRECTORY_ENTRY, IMAGE_RESOURCE_DATA_ENTRY , _IMAGE_RESOURCE_DIRECTORY_STRING, etc, etc. No los veo ni con el Olly, ni en programas complejos como el abode acrobat los veo.

Por otro lado seria aun mas interesante que expliques que pasa con el PE header cuando el exe esta empaquetado y como desempaquetarlo.

Saludos



En línea

avzila

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: [Taller en construcción]Secciones en archivos PE.
« Respuesta #38 en: 15 Julio 2012, 06:24 am »

muy buen aporte, los tomo en cuenta gracias ....
En línea

Danyfirex


Desconectado Desconectado

Mensajes: 493


My Dear Mizuho


Ver Perfil
Re: [Taller en construcción]Secciones en archivos PE.
« Respuesta #39 en: 12 Agosto 2012, 01:40 am »

Excelente Taller. muy Bien explicado.  ;-)  Felicidades Crack
En línea

Páginas: 1 2 3 [4] 5 6 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Nuevas secciones en el foro
Sugerencias y dudas sobre el Foro
Maikfield 6 2,877 Último mensaje 30 Agosto 2005, 11:12 am
por programatrix
Secciones en php
PHP
keype 4 7,349 Último mensaje 28 Mayo 2007, 00:29 am
por dominioswww
un par de secciones mas
Sugerencias y dudas sobre el Foro
peib0l 4 2,863 Último mensaje 25 Mayo 2007, 18:07 pm
por -Elkiot-
Taller de Vic_Thor: PROTOCOLO 802.11. TALLER WiFi « 1 2 »
Hacking Wireless
ChimoC 10 60,596 Último mensaje 8 Agosto 2009, 12:04 pm
por ChimoC
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines