Memory dump w Windows 7
Blue Screen jest dla mnie jednym z najciekawszych trybów pracy systemu. Wiem, ze wielu uzytkowników nie podziela mojego zdania, ale pod tym niebieskim ekranem dzieja sie naprawde interesujace rzeczy.
Jedna z nich jest tworzenie zrzutu pamieci. To nie jest takie proste jak sie moze wydawac, ale z punktu uzytkownika widac przede wszystkim interfejs. A w nim (w oknie Startup and Recovery) jest wybór zawartosci dumpa. Tradycyjnie, opcje sa cztery:
- (none) – dla tych, którzy nie maja ochoty dowiedziec sie dlaczego system dziala inaczej niz oczekuja
- Small Memory Dump – zapisywany jest zawsze, niezaleznie od tego co uzytkownik wybierze. Zawiera bardzo podstawowe, ale czesto wystarczajace informacje. Pliki maja unikalne nazwy i zbieraja sie do analizy (domyslnie 50 ostatnich) jak ktos kiedys zechce. https://msdn.microsoft.com/en-us/library/cc266485.aspx
- Kernel Memory Dump – zapisuje pamiec jadra. Przy kolejnym zrzucie plik jest nadpisywany. https://msdn.microsoft.com/en-us/library/cc266504.aspx
- Complete memory dump – zapisuje na dysk cala pamiec. https://msdn.microsoft.com/en-us/library/cc266494.aspx
I mimo, ze w nowszych systemach w szczególach cos sie zmienia, to ogólna idea pozostaje taka sama "od zawsze". W Windows 7 pojawia sie jednak drobny problem:
Nie ma opcji zrzutu calej pamieci. Moze i slusznie...? Nie wiem. Wiem za to, ze jezeli ktos bardzo chce – moze ja sobie wlaczyc przez rejestr. W galezi HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl jest wartosc CrashDumpEnabled. Tam zapisany jest tryb zrzutu, gdzie:
- 0 oznacza brak zrzutu,
- 1 – zrzut pelny,
- 2 – zrzut jadra,
- 3 – small dump.
Wystarczy wpisac tam 1 i nie dosc, ze beda sie wykonywac pelne zrzuty, to jeszcze brakujaca opcja pojawi sie w GUI. Tak swoja droga, na komputerach z iloscia pamieci RAM mniejsza niz 2GB opcja ta jest normalnie widoczna. Ot takie ustawienie, zeby "grzebacz" nie wlaczyl sobie mechanizmu wrzucajacego mu na dysk ogromne pliki. Nie wiem, czy lubie jak ktos do tego stopnia mysli za mnie, ale znajac trik z rejestrem, nie mam w tym przypadku wielkiego problemu.
Tak swoja droga, dla niemyslacych, Microsoft przygotowal jeszcze jedna niespodzianke. Jezeli Windows 7 nie jest w domenie i ma mniej niz 25GB wolnego miejsca na dysku – zrzut sie nie wykona. Oczywiscie mozna to sobie w rejestrze wlaczyc (AlwaysKeepMemoryDump=1). Troche wiecej informacji na ten temat mozna znalezc na https://blogs.msdn.com/wer/archive/2009/02/09/kernel-dump-storage-and-clean-up-behavior-in-windows-7.aspx
Autor: Grzegorz Tworek [MVP]
Comments
Anonymous
January 01, 2003
no to jeszcze jedna przykra niespodzianka - jak nei ma pliku stronicowania na dysku C to dump też się nie wykona... A przynajmniej nie pozwoli się włączyć.Anonymous
January 01, 2003
Tak, wystarczy. Nawet mniejsze dumpy czy dumpy procesów już dają dostęp do naprawdę ciekawych informacji.Anonymous
January 01, 2003
Ano nie wykona się. Dump wykonuje się do pliku stronicowania na C a przy najbliższym restarcie jest przepisywany. Ma to swój sens, ale faktycznie może w niektórych (dość egzotycznych) scenariuszach sprawiać problem.Anonymous
January 20, 2010
Wystarczy wpisać tam 1 i nie dość, że będą się wykonywać pełne zrzuty, to jeszcze brakująca opcja pojawi się w GUI.Anonymous
April 16, 2014
czyli jednym słowem wystarczy, że atakujący poprzez exploit wysypie system wywołując ustawionego przez użytkownika dumpa pełnej pamięci i jeśli wejdzie w jego posiadanie ma dostęp do dosyć istotnych danych. Fajnie :)