2009-10-13 8 views
5

Estoy experimentando con acceso a memoria en .NET. Por el momento, tengo un programa administrado que inicia un proceso no administrado y recupera el BaseAddress de uno de sus módulos cargados (un archivo DLL). Lo que me gustaría hacer es de alguna manera leer el encabezado PE del módulo cargado para que luego pueda recuperar las direcciones de sus exportaciones.¿Cómo leo el encabezado PE de un módulo cargado en la memoria?

Lamentablemente, no puedo encontrar ninguna buena información sobre esto. ¿Algunas ideas?

Respuesta

5

This es un buen punto de partida para el formato de archivo PE.

Puede P/Invocar ReadProcessMemory desde la dirección base en la que debe copiar los encabezados en su proceso. Necesitarás analizar la memoria que leíste en los diversos encabezados PE. El primer encabezado es IMAGE_DOS_HEADER, que lo dirigirá al IMAGE_NT_HEADERS. A continuación, puede usar el IMAGE_OPTIONAL_HEADER en IMAGE_NT_HEADERS para buscar la ubicación del IMAGE_EXPORT_DIRECTORY en el binario.

Cuestiones relacionadas