windows - C ++: Dump RAM indhold

Indlæg af Hanne Mølgaard Plasc

Problem




  • Hvordan kan jeg opnå det uden at udløse en adgangslovgivning?



Jeg har forsøgt at have en bool pointer sat til en bestemt start placering og derefter øge det trin for trin. Dette resulterer i en adgangsfejl.


Jeg bruger Visual Studio 2010

Bedste reference


Windows er et virtuelt hukommelsesoperativsystem. Hvilket betyder, at softwaren omhandler 'hukommelse' - som måske, eller måske ikke, bliver cachelagret i RAM på et eller andet tidspunkt. En hel del processer hukommelse lagres sandsynligvis på disken - i sidebilledet eller som en del af en filmapping.


Så så, hvis du nedgraderer fra 'dumping RAM' til 'dumpingminne', så skal du spørge dig selv 'hvilken hukommelse'.


Udover at være et virtuelt hukommelses-operativsystem beskytter Windows også applikationer fra hinanden - hver proces får deres eget private adresserum til hukommelsen. Så du skal bestemme, hvilken hukommelse du vil dumpe. vores egen proces? Det er nemt. Brug VirtualQuery til at undersøge blokke og dump dem ud.


Ser man på en anden proces? Det er mere kompliceret. Der er sikkerhedsbarrierer, der forhindrer usikrede applikationer i at kigge på mere betroede processer. VirtualQueryEx giver dig mulighed for at undersøge en anden proces, hvis du har tilstrækkelige rettigheder.


Endelig, hvis du vil undersøge kernehukommelsen, skal du udvikle en slags driver: Bruger kode er ikke tilladt at kigge på kernehukommelse overhovedet.

Andre referencer 1


Det er OS-specifikt. For Windows kan du bruge VirtualQuery() for at hente kortet over 'læsbare' hukommelsessider.

Andre referencer 2


Du kan oprette en dumpfil ved hjælp af MiniDumpWriteDump (), og udforske det, da du bare er nysgerrig. [2]

Andre referencer 3


For at følge op på @Johns svar, hvis du vil inspicere hukommelsen og anden tilstand af en løbende proces, skal du virkelig lære om DbgHelp API. Dette er et ikke-trivielt forsøg, i det væsentlige skriver du din egen debugger . [3]


En simpel minidump, som John foreslog, ville være en god start, der ikke kræver samme indsats, men som ville give dig mulighed for at inspicere et øjebliksbillede af processtaten.