PDF de programación - Empaquetado 1 - parte II

Imágen de pdf Empaquetado 1 - parte II

Empaquetado 1 - parte IIgráfica de visualizaciones

Actualizado el 21 de Febrero del 2019 (Publicado el 7 de Septiembre del 2018)
722 visualizaciones desde el 7 de Septiembre del 2018
507,3 KB
14 paginas
Creado hace 16a (23/06/2007)
NOMBRE:  SHADDY [WWW.INDETECTABLES.NET]

Fecha: 13/06/2007 



 
 



1.‐ INTRODUCCIÓN. 

Algunos esperaban ésta segunda parte. Yo también, jeje, pero escribirla, no he tenido tiempo hasta ahora y 
retomo lo dicho para seguir con la incentiva del curso. Espero que éste tutorial empuje a algunos a 
desempaquetar sin problemas cualquier packer (compresor). Es hora de meternos de lleno. 

2.‐HERRAMIENTAS. 

‐ Import Reconstructor. 

‐ OllyDBG. 

‐ Lord PE. (opcional, pero recomendable, version DELUXE). 

‐ PE Tools. 

‐ PE Editor. 

Nota: Muchas herramientas hacen lo mismo, pero las pongo para que cada uno utilize la que más le guste. 

3.‐ EMPEZAMOS ☺. 

Como no, un poquito de teoría. Tenemos que saber que es la IAT (Import Adress Table / Tabla de dirección 
de importaciones). La IAT es una tabla que contienen todos los programas en windows, y lo que contiene 
son las llamadas API. La wikipedia nos dice esto: 

API (del inglés Application Programming Interface ‐ Interfaz de Programación de Aplicaciones) es el conjunto de 
funciones y procedimientos (o métodos si se refiere a programación orientada a objetos) que ofrece cierta librería 
para ser utilizado por otro software como una capa de abstracción. 

NOMBRE:  SHADDY [WWW.INDETECTABLES.NET]

Fecha: 13/06/2007 

 
Para que os hagáis una idea, las dll de windows tan conocidas, “kernel32.dll”, “ntdll.dll”, “user32.dll”, y un 
largo etcétera. Contienen éstas API, con lo que podemos hacer cualquier tipo de cosa, un ejémplo práctico 
es el típico mensaje de windows. 

 

Está es la api llamada “MessageBoxA” creo que es el ejemplo más práctico. Bien, como esta api hay miles, 
cada una se encarga de hacer algo en concreto, así que, lo que contiene la IAT son todas esas direcciones a 
esas API, que en cada máquina cambian, es decir, como no todos tenemos las mismas versiones de la kernel, 
ni de la user32, ya que, unos usamos SP2, otros no, otros Windows Vista, otros Windows 2000, etc… se 
necesita resolver esas direcciones, es decir, saber cuales son, y por ello se llevan a esa tabla, donde cada 
máquina (PC) las resuelve automáticamente. Eso es la IAT, y por lo tanto lo que ocurre cuando tenemos el 
programa que queremos desempaquetar en el OEP, es que cuando lo dumpeamos (volcar), es decir, copiar 
todos esos bytes descomprimidos en un nuevo EJECUTABLE, nos guarda las direcciones de las API de 
NUESTRA máquina. Y nosotros queremos guardar esa tabla que resuelve las direcciones en TODAS las 
máquinas. 

Teniendo el programa en el mismo punto del tute anterior, en el OEP.  

Lo primero que haremos será dumpearlo (volcarlo), ¿Por qué?, pues porque así ya tenemos guardado el 
programa descomprimido. Podemos hacerlo de 3 maneras. 

 

4.‐ DUMPEANDO 

NOMBRE:  SHADDY [WWW.INDETECTABLES.NET]

Fecha: 13/06/2007 

 
1ª – OllyDump (Tradicional, viene con mi OllyDBG). 

 

En los plugins del OllyDBG encontramos esta maravillosa herramienta. 

Una vez lo ejecutáis, veréis la ventana de dumpeado. 

 

 

NOMBRE:  SHADDY [WWW.INDETECTABLES.NET]

Fecha: 13/06/2007 

Donde pone Entry Point  y luego Modify, estamos diciendole el nuevo EntryPoint, que es igual a la dirección 
en la que nos encontramos menos la ImageBase. 

 

 

458700 es donde nos encontramos (OEP), sin embargo hay una propiedad de los ejecutables que se llama 
“Base de la Imagen (ImageBase)” que indica la dirección por donde comenzar, es decir, si le quitamos la base 
de la imagen tendriamos lo que conocemos como “Offset”, y si quisiésemos llegar hasta ahí desde un editor 
hexadecimal deberíamos quitarle la base de la imagen, pero en depuración se utiliza éste “número base” 
para asignar las direcciones. 

Insisto en DESMARCAR la casilla de “Rebuild Import” porque nosotros la vamos a reconstruir así que no hace 
falta hacerla por ese método, que no siempre acierta. 

Clickeamos a “DUMP” y guardamos el dumpeado. 

 

NOMBRE:  SHADDY [WWW.INDETECTABLES.NET]

Fecha: 13/06/2007 

Y con esto tenemos el archivo volcado en “dumpeado.exe”. 

2ª – Lord PE (descarga). 

 

Aquí lo mismo abrimos el Lord PE. 

 

 

NOMBRE:  SHADDY [WWW.INDETECTABLES.NET]

Fecha: 13/06/2007 

Y seleccionamos el “empaquetado 1.exe”, lo bueno que tiene Lord PE a diferencia de los demás es el 
IntelliDump. Para seleccionarlo seleccionamos el proceso, le damos al botón derecho y vamos a la opcion. 

 

