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

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Análisis y Diseño de Malware (Moderador: fary)
| | |-+  como podria optimizar bound import directory?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: como podria optimizar bound import directory?  (Leído 2,833 veces)
Belial & Grimoire


Desconectado Desconectado

Mensajes: 559


Tea_Madhatter


Ver Perfil
como podria optimizar bound import directory?
« en: 23 Junio 2013, 00:06 am »

hola

tengo una pregunta, es sobre runPE

cuando agrego una nueva sección supuestamente tengo que limpiar los bound import tables, con 0x00, pero he escuchado que es mejor optimizarlo, según tengo entendido, cuando no hay espacio para agregar una nueva sección es necesario insertar nuevos bytes y modificar RVA sumandole 0x28, lo que seria la nueva sección

por lo general borro bound import, la aplicación corre normalmente pero ahora se me ocurrio no borrarlo, y tratar de optimizarlo, estuve haciendo pruebas con notepad

el offset donde se encuentran los import es en 0x1B0 y 0x1B4

0x1B0 = 78 02 00 00

0x1B4 = 28 01 00 00

lo que serian 0x278 y 0x128

al ir a 0x278, es el final de .rsrc, despues son 128 hexadecimales donde puedo agregar la nueva sección, y terminando, desde 0x129 empieza ADVAPI32.DLL... etc

lo que me imagino es que es correcto

pero en esos 0x128 hexadecimales, es donde modifico 0x28 para la nueva sección, todavia me quedan 100...asi que como mencione al principio, si borro los import con 0x00, notepad funciona bien, pero tambien como mencione, tenia la intencion de mejor optimizarlo, asi que imagine que tendria que sumar 28 a los 278

quedaria 0x2A0 pasandolo a endian seria --> 0A 02 00 00

modifique los 0x278 de 1B0 a 0A 02 00 00 y guarde la aplicacion, pero me aparecio el error de windows

despues quise tambien agregarle 28 a size de import que seia 0x1B4

0x1B4 = 0x128 + 28 = 0x150 en endian seria 50 01 00 00

pero tampoco funciono, entonces despues de toda esa explicación, viene mi pregunta

De que forma lo optimizo para no tener que borrar import bound directory con 0x00?

ya que no estoy agregando bytes para poner una nueva sección por falta de espacio, solo estoy modificando los que ya estan alli, para agregar una nueva, hay alguna forma de modificar bound import? o solo se puede hacer eso cuando agregas bytes por falta de espacio?

En línea

.                                 
x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: como podria optimizar bound import directory?
« Respuesta #1 en: 23 Junio 2013, 09:37 am »

Hola,

Es posible agregar una nueva sección sin corromper el bound, el calcula esta se hace así:
* Comprobar si existe Bould directory
* Obtener el tamaño bould dir
* Obtener el tamaño de los todos los headers del PE 
* Sumar esos dos valores ( Variable_1 ) y ademas sumar sizeof(IMAGE_SECTION_HEADER) ( la nueva sección )
* comprobar si Variable_1 sobrepasa el valor de SizeOfHeaders
   # Si lo hace entonces alinear Variable_1 a FileAlignment. Crear un buffer con longitud de este valor
   # Si no sobrepasa el valor entonces crear un buffer de longitud SizeOfHeaders
* copiar al buffer creado todas las cabeceras de las secciones más la nueva y copiar la Bound acontinuación, ya tienes la nueva cabecera del PE.
* Sumar Sizeof(IMAGE_SECTION_HEADER) a OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT].VirtualAddress ( Si bound existio )
* Generar el nuevo PE utilizando la nueva cabecera
* Actualizar algunos campos del PE Header ( numeros de secciones, checksum , dependiendo de lo que contenga tu sección: SizeofCode,SizeofinitializateData,etc. tu sabras )

Por cierto, ya que estas haciendo pruebas con un archivo especifico pueda que quieras subirlo para quien quiera ayudarte se guie
de tal archivo, porque no sabemos si es el notepad de Win XP,Vista,7 o alguna otra version.

Y por experiencia, no recomiendo usar programas como notepad como para pruebas, pueda que ellos tengan algun metodo de
comprobar la integridad de el archivo, usa uno diferente. prueba con un "hello world" hecho en VB para este caso.


En línea

Belial & Grimoire


Desconectado Desconectado

Mensajes: 559


Tea_Madhatter


Ver Perfil
Re: como podria optimizar bound import directory?
« Respuesta #2 en: 23 Junio 2013, 17:37 pm »

Estoy usando notepad de windows 7, lo que pasa es que yo utilizo linux y abro windows con Virtualbox y ya me acostumbre a hacer pruebas con notepad, creo todavía tengo algún disco de VB6, haber si lo instalo después, porque ya tiene algunos años que no uso VB ya solo me gusta usar C

al parecer hay que hacer mas cosas para no corromper bound import

una ultima pregunta, me podrías explicar un poco sobre "OptionalHeader.DataDirectory[0].VirtualAddress", se que es una estructura que se encuentra en IMAGE_OPTIONAL_HEADER, pero no comprendo bien cual es su función

salu2





En línea

.                                 
x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: como podria optimizar bound import directory?
« Respuesta #3 en: 23 Junio 2013, 20:06 pm »

Estoy usando notepad de windows 7, lo que pasa es que yo utilizo linux y abro windows con Virtualbox y ya me acostumbre a hacer pruebas con notepad, creo todavía tengo algún disco de VB6, haber si lo instalo después, porque ya tiene algunos años que no uso VB ya solo me gusta usar C

al parecer hay que hacer mas cosas para no corromper bound import

una ultima pregunta, me podrías explicar un poco sobre "OptionalHeader.DataDirectory[0].VirtualAddress", se que es una estructura que se encuentra en IMAGE_OPTIONAL_HEADER, pero no comprendo bien cual es su función

salu2








Su funcion es simple, poder localizar el inicio de cada sección de datos ( Relocalizaciones, recursos, importaciones, Exportaciones, etc ).
Para obtenerla cuando el modulo es cargado en memoria seria: Base del module + OptionalHeader.DataDirectory[].VirtualAddress
Para obtenerlo directamente desde el raw seria convertir "OptionalHeader.DataDirectory[].VirtualAddress" a offset y sumarle la Base.

Para comprobarlo establece "OptionalHeader.DataDirectory[].VirtualAddress" del directorio de recursos a 0 y guarda, veras que windows
no puede reconocer la existencia del icono ya que este esta almacenado el tal sección.



« Última modificación: 23 Junio 2013, 20:20 pm por x64Core » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
389 Directory Server: Alternativa libre al Active Directory de Microsoft
Noticias
nicolas_cof 0 2,844 Último mensaje 16 Junio 2010, 04:19 am
por nicolas_cof
galaxy X una copia de gounb bound
Juegos y Consolas
kanoran 0 2,801 Último mensaje 19 Diciembre 2010, 00:51 am
por kanoran
Problema al mover Bound Import Problema para copiar y pegar
Análisis y Diseño de Malware
kisk 2 3,794 Último mensaje 4 Abril 2017, 03:13 am
por kisk
Problema del viajante de comercio - Branch and Bound « 1 2 3 4 »
Programación General
jca1 30 24,316 Último mensaje 24 Mayo 2022, 18:37 pm
por jca1
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines