PEB y funciones de kernel32

Iniciado por Vaagish, 8 Agosto 2013, 02:39 AM

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

Vaagish

Hola amigos!! Alguien podria ayudarme a entender bien como funciona el tema de encontrar funciones en kernel32 y utilizarlas? Hace 3 dias que le dedico 8hs diarias y no he podido encontrar las funciones!! Es muy estresante jaja
Lei todos los post que hablan del PEB del foro y muchos otros mas! Pero a mi humilde entender, casi todos llegan hasta la parte de encontrar la direccion de kernel32,, eso lo entendi.. pero no logro una vez ahi parado (en la direccion de memoria de kernel32) seguir buscando dentro las funciones, y mucho menos ejecutarlas!!

Como recorro el modulo kernel32??? Muchas gracias!!

PD: Algo de la info que rescate, la que entendi mejor ->

http://el-blog-de-thor.blogspot.com/2011/05/obtener-la-direccion-base-de.html
Ahi estan muy bien detalladas las estructuras que vamos recorriendo

http://el-blog-de-thor.blogspot.com/2011/05/usando-getprocaddress-y-loadlibrary_07.html
Ahi esta explicado como recorrer y buscar la funcion GetProcAddress (Pero creo que utiliza otro metodo, porque recurre a la cabezera del PE y no entiendo para que) :/

http://www.projectshellcode.com/node/22
Ahi hay una shellcode pero entiendo nada

EDITADO: Bien,, desde que escribi la consulta hasta recien, conoci una herramienta que se llama dumpbin! Excelente! Pero igual preciso ayuda jaja

orlando9427

Al obtener la dirección del módulo kernel32 puedes usar su cabecera PE para acceder a la Export Table y con eso puedes listar las funciones y sus punteros. Leete la MSDN o el texto de The Swash para entender la mecánica de la cabecera PE

Saludos!

Vaagish

Gracias por responder! O sea que el modulo kernel32 tiene cabezera PE? Como los exe? Seguro que no es lo mismo,, pero es con lo unico que lo puedo asociar,,, tenes algun enlace que explique bien eso ?
Yo he buscado en el foro bastante y en otros lados, pero no logro captar como funciona..

Otro texto interesante es:
http://foro.elhacker.net/buscador2-t320584.0.html;msg1585396#msg1585396 de lShadowl

El texto de The Swash que comentas es este?
http://foro.elhacker.net/buscador2-t327025.0.html;msg1612552#msg1612552

Eternal Idol

Los ejecutables de Windows (gama NT) son PE, sean programas, modulos o incluso drivers (modulos de modo Kernel). Primero viene el MZ igual por razones de compatibilidad hacia atras.

http://en.wikipedia.org/wiki/DOS_MZ_executable
http://en.wikipedia.org/wiki/Portable_executable

Una vez que encontraste la direccion base de Kernel32 ya podes definir un puntero a IMAGE_DOS_HEADER con la misma, con el campo e_lfanew de la misma obtendras la cabecera PE (IMAGE_NT_HEADERS).

Mas aca: http://msdn.microsoft.com/en-us/magazine/cc301805.aspx

Con eso ya podes seguir solo.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

orlando9427

Como bien dice Eternal Idol todos los ejecutables de Windows tienen formato PE lo que cambia es el subsystem, principalmente, también la forma en que el EntryPoint es llamado y una que otra cosa.

Este documento, el que te comentaba hecho por The Swash, te servirá para entender mejor el formato PE, los directorios y RVAs.
http://foro.elhacker.net/empty-t332157.0.html

Como consejo al tener ya el módulo Kernel32 en memoria y mapeado no necesitas de conversiones de RVA a Offsets.

Saludos!

Vaagish

#5
Pero mas que muchisimas gracias!! Ese empujoncito precisaba jejeje
Ahora me pongo con la lectura ;)

EDITADO: Y gracias a The Swash que no termine de leer el texto y ya se nota que esta muy bueno!