Suche nach Page Directories (3)

In einem Beitrag in seinem Blog beschreibt Jacky Wu, wie sich Page Directories in einem Speicherabbild von Microsoft Windows XP SP2 im PAE-Modus finden lassen.

Im x86-Modus lassen sich Speicherseiten durch die Überprüfung eines einzelnen DWORD als Page Directory (PD) identifizieren. Möglich ist dies, weil PDs selbstbezüglich sind.

Im PAE-Modus besteht das PD aus vier Speicherseiten (zu je 4 kiB) anstatt einer einzelnen Seite, wie im x86-Modus. Deshalb wird es etwas schwieriger, mittels des selben einfachen Kriteriums diese Seiten zu finden. Jacky Wu hat jetzt herausgefunden, dass im PAE-Modus das vierte PD selbstbezüglich ist, wenngleich an einem anderen als dem aus dem x86-Modus bekannten Offset.

In Ergänzung des von Jacky Wu angeführten Beispiels zeige ich nachfolgend die Ansicht eines PD im 010 Editor und einem entsprechenden Template.

Im oberen Bereich des Bildes ist die Page Directory Pointer Table (PDPT) sichtbar. Ihre vier Einträge verweisen auf die vier PDs. In diesem Beispiel sind die PDs in den Speicherseiten Nr. 0x311 bis 0x314 zu finden. Bitte beachten Sie, dass das vierte PD in der Seite Nr. 0x314 liegt.

Im unteren Teil des Bildes ist dieses PD und die ersten seiner Page Directory Entries (PDE) genauer dargestellt. Wie man deutlich erkennen kann, verweist der vierte PDE (PDE[3]) auf die Basisadresse des vierten PD. Also ist das PD auch im PAE-Modus selbstbezüglich. Beachten Sie bitte auch, dass die ersten drei PDEs auf die Speicherseiten der anderen drei PDs verweisen.

Die ersten vier PDEs des vierten PD könnten also auch als Page Directory Pointer Table dienen. Dies ist in einer von Wu's Grafiken auch so dargestellt.

Allerdings konnte ich unter Microsoft Windows XP SP2, build 5.1.2600.2622 dieses Verhalten nicht beobachten. Die folgende Auflistung zeigt einen Auszug aus dem Ergebnis von PTFinder. Dargestellt sind die Prozesse und der jeweilige Inhalt des CR3-Registers, das ja auf die PDPT verweist. Offensichtlich zeigt CR3 nicht auf den Beginn der vierten PDs eines Prozesses, sondern in eine von zwei Speicherseiten. Die Seite Nr. 0x310 enthält dabei die PDPT für den System/Idle-Prozess, während die PDPTs aller anderen Prozesse in Seite Nr. 0x5280 abgelegt sind.

No.  Type PID    CR3        Remarks
---- ---- ------ ---------- ----------------
   1 Proc      0 0x00310000 Idle            
   2 Proc    184 0x05280240 explorer.exe    
   3 Proc    796 0x052800e0 svchost.exe     
   4 Proc    476 0x05280040 csrss.exe       
   5 Proc    544 0x05280080 services.exe    
   6 Proc   1064 0x05280160 svchost.exe     
   7 Proc   1504 0x052801e0 alg.exe         
   8 Proc    412 0x05280020 smss.exe        
   9 Proc    720 0x052800c0 svchost.exe     
  10 Proc    236 0x05280100 VMwareTray.exe  
  11 Proc      4 0x00310000 System          
  12 Proc    452 0x052802a0 notepad.exe     
  13 Proc    556 0x052800a0 lsass.exe       
  14 Proc   1096 0x05280180 spoolsv.exe     
  15 Proc   1304 0x052801c0 VMwareService.e 
  16 Proc   2044 0x05280220 userinit.exe    
  17 Proc    500 0x05280060 winlogon.exe    
  18 Proc   1852 0x05280200 wuauclt.exe     
  19 Proc   1216 0x052801a0 netdde.exe      
  20 Proc    872 0x05280120 svchost.exe     
  21 Proc    244 0x05280260 VMwareUser.exe  
  22 Proc    944 0x05280140 svchost.exe     
  23 Proc    260 0x05280280 rundll32.exe  

Archiv

Impressum

Dieses Blog ist ein Projekt von:
Andreas Schuster
Im Äuelchen 45
D-53177 Bonn
impressum@forensikblog.de

Copyright © 2005-2012 by
Andreas Schuster
Alle Rechte vorbehalten.
Powered by Movable Type 5.12