PDA

Ver la Versión Completa : obtener peb de mi proceso


aguml
15-06-2014, 20:32:46
hola de nuevo amigos, pues lo que quiero es obtener la direccion del peb de mi mismo proceso. Usando asm embevido es algo como MOV EAX,FS:[0x18] //teb MOV PEB,DWORD PTR [EAX+0x30] //peb. Yo quiero hacerlo sin asm embevido pero no se que hace exactamente el mov eax,fs:[0x18]

Casimiro Notevi
15-06-2014, 20:59:10
¿Cómo sería "no embebido" y qué es "peb"?

aguml
15-06-2014, 21:34:10
cuando digo embebido me refiero a sin usar ensamblador. Y el peb es el block embironment process. Ya he estado leyendo y por lo visto no se puede ya que tendria que usar getthreadcontext y este necesita que el proceso esté suspendido y la cosa se complica porque para eso tendria que crear un thread y desde este suspender el principal que no se ni como se haria.

Casimiro Notevi
15-06-2014, 22:29:52
cuando digo embebido me refiero a sin usar ensamblador. Y el peb es el block embironment process.
Bien, te refieres al process environment block, a ver si algún compañero puede ayudarte con eso.

escafandra
18-06-2014, 02:02:58
Usa NtQueryInformationProcess (http://msdn.microsoft.com/en-us/library/windows/desktop/ms684280.aspx)


typedef struct _PROCESS_BASIC_INFORMATION {
PVOID Reserved1;
//PPEB PebBaseAddress;
PVOID PebBaseAddress;
PVOID Reserved2[2];
ULONG_PTR UniqueProcessId;
PVOID Reserved3;
} PROCESS_BASIC_INFORMATION;

PROCESS_BASIC_INFORMATION PBI;
NtQueryInformationProcess(GetCurrentProcess(), 0, &PBI, sizeof(PBI), 0);



Saludos.

aguml
18-06-2014, 08:47:47
gracias amigo, ya lo pude conseguir. Lo tenia bien codeado pero lo tenia de forma que intentaba obtener el peb desde el evento CREATE_PROCESS_DEBUG_EVENT y, por lo que pude comprobar, en ese momento el peb no esta relleno asi que lo hice desde el oep y listo.