Memimagador

realiza un volcado de memoria usando NTSYSTEMDEBUGCONTROL
Descargar ahora

Memimagador Clasificación y resumen

Anuncio publicitario

  • Rating:
  • Licencia:
  • Freeware
  • Nombre del editor:
  • Arne Vidstrom
  • Sistemas operativos:
  • Windows All
  • Tamaño del archivo:
  • 7 KB

Memimagador Etiquetas


Memimagador Descripción

La aplicación MEMIMAGER fue diseñada para ser una herramienta que realiza un volcado de memoria usando NTSYSTEMDEBUGCONTROL. Uso de NTSYSTEMDEBUGCONTROL PARA DUMPAR Para el código de control 10, usamos una estructura con el siguiente diseño como búfer de entrada: - DWORD PhysicalAddress; - DWORD reservado1; - nula * tampón; - dword longitud; Siguiente Podemos, por ejemplo, MALLOC un búfer de tamaño de página que apuntamos a tampón, escriba 4096 de longitud, y apunte a la dirección física a la dirección de la página que deseamos copiar los contenidos de. Luego ejecutamos NTSYSTEMDEBUGCONTROL y, si todo va bien, nuestro búfer ahora contiene una copia de los datos en la página física. Bastante trivial en realidad. Dentro de NTSYSTEMDEBUGCONTROL Para entender si, y si es así, cómo, los problemas de almacenamiento en caché de NTSYSTEMDEBUGCONTROTROL TIENEN QUE DEBEN A BIVE EN EL NÉREL. El kernel exporta la rutina llamada NTSYSTEMDEBUGCONTROL, que contiene una declaración de conmutación que se encarga de enviar a la funcionalidad correcta basada en el código de control. De lo siguiente, no describiré cada pequeño detalle del código. La primera razón es que hay muchos detalles que no son relevantes para lo que estamos mirando. En segundo lugar, no he descompilado el código, pero solo siguió las partes relevantes del desmontaje (desde un kernel SP0 de Windows Server 2003). El código de control del manejo del código 10 llama a la rutina indocumentada _ExlockUserBuffer, que hace que las páginas en nuestro Residente de Buffer (* Buffer) Luego, se llama otra función indocumentada llamada _kdpcopymymorychunks. Los parámetros pasados ​​a él se encuentran entre otros, la dirección virtual del espacio del sistema apuntando a nuestro búfer, el número de bytes para copiar (longitud) y la dirección para copiar (PhysicalAdDress). Ahora, aún se llama otra función indocumentada: _mmdbgCopymyMymory. Esta función realiza la copia real de los datos. Pero antes de que pueda hacer una copia, debe tener una dirección virtual de la fuente en lugar de una dirección física. Por lo tanto, llama nuestra última función indocumentada: _MidbgTranslatePhysicalAddress. Ahora estamos realmente cerrando la respuesta a nuestra pregunta. _MidbgTranslatePhysicalAdDress recibe nuestra dirección física como un parámetro. Luego usa una variable llamada _validkernelpte, que sirve como un tipo de plantilla para el kernel PTE: S. Las banderas de la plantilla se combinan con la dirección física para formar un PTE apuntando a la página que queremos copiar. Luego, la base de datos PFN está indexada para encontrar la entrada correspondiente a nuestra página de origen. En esta entrada, el kernel mira las banderas de CacheatTribe del miembro U3.E1. Las banderas de cacheattribute se usan luego para configurar el índice de PAT en el PTE. Ahora tenemos nuestra respuesta realmente, pero continuaré más lejos de todos modos. El PTE, el kernel ha construido ahora se copia en la ubicación apuntada por el kernel variable _mmdebugpte. Finalmente, la función devuelve la dirección virtual que usará el PTE para el mapeo. Ahora _MMDbgCopymymymory es libre de copiar los datos de la página de origen físico a nuestro búfer utilizando solo direcciones virtuales.


Memimagador Software relacionado