Zine.net online

Witaj na Zine.net online Zaloguj się | Rejestracja | Pomoc
w Szukaj

mgrzeg.net - Admin on Rails :)

Pliki prefetchera

Dziś krócej i z nieco innej działki, ale również 'internalsowo'. Oczywiście kontynuujemy serię 'zagadkową'.

Począwszy od Windows XP mamy dostępny mechanizm prefetchera, pozwalający na przyspieszenie ładowania aplikacji do pamięci podczas jej uruchamiania. Fizycznie pliki prefetchera znajdują się w katalogu %SystemRoot%\Prefetch i mają rozszerzenie .pf, dla przykładu uruchomienie notatnika (64-bit) generuje nam plik
NOTEPAD.EXE-D8414F97.pf
Prefetcher monitoruje pierwsze 10 sekund startu aplikacji, a w ramach metadanych zapisanych przez prefetcher dla danej aplikacji, możemy znaleźć:
- sygnatury czasowe: utworzenia oraz ostatniego uruchomienia;
- liczbę uruchomień;
- wolumen: ścieżka, numer seryjny;
- listę plików: plików i katalogów wykorzystanych podczas startu aplikacji, a więc bibliotek oraz innych plików ładowanych przez loader oraz otwieranych i zapisywanych przy starcie.
W plikach .pf nie ma zapisanej informacji o nazwie użytkownika, który aplikację uruchamiał, niemniej jednak na podstawie listy plików bardzo często można dojść do tego, w kontekście którego użytkownika aplikacja została uruchomiona (pliki z katalogów %APPDATA%, lub %LOCALAPPDATA%). W internecie można znaleźć całkiem sporo gotowych narzędzi do parsowania plików .pf, a przykładowy wynik może wyglądać następująco (tu użyję skryptu perl z materiałów do książki):

>pref.pl -f \Windows\Prefetch\REG.EXE-E7E8BD26.pf -p -i -v
\Windows\Prefetch\REG.EXE-E7E8BD26.pf     Tue Sep  3 12:24:01 2013 (12)

EXE Name            : REG.EXE
Volume Path         : \DEVICE\HARDDISKLVFS000
Volume Creation Date: Tue Apr 19 18:05:10 2011 Z
Volume Serial Number: 9653-9D9B

\DEVICE\HARDDISKVOLUME2\WINDOWS\SYSTEM32\NTDLL.DLL
\DEVICE\HARDDISKLVFS000\WINDOWS\SYSTEM32\KERNEL32.DLL
\DEVICE\HARDDISKLVFS000\WINDOWS\SYSTEM32\APISETSCHEMA.DLL
\DEVICE\HARDDISKLVFS000\WINDOWS\SYSTEM32\KERNELBASE.DLL
\DEVICE\HARDDISKLVFS000\WINDOWS\SYSTEM32\LOCALE.NLS
\DEVICE\HARDDISKLVFS000\WINDOWS\SYSTEM32\REG.EXE
\DEVICE\HARDDISKLVFS000\WINDOWS\SYSTEM32\ADVAPI32.DLL
\DEVICE\HARDDISKLVFS000\WINDOWS\SYSTEM32\MSVCRT.DLL
\DEVICE\HARDDISKVOLUME2\WINDOWS\SYSTEM32\SECHOST.DLL
\DEVICE\HARDDISKLVFS000\WINDOWS\SYSTEM32\SECHOST.DLL
\DEVICE\HARDDISKLVFS000\WINDOWS\SYSTEM32\RPCRT4.DLL
\DEVICE\HARDDISKLVFS000\WINDOWS\SYSTEM32\USER32.DLL
\DEVICE\HARDDISKLVFS000\WINDOWS\SYSTEM32\GDI32.DLL
\DEVICE\HARDDISKLVFS000\WINDOWS\SYSTEM32\LPK.DLL
\DEVICE\HARDDISKLVFS000\WINDOWS\SYSTEM32\USP10.DLL
\DEVICE\HARDDISKLVFS000\WINDOWS\SYSTEM32\WS2_32.DLL
\DEVICE\HARDDISKLVFS000\WINDOWS\SYSTEM32\NSI.DLL
\DEVICE\HARDDISKLVFS000\WINDOWS\SYSTEM32\SHLWAPI.DLL
\DEVICE\HARDDISKVOLUME2\WINDOWS\SYSTEM32\IMM32.DLL
\DEVICE\HARDDISKLVFS000\WINDOWS\SYSTEM32\IMM32.DLL
\DEVICE\HARDDISKLVFS000\WINDOWS\SYSTEM32\MSCTF.DLL
\DEVICE\HARDDISKVOLUME2\WINDOWS\GLOBALIZATION\SORTING\SORTDEFAULT.NLS
\DEVICE\HARDDISKLVFS000\WINDOWS\GLOBALIZATION\SORTING\SORTDEFAULT.NLS
\DEVICE\HARDDISKVOLUME2\WINDOWS\SYSTEM32\PL-PL\KERNELBASE.DLL.MUI
\DEVICE\HARDDISKLVFS000\WINDOWS\SYSTEM32\PL-PL\KERNELBASE.DLL.MUI

Szczególnie ciekawy jest plik NTOSBOOT-B00DFAAD.pf, który (zgodnie z opisem M.Russinovicha) zawiera informacje związane ze startem systemu (do 30 sek od startu powłoki (explorera), lub 60 sek. od startu usług, lub 120 sekund od początku startu systemu, zależnie od tego, co będzie pierwsze).

W przypadku instalacji na dyskach SSD system (od Windows 7) domyślnie wyłącza mechanizm prefetchera.

Opublikowane 5 września 2013 12:58 przez mgrzeg
Filed under:

Powiadamianie o komentarzach

Jeżeli chciałbyś otrzymywać email gdy ta wypowiedź zostanie zaktualizowana, to zarejestruj się tutaj

Subskrybuj komentarze za pomocą RSS

Komentarze:

Brak komentarzy

Co o tym myślisz?

(wymagane) 
(opcjonalne)
(wymagane) 

  
Wprowadź kod: (wymagane)
Wyślij

Subskrypcje

W oparciu o Community Server (Personal Edition), Telligent Systems