Memimager

Esegue una discarica di memoria usando Ntsystemdebugcontrol
Scarica ora

Memimager Classifica e riepilogo

Annuncio pubblicitario

  • Rating:
  • Licenza:
  • Freeware
  • Nome editore:
  • Arne Vidstrom
  • Sistemi operativi:
  • Windows All
  • Dimensione del file:
  • 7 KB

Memimager Tag


Memimager Descrizione

L'applicazione MemImager stato progettato per essere uno strumento che esegue un dump di memoria utilizzando NtSystemDebugControl. Utilizzando NtSystemDebugControl per lo scarico Per il codice di controllo 10 si usa una struttura con la seguente disposizione come buffer di ingresso: - DWORD PhysicalAddress; - DWORD Reserved1; - void * Buffer; - DWORD Lunghezza; Successivo possiamo per esempio malloc un buffer di pagina di dimensioni che segnaliamo Buffer, scrivere 4096 di lunghezza, e il punto PhysicalAddress all'indirizzo della pagina desideriamo copiare il contenuto di. Poi eseguiamo NtSystemDebugControl e se tutto va bene il nostro tampone ora contiene una copia dei dati nella pagina fisica. Piuttosto banale realtà. all'interno NtSystemDebugControl Per capire se, e se sì, come, maniglie NtSystemDebugControl caching problemi che abbiamo dovuto fare un tuffo nel kernel. Il kernel esporta la routine chiamata NtSystemDebugControl, che contiene un'istruzione switch con il compito di dispacciamento alla funzionalità corretta in base al codice di controllo. Nel seguente Non descriverò ogni piccolo piccolo dettaglio del codice. La prima ragione è che ci sono molti dettagli che non sono pertinenti a ciò che stiamo guardando. In secondo luogo non ho decompilato il codice, ma seguito solo le parti rilevanti del disassemblaggio (da un kernel 2003 SP0 Windows Server). Il codice di gestione di controllo 10 chiama la routine non documentata _ExLockUserBuffer che rende le pagine nel nostro tampone (buffer *) residente, li blocca in memoria di codice, e ritorna (in un puntatore passato come parametro) un indirizzo virtuale spazio di sistema punta ad esso. Poi un'altra funzione non documentata denominata _KdpCopyMemoryChunks si chiama. I parametri passati ad esso sono tra gli altri l'indirizzo virtuale spazio di sistema che punta al nostro buffer, il numero di byte da copiare (lunghezza), e l'indirizzo di copia da (PhysicalAddress). Ora un'altra funzione non documentata si chiama: _MmDbgCopyMemory. Questa funzione esegue la copia effettiva dei dati. Ma prima che possa fare qualsiasi copia ha bisogno di avere un indirizzo virtuale della fonte, invece di un indirizzo fisico. Quindi chiama la nostra ultima funzione non documentata: _MiDbgTranslatePhysicalAddress. Ora siamo davvero in chiusura sulla risposta alla nostra domanda. _MiDbgTranslatePhysicalAddress riceve il nostro indirizzo fisico come parametro. Utilizza quindi una variabile chiamata _ValidKernelPte, che serve come una sorta di modello per il kernel PTE: s. Le bandiere del modello vengono combinati con l'indirizzo fisico per formare un PTE che punta alla pagina che vogliamo copiare. Poi il database PFN è indicizzato per trovare la voce corrispondente alla nostra pagina di origine. In questa voce gli sguardi del kernel alle bandiere CacheAttribute degli Stati u3.e1. Le bandiere CacheAttribute vengono poi utilizzati per impostare l'indice PAT nella PTE. Ora abbiamo la nostra risposta in realtà, ma continuerò un pochino più lontano comunque. Il PTE il kernel ha costruito è ora copiato nella posizione indicata dal _MmDebugPte variabile di kernel. Infine, la funzione restituisce l'indirizzo virtuale che utilizzerà il PTE per la mappatura. Ora _MmDbgCopyMemory è libero di copiare i dati dalla pagina di origine fisica al nostro buffer utilizzando solo indirizzi virtuali.


Memimager Software correlato

unnks.

Estrai i dati da NK e archivi NKX con questo strumento. ...

1,443 701 KB

Scarica