Realmente, aunque no sepáis exactamente que hace es mejor que os acostumbréis a utilizarlo, con packers 
más complicados. Ésta opcion permite dumpear por regiones, y muchas veces nos salva de una, porque 

 

NOMBRE:  SHADDY [WWW.INDETECTABLES.NET]

Fecha: 13/06/2007 

 
dumpear con el plugin OllyDump o cualquier otro hace que no dumpeemos TODAS las secciones y por lo 
tanto quedan zonas sin volcar (que luego se pueden volcar a mano), pero te soluciona bastante. Repito, 
aunque no lo entendáis lo explico, así algún día tendréis la oportunidad de entenderlo ☺. 

Una vez seleccionado le seleccionamos la opcion “DUMP FULL”. 

Y lo mismo. 

 

Aquí también tendríamos el dumpeado. 

 

NOMBRE:  SHADDY [WWW.INDETECTABLES.NET]

Fecha: 13/06/2007 

 
3ª ‐ PE Tools (descarga). 

 

Es exactamente lo mismo que Lord PE (el motor es igual). 

Y lo guardamos como “dumpeado.exe” o como queráis 

 

Una vez tenemos el dumpeado guardado y listo. Es hora de arreglar la tabla con el Import Reconstructor. 

 

 

5.‐ REPARANDO LA IAT 

 

Vamos a utilizar el programa que ya puse anteriormente, el Import Reconstructor éste lo que hace es buscar 
todas las llamadas a las API y apuntarlas a la tabla correctamente. Según la wikipedia inglesa extraje ésta 
explicación de la IAT. 

 

The IAT is used as a lookup table when the application is calling a Windows API function. Because a compiled PE 
DLL/EXE cannot know in advance where the other DLLs it depends upon are located in memory, an indirect jump is 
required. As the dynamic linker loads modules and joins them together, it writes jump instructions into the IAT slots 
which point to the actual location of the destination function. Though this adds an extra jump over the cost of an 
intra‐module call, the performance hit is mostly negligible and easily worth the flexibility of dynamic libraries. If the 
compiler knows ahead of time that a call will be inter‐module (via a dllimport attribute) it can produce more optimised 
code that simply results in an indirect call opcode. 

 

Bueno básicamente se refiere a que nos da las direcciones de las API reales en una tabla. Para poder reparar la tabla 
debemos de saber 3 datos: 

 

NOMBRE:  SHADDY [WWW.INDETECTABLES.NET]

Fecha: 13/06/2007 

 
Offset del OEP – Original Entry Point (he hablado ya mucho sobre él) = 58700 (recordad que se le restaba 400000). 

Inicio de la tabla. 

Largo (tamaño) de la tabla. 

He decidido no mostrar como localizar la tabla de importaciones, creo que se hace pesado éste tutorial para quienes 
no saben, y lo escribiré más adelante, ya que el mismo Import Reconstructor te lo resuelve automáticamente no lo 
mostraré en éste tutorial. 

Abrimos el import reconstructor (con el programa parado en el OEP en OllyDBG). 

Y seleccionamos ahí el proceso que queremos repararle la IAT. Una vez cargado vemos que nos pone una 
dirección de OEP (la que tenía anteriormente). 

 

 

NOMBRE:  SHADDY [WWW.INDETECTABLES.NET]

Fecha: 13/06/2007 

 
Y la debemos cambiar por la nueva (58700). 

Y ahora le damos a IAT AutoSearch para que nos busque automáticamente la tabla de importaciones. 

 

Dice que ha encontrado algo, que probemos a recibir las importaciones (Get Imports). Pero antes observad 
los valores que dije que pedirían. 

 

Así que el solito nos lo encontró, ahora démosle a 

 y recibiremos las direcciones. 

 

Y si bajamos vemos que todas siguen correctas, cuando dice YES es que esta todo correcto. Ya está todo listo 
para reparar el dumpeado (Fix Dump). Importante, aunque siempre lo pone, no olvidarse. 

 

 

NOMBRE:  SHADDY [WWW.INDETECTABLES.NET]

Fecha: 13/06/2007 

 

Tener marcada la casilla para poner la tabla de importaciones en una nueva sección. Y ya darle al botón de 
Fix Dump, para arreglar nuestro dumpeado. 

Y seleccionamos el dumpeado que hicimos. 

 

 

NOMBRE:  SHADDY [WWW.INDETECTABLES.NET]

Fecha: 13/06/2007 

Y como comprobaremos el LOG no falla. 

 

Nos dice que está perfesto. Lo ejecutamos a ver y… 

PERFECTO. 

 

 

NOMBRE:  SHADDY [WWW.INDETECTABLES.NET]

Fecha: 13/06/2007 

 
Por último nos queda restaura el Base of Code, normalmente es lo único que no se porque jeje, no se llega a 
poner a su valor original, así que abrimos el PE Editor (se puede hacer con Lord PE o PE Tools). Arrastramos 
el desempaquetado hacia el PE Editor. 

Ahí vemos la base del código. Simplemente vamos a “sections“ y vemos la direccion por la que empieza la 
primera sección. 

 

Y entonces cambiamos el base of code y aplicamos cambios. 

 

 

NOMBRE:  SHADDY [WWW.INDETECTABLES.NET]

Fecha: 13/06/2007 

 

Y listo. Ya esta completamente desempaquetado, abría que cambiar los nombres de las secciones y dejarlo 
como al principio pero por hoy ya vale jajaja. 

 ESPERO QUE HAYÁIS APRENDIDO ALGO. Cualquier duda, reclamación, insulto, etc… a [email protected]

Hasta el próximo tute ☺. Un saludo a todo www.indetectables.net. 

 

// Shaddy // ESPAÑA 23 – JUNIO – 2007 //
  • Links de descarga
http://lwp-l.com/pdf13399

Comentarios de: Empaquetado 1 - parte II (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad