2014-05-15 22 views
5

Vorrei poter collegare un indirizzo fisico e leggere i dati memorizzati a quell'indirizzo.Leggere la memoria fisica in Windows 8

Sotto Linux, vorrei utilizzare /dev/mem per acquisire questi dati. Sotto Windows 8, non sono sicuro di quale meccanismo sia disponibile per farlo.

Il mio caso d'uso è l'ispezione di un dispositivo PCI Express. Il dispositivo PCI Express crea un ring buffer ad un indirizzo conosciuto, che posso determinare dalla BAR PCIe. Una volta che questo indirizzo è stato impostato, non cambierà fino al riavvio del computer.

Attualmente, posso utilizzare le applicazioni come RW Everything per visualizzare i dati lì, ma mi piacerebbe poterlo fare senza l'interazione dell'utente (senza la GUI) in modo da avere meno problemi con i buffer dell'anello che si stanno spostando prima che io possa accedere ai dati.

Qualcuno sa se c'è una chiamata di sistema di Windows privilegiata che posso fare da userspace (ad mmap una regione per esempio) o devo usare un modulo del kernel personalizzato per fare questo? Immagino che ci sia un modo per farlo senza un modulo del kernel personalizzato, perché non credo di averne installato uno quando ho installato RW Everything.

+0

@AndrewMedico: Tranne che per una cosa. L'obiettivo effettivo di quell'utente è quello di leggere la memoria di un processo. Quindi ha a che fare con la memoria virtuale e tutto ciò che comporta. Non ne ho bisogno. La memoria a cui voglio accedere è bloccata in posizione. –

+0

Avresti bisogno di un driver del kernel (e diritti di amministratore per installarlo), come WinIO, trovato qui: http://www.internals.com/ (con sorgente). Se hai solo bisogno di leggere i dati SMBIOS (nel tuo caso PCI), è mappato nel registro qui: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ mssmbios \ Data e forse è abbastanza buono, oppure puoi anche usare l'API WMI o Windows: http://msdn.microsoft.com/en-us/library/windows/desktop/ms724259(v=vs.85).aspx –

risposta

7

Poiché Windows Server 2003 SP1, l'accesso in modalità utente alla memoria fisica non è stato possibile. Dovrai sviluppare un driver per farlo (o trovare uno strumento di terze parti che include uno).

Da Technet:

In Windows Server 2003 SP1, l'accesso in modalità utente all'oggetto \ PhysicalMemory \ Device non è permesso. Tutte le forme di accesso (lettura, scrittura) vengono rifiutate quando si accede all'oggetto \ Device \ PhysicalMemory da un'applicazione in modalità utente. L'accesso all'oggetto \ Device \ PhysicalMemory viene rifiutata indipendentemente dal contesto utente (amministratori, utenti, Sistema locale, etc.) l'applicazione è in esecuzione in.

+0

Grazie per la risposta deprimente, ma corretta. Ho iniziato a utilizzare WinIO (come suggerito da Simon Mourier) per fornire al driver del kernel questo lavoro. –

2

Ci sono molte finestre software per accedere alla memoria fisica, tuttavia , molti di loro non possono accedere alla memoria fisica in Windows Vista o 7 a causa della funzione di protezione della memoria fisica in questi sistemi operativi.

ci sono molte finestre strumenti simili a dev uno/mem di Unix, come ad esempio:

  • Belkasoft diretta RAM Caputer
  • WindowsSCOPE Pro e Ultimate, disponibile presso http://www.windowsscope.com
  • WindowsSCOPE diretta
  • winen .exe (software di guida - incluso in Encase 6.11 e successive)
  • DDM (Memory DD) (ManTech)
  • MANDIANT Memoryze
  • Kntdd
  • Moonsols
  • HBGary
  • FTK Imager
  • OSForensics
  • WinPmem; e
  • di Windows lettore di memory

Controllare questo wiki per ulteriori informazioni: http://www.forensicswiki.org/wiki/Tools:Memory_Imaging

Problemi correlati