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
#include <windows.h> #include <stdio.h> int main() { __asm{ xor eax, eax mov eax, fs:[0x30] mov eax, [eax+0x0C] mov eax, [eax+0x1C] mov eax, [eax] mov eax, [eax+0x08] mov ebx, eax add ebx, [eax + 0x3C] cmp ebx, 'PE' je bien } bien: MessageBox(0, "bien hecho", "mensaje", 0 ); }
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