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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


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


Desconectado Desconectado

Mensajes: 559


Tea_Madhatter


Ver Perfil
como encontrar y usar LoadLibrary y Getprocaddress usando PEB?
« en: 26 Junio 2012, 22:05 pm »

Hola tengo unas dudas sobre PEB

bueno, ya entendi como se encuentra PEB gracias al blog de Nox donde te explica sobre eso

estuve haciendo pruebas para verificar si lo que hacia estaba bien, perdon por poner una mezcla de ASM y C pero no encontre otra manera de verificar que realmente la comparacion de PE fuera exacto

Código
  1. #include <windows.h>
  2. #include <stdio.h>
  3.  
  4. int main()
  5. {
  6.  
  7. __asm{
  8.  
  9. xor eax, eax
  10. mov eax, fs:[0x30]
  11. mov eax, [eax+0x0C]
  12. mov eax, [eax+0x1C]
  13. mov eax, [eax]
  14. mov eax, [eax+0x08]
  15. mov ebx, eax
  16. add ebx, [eax + 0x3C]
  17. cmp ebx, 'PE'
  18. je bien
  19.  
  20.  
  21. }
  22. bien:
  23. MessageBox(0, "bien hecho", "mensaje", 0 );
  24.  
  25. }

ahora, lo que sabia es que despues de esto tenia que llegar a IMAGE DATA DIRECTORY, donde se encuentra RVA o VirtualAddress

aqui no se dos cosas, cual es el tamaño de IMAGE_OPTIONAL_HEADER?

acaso son 0x78?

entonces seria 0x76 y 0x78 empieza IMAGE_DATA_DIRECTORY?

y lo que tendria que seguir en el codigo para llegar a EAT seria?
Citar
mov ebx, [ebx + 0x78]

y bueno, de aqui que mas tendria que hacer para encontrar por ejemplo, LoadLibraryA y Getprocaddress?

e visto que buscan direccion de nombres [0x20] y numero de nombres [0x18] e incluso veo que se saltan eso y van directo a [0x24] que seria numero de funciones

me gustaria hacer un ejercicio para mostrar un MessageBox cargando user32.dll con LoadLibrary y mostrando MessageBoxA con GetprocAddress y ponerle algun mensaje, todo usando PEB

espero me puedan ayudar

P.D. Nox, me podrias decir que compilador usaste para compilar el ejemplo de tu blog, porfavor?

salu2
En línea

.                                 
Иōҳ


Desconectado Desconectado

Mensajes: 563


Ver Perfil
Re: como encontrar y usar LoadLibrary y Getprocaddress usando PEB?
« Respuesta #1 en: 27 Junio 2012, 01:25 am »

Eso lo hice en la sintaxys de masm32, para el mismo ensamblador.

Mira aquí te dejo esto, zeropad ha vuelto y está terminando su trabajo:
http://ricardonarvaja.info/WEB/OTROS/PROGRAMACION%20DE%20VIRUS/

Él obtiene el módulo del kernel32 a través del stack, que sería lo "mismo" que lo hagas con el PEB, entonces sitúate en el momento donde ya encontró el módulo de kernel y se dispone a obtener la función getproceaddress, que ahí lo explica detallado.

También te recomiendo que leas sobre sobre el Formato PE.

Saludos,
Nox.
En línea

Eres adicto a la Ing. Inversa? -> www.noxsoft.net
x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: como encontrar y usar LoadLibrary y Getprocaddress usando PEB?
« Respuesta #2 en: 27 Junio 2012, 10:57 am »

Accediendo al PEB no es necesaria ninguna API para usar las DLL's. con obtener la direccion base de un modulo ya reemplazas
la LoadLibrary/GetModuleHandle y luego con esa direccion vas recorriendo la estructura del modulo hasta llegar a la tabla de
exportaciones y simular la Getprocaddress, leer los documentos de la estructura PE
En línea

zu-zu

Desconectado Desconectado

Mensajes: 31



Ver Perfil
Re: como encontrar y usar LoadLibrary y Getprocaddress usando PEB?
« Respuesta #3 en: 30 Junio 2012, 03:21 am »

Accediendo al PEB no es necesaria ninguna API para usar las DLL's. con obtener la direccion base de un modulo ya reemplazas
la LoadLibrary/GetModuleHandle

Técnicamente, sólo se evita el uso de GetModuleHandle(). ¿O es que acaso podemos cargar librerías sólo leyendo la PEB? (?).

Citar
aqui no se dos cosas, cual es el tamaño de IMAGE_OPTIONAL_HEADER?

acaso son 0x78?

Lamentablemente no tengo memoria fotográfica, sin embargo, ¿no sería mejor definir las estructuras correspondientes para evitar esta clase de complicaciones?.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Veove, reconstruye una escena usando avatares para encontrar a alguien
Noticias
wolfbcn 0 1,549 Último mensaje 29 Enero 2012, 01:58 am
por wolfbcn
[resuelto] Ayuda con GetProcAddress
Programación C/C++
xiruko 5 3,316 Último mensaje 27 Noviembre 2012, 22:58 pm
por xiruko
Duda GetProcAddress
Programación C/C++
naderST 4 2,425 Último mensaje 5 Marzo 2013, 03:38 am
por naderST
es necesaro usar estandares veo que siguen usando tablas que fue d elas divs?
Desarrollo Web
DrUbLiC 2 1,815 Último mensaje 3 Marzo 2015, 13:55 pm
por Usuario Invitado
Error 126: LoadLibrary falla C++
Programación C/C++
Kaxperday 2 2,242 Último mensaje 16 Enero 2016, 13:06 pm
por Kaxperday
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines