[Archivio newsletter ^] [< Volume 2, Numero 3] [Volume 2, Numero 5 >]
Newsletter Systems Internals Volume 2, Numero 4
www.sysinternals.com
Copyright © 2000 Mark Russinovich
30 agosto 2000 - In questo numero:
EDITORIALE
NOVITÀ DI SYSINTERNALS
- ListDlls v2.23
- HandleEx v2.26
- ElogList v2.02
- LoggedOn v1.1
- Bluescreen v2.21
- PageDefrag v2.01
- LoadOrder v1.1
- ClockRes v1.0
- BgInfo v1.0
- Inside Windows 2000, 3rd Edition
- Sysinternals in Microsoft
INFORMAZIONI SU INTERNALS
- La potenza del privilegio DEBUG
- Nuove API in Win2K SP1?
- WinDev 2000 West
SVILUPPI FUTURI
- Tokenmon
CO-SPONSOR: WINTERNALS SOFTWARE
La newsletter Sysinternals è sponsorizzata da Winternals Software, presente sul Web all'indirizzo www.winternals.com. Winternals Software è il principale sviluppatore e provider di strumenti avanzati di sistemi per Windows NT/2K. I prodotti Winternals Software includono FAT32 per Windows NT 4.0, NTFSDOS Professional Edition (driver NTFS di lettura/scrittura per DOS) e Remote Recover.
ERD Commander 2000 di Winternals Software è l'ultima versione della premiata linea di prodotti ERD Commander. Le nuove funzionalità di ERD Commander 2000, inclusi gli editor di file e del Registro di sistema predefiniti, lo rendono lo strumento di ripristino di Windows NT e Windows 2000 più avanzato che esista. È possibile installare ERD Commander 2000 su dischi floppy, un CD-ROM e persino un disco rigido di un sistema per l'accesso rapido, e la relativa installazione guidata rende l'aggiunta di driver di archiviazione SCSI di terze parti e altri driver di archiviazione di massa un gioco da ragazzi. ERD Commander 2000 costa $349 o solo $49 per chi già possiede ERD Commander Professional. È possibile scoprire di più e scaricare la versione di valutazione all'indirizzo www.winternals.com/products/erdcommander2000.shtml.
CO-SPONSOR: WINDOWS 2000 MAGAZINE
Windows 2000 Magazine contiene soluzioni pratiche per coloro che usano Windows NT/2000 ogni giorno. È possibile ordinare un numero di esempio gratuito ora e senza rischi. Se si decide di continuare l'abbonamento, si riceveranno altri 13 numeri al 40% del prezzo di listino. Iscrivetevi subito all'indirizzo: http://www.win2000mag.com/sub.cfm?code=fs00inhs13
Ciao a tutti.
Vi do il benvenuto nella newsletter di Sysinternals. La newsletter conta attualmente 25.000 abbonati.
Ho trascorso molto tempo con Regmon, Filemon e DebugView, strumenti che Bryce ed io abbiamo sviluppato in Sysinternals. Regmon è un monitoraggio di accesso al Registro di sistema (www.sysinternals.com/regmon.htm), Filemon è un monitoraggio di accesso ai file (www.sysinternals.com/filemon.htm) e DebugView è un monitoraggio dell'output di debug (www.sysinternals.com/dbgview.htm). Occasionalmente trovo un'applicazione o un driver di dispositivo installato in uno dei vari sistemi che genera attività continue visibili in uno di questi strumenti. Non sto parlando di attività necessarie, tuttavia le azioni eseguite dal software sono di solito di natura ripetitiva e l'esame delle tracce di output rivela che il software usa una tecnica di polling in cui è possibile l'uso di un altro meccanismo meno intrusivo.
Ad esempio, vari scanner di virus commerciali eseguono query sul file di firma del virus più volte al secondo per vedere se è stato aggiornato. Uno dei miei sistemi ha un driver di stampante di un noto produttore di stampanti che restituisce continuamente istruzioni di debug che, tramite l'inclusione della parola "polling", annunciano che è in corso il polling. In uno dei miei esempi preferiti, un'utilità di un importante fornitore pubblicizzata come finalizzata a migliorare le prestazioni di sistema esegue query su diverse chiavi del Registro di sistema del fornitore più volte al secondo. Un esempio di un altro tipo di codifica approssimativo si trova in una scheda di rete di un importante fornitore che include un componente software in modalità utente contenente punti di interruzione di debug incorporati che vengono attivati continuamente durante l'esecuzione del software. Se un'applicazione deve rilevare una modifica al file, può richiedere una notifica di modifica della directory. Analogamente, se è necessario rilevare le modifiche apportate a una chiave del Registro di sistema, può richiedere una notifica di modifica della chiave e il software commerciale non deve mai contenere output di debug o punti di interruzione di debug abilitati per impostazione predefinita.
Forse l'esempio più assurdo, tuttavia, è il servizio Microsoft Windows Media Program Service che viene fornito in bundle con Windows 2000 Server (\Winnt\System32\Windows Media\Server\Npsm.exe
): legge i primi 2 kB di \Winnt\System32\Windows Media\Server\ASDB\mdsas.mdb
alla velocità di circa 60 volte al secondo in un sistema in cui per il resto non è presente alcuna attività, neanche la gestione dei supporti. Non esistono giustificazioni per questo, soprattutto per le possibili ripercussioni sulle prestazioni complessive del server.
Sono sicuro che chi ha usato Regmon, Filemon o DebugView per qualche tempo ha probabilmente incontrato esempi simili. Quando se ne incontra uno, non impostare un filtro per dimenticarsene, inviare piuttosto un messaggio di posta elettronica al fornitore per far presente che la programmazione è approssimativa.
Inoltrate la newsletter ai vostri amici che pensate potrebbero essere interessati a questi contenuti.
Grazie.
- Mark
NOVITÀ DI SYSINTERNALS
LISTDLLS V2.23
ListDLLs è un'utilità della riga di comando che mostra informazioni dettagliate sulle DLL caricate dai processi. Ad esempio, ListDLLs visualizza l'indirizzo di memoria di base, le dimensioni, la versione e il percorso completo di ogni DLL. Questa nuova versione mostra la riga di comando usata per avviare un processo, inclusi i parametri passati nella riga di comando. Ciò consente di distinguere tra più processi e risolvere i problemi correlati a specifiche opzioni della riga di comando.
Scaricare ListDLLs v2.23 all'indirizzo www.sysinternals.com/listdlls.htm.
HANDLEEX V2.26
HandleEx è un'applicazione che presenta informazioni sugli handle e sui processi DLL aperti o caricati. Il suo display è costituito da due finestre secondarie. Nella parte superiore viene sempre visualizzato un elenco dei processi attualmente attivi, inclusi i nomi dei relativi account, mentre le informazioni visualizzate nella finestra inferiore dipendono dalla modalità attiva di HandleEx: se HandleEx è in modalità handle, saranno visibili gli handle aperti dal processo selezionato nella finestra superiore; se è in modalità DLL, saranno visibili le DLL e i file mappati in memoria caricati dal processo.
La versione più recente di HandleEx include diverse nuove funzionalità. In primo luogo, come ListDLLs, viene ora visualizzata la riga di comando usata per avviare un processo quando si visualizzano le proprietà del processo stesso.
Uno dei limiti di HandleEx prima di questa versione era che, anche se visualizzava il nome dell'account in cui i processi di sistema e i processi della sessione di accesso erano in esecuzione, non era in grado di aggirare il modello di sicurezza di Windows NT/2000 per mostrare il proprietario dei processi avviati da altri account utente. Anche il programma Pview di Windows NT/2000 Resource Kit ha questa limitazione. Ciò si è reso dolorosamente evidente negli ambienti NT 4 Terminal Server e Windows 2000 Terminal Services, dove HandleEx indicava che i processi avviati da altre sessioni utente avevano proprietari sconosciuti. HandleEx v2.26 implementa un trucco per determinare l'account proprietario per tutti i processi, senza eccezione, rendendolo uno strumento ideale per gli ambienti di Terminal Services.
La nuova funzionalità finale di HandleEx v2.26 consente di forzare la chiusura di qualsiasi handle aperto. Ho aggiunto questa funzionalità dopo aver ricevuto molte richieste. È consigliabile usarla con estrema cautela, tuttavia, poiché le applicazioni in genere non vengono scritte per prevedere che gli handle diventino improvvisamente non validi e le applicazioni che hanno handle con chiusura forzata possono quindi comportarsi in modo irregolare o arrestarsi in modo anomalo.
Scaricare HandleEx v2.26 all'indirizzo www.sysinternals.com/handleex.htm.
ELOGLIST V2.02
Windows 2000 Resource Kit include uno strumento denominato ELogDmp che consente di eseguire il dump dei record da un registro eventi nel computer locale o remoto. ELogList è più potente di ElogDmp perché consente anche di specificare un nome e una password di account facoltativi per accedere ai registri eventi di un computer da un account diverso da quello da cui si esegue lo strumento. Inoltre, mentre lo strumento ElogDmp mostra le voci del registro eventi nel formato non elaborato, rendendo l'output difficile da interpretare, questo aggiornamento di ElogList formatta le voci del registro eventi per mostrare il testo come viene visualizzato nei Visualizzatori eventi di Windows NT/2000. Anche quando si visualizzano i registri eventi da sistemi remoti, ElogList usa i file di messaggio corretti nel sistema remoto per i dati delle stringhe di formattazione.
Scaricare ElogList v2.02 all'indirizzo www.sysinternals.com/eloglist.htm.
LOGGEDON V1.1
LoggedOn è un'applet della riga di comando che indica chi è connesso a un determinato computer, in locale o tramite condivisioni di risorse. L'aggiornamento della versione 1.1 consente di cercare nella rete le sessioni di accesso associate a un determinato utente. Questa funzionalità è utile nelle situazioni in cui si vogliono eseguire gli aggiornamenti a un account utente ed è necessario verificare che l'utente non sia attualmente connesso.
Scaricare LoggedOn v1.1 con il codice sorgente completo all'indirizzo www.sysinternals.com/misc.htm.
BLUESCREEN V2.21
La maggior parte di voi conosce ormai sicuramente il famoso screen saver BlueScreen di Sysinternals, che rappresenta accuratamente un arresto anomalo e un riavvio di Windows NT o Windows 2000. Dal rilascio iniziale ho ricevuto continuamente richieste dagli utenti di Windows 9x che vogliono eseguire lo screen saver nei loro computer, quindi l'ho finalmente convertito in Windows 9x. In Windows 9x simula un arresto anomalo e un riavvio di Windows 2000.
L'unico requisito per l'uso dello screen saver BlueScreen di Sysinternals in Windows 9x è ottenere una copia di un file Ntoskrnl.exe di Windows 2000 da inserire nella directory \Windows\System
. BlueScreen richiede il file per la schermata iniziale di Windows 2000.
Ora è davvero possibile confondere gli utenti di Windows 9x che tornano al loro computer e scoprono che è bloccato in un ciclo di arresto anomalo e riavvio di Windows 2000!
Scaricare BlueScreen Screen Saver v2.21 all'indirizzo www.sysinternals.com/bluescreen.htm.
PAGEDEFRAG V2.01
PageDefrag è un'utilità di deframmentazione eseguita all'avvio per deframmentare i file di paging del sistema e gli hive del Registro di sistema. PageDefrag è stata la prima utilità in grado di deframmentare gli hive del Registro di sistema, ma dal suo rilascio questa funzionalità è stata aggiunta a diversi deframmentatori commerciali. Tuttavia, PageDefrag è ancora gratuito e la versione 2.01 funziona in Windows 2000 e Windows NT 4.
Se si è interessati all'interfaccia di deframmentazione fornita da Windows NT 4 e Windows 2000, è possibile ottenere informazioni e scaricare il codice sorgente in un deframmentatore di file interattivo all'indirizzo www.sysinternals.com/defrag.htm. Sysinternals ha documentato l'interfaccia di deframmentazione anni prima che Microsoft la includesse in Platform SDK e diversi deframmentatori commerciali hanno fatto uso della nostra documentazione e del nostro codice di esempio.
Scaricare PageDefrag v2.01 all'indirizzo www.sysinternals.com/pagedfrg.htm. Consultare la documentazione dell'interfaccia di deframmentazione all'indirizzo www.sysinternals.com/defrag.htm.
LOADORDER V1.1
Vi siete mai chiesti in quale ordine vengono caricati e inizializzati i driver e i servizi dei dispositivi? Ora si può facilmente scoprire. LoadOrder è un'utilità che elabora le informazioni in HKLM\System\CurrentControlSet\Services
per creare un'immagine dell'ordine di caricamento di driver e servizi.
Scaricare LoadOrder v1.1 all'indirizzo www.sysinternals.com/misc.htm.
CLOCKRES V1.0
Nei miei articoli sull'utilità di pianificazione ho parlato del fatto che le quote di thread di Windows NT/2000 (la lunghezza del turno di un thread per l'esecuzione su una CPU) si basano sulla risoluzione dell'orologio di sistema. La risoluzione dell'orologio influisce anche sulla latenza degli eventi basati su timer di Windows. L'articolo all'indirizzo www.sysinternals.com/timer.htm illustra anche il modo in cui le applicazioni possono modificare la risoluzione dell'orologio. Nella maggior parte degli SMP, la risoluzione è di 15 ms, mentre negli uniprocessori è di 10 ms, valori impostati dagli HAL (Hardware Abstraction Layer) standard degli SMP e degli uniprocessori.
Mentre la maggior parte dei sistemi usa i valori comuni elencati in precedenza, come è possibile determinare la risoluzione effettiva dell'orologio nei computer? La risposta si trova nell'API Win32 GetSystemTimeAdjustment, che indica se il sistema applica una regolazione periodica all'orologio. Si dà il caso che questa API restituisca anche l'intervallo dell'orologio. L'applet ClockRes usa l'API per indicare la risoluzione dell'orologio di un sistema.
Scaricare ClockRes e il codice sorgente all'indirizzo www.sysinternals.com/misc.htm.
BGINFO V1.0
È probabile che gli amministratori responsabili di più server trascorrano molto tempo ad aprire varie finestre di dialogo informative per ricordare a se stessi i valori di varie proprietà del sistema, ad esempio la versione del Service Pack installata, gli indirizzi IP, il nome del computer, le dimensioni della memoria e la velocità del processore. Ora è possibile visualizzare tutte queste informazioni sul desktop di ogni server usando l'utilità BgInfo sviluppata da Bryce.
Quando viene eseguita, BgInfo crea uno sfondo del desktop che segnala automaticamente una serie di caratteristiche di sistema utili. È possibile inserire BgInfo nella cartella Start in modo che le informazioni siano disponibili ogni volta che si esegue l'accesso ed è possibile modificare i dati visualizzati da BgInfo, anche aggiungendo i propri. Con BgInfo installato nei server è possibile risparmiare il tempo altrimenti impiegato per cercare ripetutamente le informazioni dimenticate.
Scaricare BgInfo v1.0 all'indirizzo www.sysinternals.com/misc.htm.
INSIDE WINDOWS 2000, 3RD EDITION
Il libro ufficiale sui componenti interni di Windows 2000 è ora disponibile! Questa edizione, di cui sono coautori David Solomon (www.solsem.com) e Mark Russinovich, è più ampia del 40% rispetto alla precedente, con una nuova trattazione di reti, plug-and-play, gestione dell'alimentazione, servizi, Registro di sistema, WMI, avvio e arresto e archiviazione. Include anche un CD con diversi strumenti avanzati, non disponibili altrove, per l'analisi dei componenti interni di Windows 2000.
È possibile consultare il sommario del libro e ordinarlo ora all'indirizzo www.sysinternals.com/insidew2k.htm.
SYSINTERNALS IN WWW.MICROSOFT.COM
Non ho nuovi articoli della Knowledge Base che fanno riferimento a Sysinternals da segnalare, ma Microsoft ha aggiunto alcuni collegamenti di alto profilo a Sysinternals nella parte TechNet del suo sito. Il primo è nella rubrica "Ask Us About...Security" all'indirizzo www.microsoft.com/TechNet/security/au022800.asp, dove l'editorialista Joel Scambray avverte i lettori che NTFSDOS (www.sysinternals.com/ntfspro.htm) può essere usato da un utente malintenzionato per alterare il contenuto di Active Directory di un controller di dominio di Windows 2000.
Il secondo riferimento si trova nella rubrica "Inside Microsoft" all'indirizzo www.microsoft.com/technet/inside/default.asp. La colonna è di tipo Q&A e inizia con due domande correlate alla determinazione dell'applicazione con un file specifico aperto. Nella risposta, in cui i lettori vengono indirizzati a HandleEx (www.sysinternals.com/handleex.htm) e NtHandle (www.sysinternals.com/nthandle.htm), l'autore dell'articolo ("Mole") dice questo di Sysinternals: "Ci sono una marea di ottime utilità che non costano un centesimo. Anche Mole fa riferimento a Sysinternals di tanto in tanto (Come? Non penserete mica che Mole abbia tutte queste informazioni nella sua testa?) Ancora una volta, è qui che vi invierà". Questo è quanto di più vicino a un'approvazione ufficiale del sito da parte di Microsoft ci si possa aspettare.
INFORMAZIONI SU INTERNALS
LA POTENZA DEL PRIVILEGIO DEBUG
A differenza di altri monitoraggi dell'output di debug, tra cui dbmon, il monitoraggio dell'output di debug di DebugView (www.sysinternals.com/dbgview.htm) richiede privilegi di amministratore locale per l'esecuzione, perché installa un driver di dispositivo che acquisisce l'output di debug in modalità kernel. Di conseguenza, ho ricevuto decine di e-mail da sviluppatori che lamentano che il management non assegna loro privilegi di amministratore locale, ma solo il privilegio Debug. L'argomentazione è che il privilegio Debug esiste per un motivo, ed è tutto ciò di cui gli sviluppatori di applicazioni hanno bisogno per la loro attività. Questi sviluppatori mi chiedono di modificare DebugView in modo che installi il driver solo se l'utente ha privilegi di amministratore e in caso contrario raccolga solo l'output di debug Win32.
Queste richieste mi fanno sempre sorridere, perché ciò che il management che porta avanti l'argomentazione del privilegio Debug non capisce è che questo privilegio apre la porta ai privilegi di amministratore locale. Usando il privilegio Debug, uno sviluppatore può far sì che un debugger si colleghi al processo dell'autorità di sicurezza locale (LSASS) e lo modifichi per ottenere i privilegi di amministratore locale al successivo accesso. In alternativa è possibile inserire codice in qualsiasi processo in esecuzione nell'account di sistema per aggiungere il proprio account al gruppo di amministratori locale. Quando spiego questo agli sviluppatori che si lamentano, a volte rispondono che il management non accetta l'argomentazione. Fino ad ora non avevo nulla che gli sviluppatori potessero sottoporre al management per far valere le loro ragioni, ma una recente ondata di queste e-mail mi ha spinto ad agire.
LogonEx, un'utilità che è possibile scaricare all'indirizzo www.sysinternals.com/logonex.zip, mostra graficamente il peso del privilegio Debug. LogonEx funziona in Windows NT e Windows 2000. Per mostrarlo al meglio, creare un account che sia un account utente normale, ad eccezione dell'aggiunta del privilegio "Debug di programmi". Disconnettersi e accedere con tale account, quindi eseguire LogonEx. Saranno necessari i file di simboli per msv1_0.dll per l'installazione specifica (gli sviluppatori hanno di solito simboli di sistema installati) usati da LogonEx per individuare il punto di ingresso della funzione MsvpPasswordValidate
e applicare la patch. Dopo che LogonEx ha eseguito la patch, sarà possibile accedere al sistema usando qualsiasi account senza specificare una password. Completare la dimostrazione accedendo come amministratore e aggiungendo l'account creato al gruppo di amministratori locale.
LogonEx è solo un esempio di come il privilegio Debug consenta a uno sviluppatore di assumere il controllo di un sistema, ma ce ne sono molti altri. Spero che LogonEx convinca il management che non ha senso non concedere agli sviluppatori privilegi di amministratore locale. Si noti, tuttavia, che non sto parlando di privilegi di amministratore di dominio, che sono completamente diversi. Un amministratore locale regna sovrano solo sul proprio computer, non su altri, mentre un amministratore di dominio ha il controllo di una rete.
NUOVE API IN WIN2K SP1?
Dopo che molti utenti hanno riscontrato problemi con i Service Pack (SP) NT 4 che causano nuovi bug, Microsoft ha adottato il criterio di non includere nuove funzionalità in un SP per ridurre al minimo la possibilità di introdurre nuovi problemi durante la correzione di quelli precedenti. O almeno così pensavamo. Windows 2000 SP 1 è stato rilasciato di recente e sembrava non avere nuove funzionalità. Tuttavia, un esame approfondito di Ntoskrnl.exe, il file che contiene i componenti di esecuzione e kernel di Windows 2000, e di Ntdll.dll, la libreria che contiene l'API nativa e il caricatore, rivela che una nuova API ha fatto il suo debutto in SP 1.
La nuova API è costituita dalle funzioni seguenti:
RtlTraceDatabaseAdd
RtlTraceDatabaseCreate
RtlTraceDatabaseDestroy
RtlTraceDatabaseEnumerate
RtlTraceDatabaseFind
RtlTraceDatabaseLock
RtlTraceDatabaseUnlock
RtlTraceDatabaseValidate
I nomi delle funzioni sono piuttosto descrittivi, quindi si tratta chiaramente di un'API per la registrazione degli eventi. Un aspetto interessante dell'API è che la sua implementazione è duplicata in Ntdll e Ntoskrnl, diversamente da altre API Ntdll che chiamano i servizi di un'implementazione in Ntoskrnl.
L'esame dell'implementazione dell'API mostra che viene usata in questo modo: un'applicazione crea un database di traccia, archiviato nella memoria virtuale dell'applicazione, e aggiunge voci al database. A un certo punto l'applicazione può enumerare il contenuto del database e al termine dell'operazione con il database che lo elimina. Stranamente, non sembra esserci un modo per eliminare le voci del database.
Cosa fa uso di questa nuova API? Niente che sia presente nella mia installazione di Windows 2000 Advanced Server che è abbastanza completa, quindi non è chiaro se qualcosa lo faccia. Forse si tratta di un'API di debug che è stata accidentalmente inclusa nel codice di versione SP 1.
Pubblicato mercoledì 30 agosto 2000 alle 19:07 da ottoh
[Archivio newsletter ^] [< Volume 2, Numero 3] [Volume 2, Numero 5 >]