Memimager

Voert een geheugendump uit met NTSYSTEMDEBUGCONTROOL
Download nu

Memimager Rangschikking & Samenvatting

Advertentie

  • Rating:
  • Vergunning:
  • Freeware
  • Naam uitgever:
  • Arne Vidstrom
  • Besturingssystemen:
  • Windows All
  • Bestandsgrootte:
  • 7 KB

Memimager Tags


Memimager Beschrijving

De memimager-applicatie is ontworpen om een hulpmiddel te zijn dat een geheugendump uitvoert met behulp van NTSYSTEMDEBUGCONTROL. NTSYSTEMDEBUGCONTROL gebruiken voor dumping Voor controlecode 10 gebruiken we een struct met de volgende lay-out als invoerbuffer: - DWord PhysicyAddress; - DWORD RESERVED1; - ongeldig * buffer; - DWORD-lengte; Vervolgens kunnen we bijvoorbeeld Malloc A Page-formaat buffer waarmee we buffer naartoe wijzen, schrijf 4096 in lengte en Point PhysicalAddress naar het adres van de pagina die we willen kopiëren van de inhoud van. Dan voeren we NTSYSTEMDEBUGCONTROL uit en als alles goed gaat, bevat onze buffer nu een kopie van de gegevens op de fysieke pagina. Vrij triviaal eigenlijk. Inside NtsystemDebugcontrol Om te begrijpen of, en zo ja, hoe, hoe, NTSYSTEMDEBUGCONTROL behandelt cachingproblemen, moeten we een duik nemen in de kernel. De kernel exporteert de routine die NTSYSTEMDEBUGCONTROL wordt genoemd, die een schakelafschrift bevat dat is belast met verzending op de juiste functionaliteit op basis van de besturingscode. In het volgende zal ik het kleine detail van de code niet beschrijven. De eerste reden dat er veel details zijn die niet relevant zijn voor waar we naar kijken. Ten tweede heb ik de code niet decompileerden, maar volgde alleen de relevante delen van de demontage (van een Windows Server 2003 SP0-kernel). De codebehandelingscontrolecode 10 noemt de ongedocumenteerde routine _exlockuserbuffer die de pagina's in onze buffer (* buffer) bewoner maakt, vergrendelt ze in het geheugen en retourneert (in een pointer die wordt gepasseerd als een parameter) een systeemruimte virtueel adres erop. Dan wordt een andere functie zonder papieren genaamd _kdpcopymemorychunks genoemd. De parameters die door zijn geslaagd, zijn onder andere het virtuele adres van het systeemruimte dat naar onze buffer wijzend, het aantal bytes om (lengte) en het adres te kopiëren van (PhysilyAddress). Nu nog een andere functie zonder papieren wordt genoemd: _mmdbgcopymemory. Deze functie voert het eigenlijke kopiëren van de gegevens uit. Maar voordat het kan worden gekopieerd, moet het een virtueel adres van de bron hebben in plaats van een fysiek adres. Daarom noemt het onze laatste functie zonder papieren: _midbgtranslatephysicalAddress. Nu sluiten we echt in op het antwoord op onze vraag. _MidbgtranslatephysicalAddress ontvangt ons fysieke adres als parameter. Het gebruikt vervolgens een variabele genaamd _validkernelpte, die dient als een soort sjabloon voor kernel Pte: s. De vlaggen van de sjabloon worden gecombineerd met het fysieke adres om een PTE te vormen die naar de pagina wijzen die we willen kopiëren. Dan wordt de PFN-database geïndexeerd om het item te vinden dat overeenkomt met onze bronpagina. In dit bericht kijkt de kernel naar de cacheattribute-vlaggen van het U3.E1-lid. De cacheattribute vlaggen worden vervolgens gebruikt om de PAT-index in de PTE in te stellen. Nu hebben we ons antwoord echt, maar ik zal toch een klein beetje verder gaan. De PTE De kernel heeft gebouwd, wordt nu gekopieerd naar de locatie die wordt aangegeven door de kernelvariabele _mmdebugpte. Ten slotte retourneert de functie het virtuele adres dat de PTE voor mapping zal gebruiken. Nu is _mmdbgcopymemory vrij om de gegevens van de fysieke bronpagina naar onze buffer alleen te kopiëren met behulp van virtuele adressen.


Memimager Gerelateerde software