Delen via


[Nieuwsbrievenarchief ^] [Volume 1, getal 2 >]

The Systems Internals Newsletter Volume 1, Number 1

http://www.sysinternals.com


14 april 1999 - In dit onderwerp:

  1. WAT IS ER NIEUW IN INTERNE SYSTEMEN

    • VolumeID voor Windows 9x
    • EFSDump
    • ListDLLs voor Compaq Alpha
    • "Binnen het opstartproces, deel 2"
    • My April Windows NT Magazine Article
    • Geen tegoed waar het verschuldigd is
    • Niet zo nieuw spul
  2. INTERN NIEUWS

    • Win2K Driver Verifier
    • Y2K testen met Boot.ini
  3. WAT KOMT ER AAN DE DAG?

    • In wachtrij geplaatste spinlocks in Win2K
    • Tokenmon

SPONSOR: WINTERNALS SOFTWARE

De Systems Internals Newsletter wordt gesponsord door Winternals Software, op het web op http://www.winternals.com. Winternals Software is de toonaangevende ontwikkelaar en provider van geavanceerde systeemhulpprogramma's voor Windows NT/2K. Winternals Software-producten omvatten FAT32 voor Windows NT 4.0, ERD Commander (opstartschijfmogelijkheid voor Windows NT) en NTRecover.

Hallo allemaal,

Welkom bij de eerste installatie van de Systems Internals Newsletter. Ik ben blij om te zeggen dat de nieuwsbrief al 1000 abonnees heeft gekregen sinds de aankondiging een beetje meer dan een week geleden.

Mijn doel in de nieuwsbrief is om u tijdig informatie te geven over nieuwe hulpprogramma's en artikelen die worden weergegeven op Systems Internals, plus u tidbits van informatie over Interne Windows-producten die geen geschikt forum hebben op de website Systems Internals. Als u opmerkingen of suggesties hebt met betrekking tot de nieuwsbrief, kunt u ze doorgeven aan mij op mark@.... Stuur ook de nieuwsbrief door naar iedereen die u kent die er mogelijk interesse in heeft. Aan het einde van de nieuwsbrief worden instructies gegeven voor het abonneren, afmelden of wijzigen van uw abonnement.

Hartelijk dank!

-Merken

WAT IS ER NIEUW IN INTERNE SYSTEMEN

VOLUMEID VOOR WINDOWS 9X

Hoewel u met Windows NT en Windows 9x het label op een logisch station of diskette kunt wijzigen met behulp van de opdracht Label, kunt u de volume-id's die ze willekeurig toewijzen, niet wijzigen wanneer u stations formatteert. Het VolumeID-programma, dat meer dan een jaar beschikbaar is voor Windows NT op de site Systems Internals, is net overgezet naar Windows 9x. Met deze applet kunt u de volume-id's op harde schijven en diskettes wijzigen in wat u wilt.

VolumeID maakt gebruik van API's waarmee toepassingen rechtstreeks naar logische stations kunnen lezen en schrijven, en op Win9x, fysieke stations (diskettes), waarbij bestandssystemen worden overgeslagen. In Windows NT/2K VolumeID wordt reguliere ReadFile en WriteFile gebruikt voor toegang tot onbewerkte stationsgegevens. De truc is in hoe deze de naam van het volume aangeeft dat het wil openen. U vindt meer informatie over het openen van fysieke of logische stations vanuit een toepassing onder Windows NT/2K in het Microsoft Knowledge Base-artikel Q100027. Voor Windows 9x-toegang tot logische stations kunt u uw code baseren op voorbeeldcode die is opgegeven in het Microsoft Knowledge Base-artikel Q174569. Als u directe toegang tot diskettestations vanuit uw toepassing op Windows 9x wilt uitvoeren, gebruikt u de Win32 IOCTL-VWIN32_DIOC_DOS_INT13, die wordt beschreven in MSDN.

VolumeID downloaden op http://www.sysinternals.com/misc.htm.

EFSDUMP

Windows 2000 is het debuut van de ingebouwde technologie voor bestandsversleuteling van Microsoft, het Encrypting File System. Met EFS zijn er een aantal nieuwe API's voor het bewerken van versleutelde bestanden, waaronder één QueryUsersOnEncryptedFile, waarmee u kunt zien welke gebruikers zijn geregistreerd voor toegang tot versleutelde bestanden en welke gebruikers zijn geregistreerd als Recovery Agents voor die bestanden. Ik heb een klein programma met de naam EFSDump geschreven waarmee u deze informatie gemakkelijk kunt zien voor versleutelde bestanden op uw systeem.

Hoewel ik bezig ben met EFS-API's, zijn er een aantal nieuwe API's die niet zijn gedocumenteerd vanaf MSDN van april, iets wat behoorlijk storend is in deze late fase in de releasecyclus van Windows 2000. Met name OpenEncryptedFileRaw, ReadFileEncryptedRaw, WriteFileEncryptedRaw en CloseEncryptedFileRaw (alle worden geëxporteerd door win2K's ADVAPI32.DLL) zijn momenteel niet-gedocumenteerd. Het gebruik van deze API's is vereist voor elke toepassing die een back-up van versleutelde bestanden wil maken, wat betekent dat Microsoft informatie over hen alleen doorgeeft om partners te selecteren, of dat back-upsoftwarebedrijven hun producten buiten de deur moeten halen wanneer Microsoft ze uiteindelijk openbaar documenteert. Een ding is zeker, de ontwikkelaars van het NTBACKUP-programma van Windows 2000 hebben al toegang gehad tot de API-documentatie: Win2K Beta 3's NTBACKUP maakt actief gebruik van de API's.

Als je geïnteresseerd bent in EFS internals, kijk dan eens naar mijn tweedelige serie van juni/juli op EFS in mijn kolom "NT Internals" in Windows NT Magazine. In het artikel beschrijf ik precies waar FEK's (File Encryption Keys) en gebruikers EFS-sleutels worden opgeslagen, hoe het versleutelingsproces wordt uitgevoerd door NTFS, het EFS-stuurprogramma en LSASRV (de subserver van de lokale beveiligingsinstantie), en natuurlijk hoe ontsleuteling werkt.

EFSDump downloaden met volledige broncode op http://www.sysinternals.com/misc.htm.

LISTDLLS VOOR COMPAQ ALPHA

Het aantal hulpprogramma's dat beschikbaar is voor de Alpha at Systems Internals blijft groeien. De meest recente toevoeging is ListDLLs, een opdrachtregelprogramma waarmee u DLL-gegevens voor actieve processen kunt weergeven. Met mijn HandleEx-hulpprogramma kunt u deze informatie zien, evenals informatie over de ingangen (bestanden, processen, threads, synchronisatieobjecten) die processen hebben geopend, maar HandleEx is een GUI-hulpprogramma, zodat het niet altijd handig is (het kan bijvoorbeeld niet worden uitgevoerd in een batchbestand).

Bent u benieuwd naar de verhouding van downloads van de x86-versie van het typische hulpprogramma Systems Internals naar de bijbehorende Alpha-versie? Het is ongeveer 20:1, dat de schattingen van de industrie nauw bijhoudt van de geïnstalleerde Alpha NT-gebruikersbasis als 5% van de totale NT-markt.

U kunt ListDLLs en andere Alfa-poorten, waaronder HandleEx, downloaden op http://www.sysinternals.com/alpha.htm.

"BINNEN HET OPSTARTPROCES, DEEL 2"

Mijn kolom "NT Internals" van Windows NT Magazine is nu online beschikbaar via de website van Windows NT Magazine. U vindt er een koppeling naar, evenals naar de kolommen Deel 1 en oudere "NT Internals", op de pagina Publicaties op Systems Internals: http://www.sysinternals.com/publ.htm.

MIJN ARTIKEL OVER WINDOWS NT MAGAZINE VAN APRIL

Kijk ook naar mijn functieartikel in het aprilnummer van Windows NT Magazine, 'Linux en de Enterprise'. Ik onthul verschillende belangrijke problemen met betrekking tot de Linux 2.2-kernel- en netwerkservertoepassingen ('enterprise'-toepassingen) die uiteindelijk verhinderen dat deze versie van de Linux-kernel met NT en andere UNIX-varianten concurreren in termen van prestaties.

GEEN TEGOED WAAR HET VERSCHULDIGD IS

Op een gerelateerde opmerking hebt u mogelijk gehoord van de onlangs uitgebrachte D.H. Brown (een analistbedrijf) op linux-functionaliteit als een bedrijfsbesturingssysteem. Het blijkt dat de auteur van het rapport zwaar "geleend" is van een e-mail van mij die iemand openbaar heeft gepost naar de Linux-kernel Usenet-nieuwsgroep in januari. Als u toegang hebt tot het rapport en de pagina's (44 en 45) leest over Linux en multiprocessors (het rapport is niet openbaar beschikbaar- u moet het kopen voor een flinke som) en vervolgens mijn e-mail lezen op Deja News, ziet u een directe parallelle, tot kleine details.

NIET ZO NIEUW SPUL

Ik gebruik deze sectie van de nieuwsbrief om recente wijzigingen op de site Systems Internals weer te geven waarvan u mogelijk niet op de hoogte bent en/of om meer informatie te geven over een hulpprogramma dan wat beschikbaar is op de site. Een paar weken geleden hebben we Bijvoorbeeld Filemon v4.1 uitgebracht. Deze versie van Filemon kan de activiteit Named Pipe en Mail Slot bewaken onder Windows NT/2K. De uitbreiding van de code die nodig was om dit te ondersteunen, was relatief klein, omdat Named Pipes en Mailslots worden geïmplementeerd als stuurprogramma's voor het bestandssysteem. Het harde deel (tijdrovend) was het uitzoeken van de privé-IOCTLs (I/O Control Commands) die door deze speciale bestandssystemen worden ondersteund, zodat Filemon ze kan weergeven. U kunt Filemon downloaden (dat werkt op Windows NT/2K en Windows 9x) op http://www.sysinternals.com/filemon.htm.

Als u meer wilt weten over hoe Filemon intern werkt, raadpleegt u de kolom "NT Internals" van februari windows NT Magazine, die de titel "Inside NT Utilities" heeft. In het artikel wordt beschreven hoe u Filemon, Regmon, NTFSDOS, NewSID en HandleEx gebruikt, en hoe deze werken.

INTERN NIEUWS

WINDOWS 2000 DRIVER VERIFIER

Windows 2000 Beta 3 introduceert een zeer krachtige ontwikkelhulp voor apparaatstuurprogramma's genaamd Driver Verifier. Dit hulpprogramma werkt met code in de kernel om controle te krijgen over uw stuurprogramma en deze uit te oefenen voor naleving van kernelmodusregels op een manier die niet eerder mogelijk was. Buggy-apparaatstuurprogramma's zijn veruit de belangrijkste bijdrage aan de reputatie van veel mensen dat NT een instabiel besturingssysteem is, en dit hulpprogramma is gericht op het herstellen van die reputatie door stuurprogrammaschrijvers te helpen hun bugs te vinden voordat gebruikers dat doen.

Verschillende soorten subtiele problemen kunnen het maken door middel van informele tests van bestuurders (het meest voorkomende type tests dat wordt uitgevoerd onder strikte time-to-market-beperkingen) en zelfs door ernstige stresstests glijden. Eén type veelvoorkomend stuurprogrammaprobleem is een stuurprogramma dat toegang heeft tot gepaginad geheugen op 'verhoogde IRQL' (hoge interruptprioriteit). Als het geheugen dat het stuurprogramma gebruikt fysiek aanwezig is op het moment van de toegang (het is niet naar het wisselbestand gepagineerd), wordt de illegale toegang onopgemerkt. Laat een stuurprogramma los dat deze regel schendt in de wild-world-of-users en zijn gebonden om te verschijnen, wat resulteert in een Blue Screen-crash.

Een ander type veelvoorkomende programmeerfout voor stuurprogramma's is dat een ontwikkelaar de code schrijft met de aanname dat gepaginad en/of niet-paginad geheugen altijd beschikbaar is, d.w.v. dat ze de retourwaarden voor toewijzingen niet controleren. Als de pool opraakt en het stuurprogramma een NULL-buffer ontvangt, krijgt het stuurprogramma een vrolijke deductie van het systeem in een Blauw scherm. Hoewel pooluitputting zeldzaam is, is het niet iets dat een systeembeheerder een blauw scherm moet geven. Een gerelateerde geheugenfout is een bufferoverschrijding of underrun, waarbij een stuurprogramma leest of schrijft buiten een buffer die is toegewezen.

De stuurprogrammaverifier lost IRQL-problemen op door aanroepen te vervangen door alle functies die IRQLs in een stuurprogramma bewerken (bijvoorbeeld KeRaiseIrqlKeAcquireSpinLock) met bijbehorende verifier kernelfuncties (VerifierKeRaiseIrql, VerifierKeAcquireSpinLock) op het moment dat het stuurprogramma wordt geladen. Wanneer de IRQL wordt verheven tot of hoger, roept de verifier-code een interne memory manager-functie aan DISPATCH_LEVEL , MmTrimAllPageableSystemMemory()om alle gepaginade gegevens uit het fysieke geheugen te forceren. Het moment waarop een stuurprogramma de IRQL-regel onderbreekt voor het niet openen van paginabare gegevens of code van DISPATCH_LEVEL of hoger, detecteert Memory Manager de poging om toegang te krijgen tot een niet-huidige pagina en genereert een blauw scherm. Hierdoor kan een ontwikkelaar snel deze soorten bugs vangen voordat het stuurprogramma buiten de deur komt, omdat ze fouten in de crash kunnen opsporen en hun stuurprogramma op de foutstack kunnen zien zitten.

De stuurprogrammaverifier bereikt het testen van geheugengebruik met het patchen van de importtabel van het stuurprogramma om te worden geverifieerd, zodat het stuurprogramma verifier geheugenfuncties aanroept in plaats van de standaard kernelversies. Een aanroep naar ExAllocatePool wordt bijvoorbeeld vervangen door een aanroep naar VerifierAllocatePool. Er zijn twee technieken die de Verifier gebruikt om een ontwikkelaar te helpen snel geheugenfouten te vinden. Het eerste is dat er een speciale groep geheugen wordt gebruikt waarbij een beveiligingspagina (een beveiligingspagina een ongeldige pagina is) net voorbij het einde van de buffer wordt geplaatst. Daarnaast wordt het deel van de pagina waarin de buffer wordt toegewezen die voorafgaat aan de buffer gevuld met een handtekening. Overschrijdingen die zich binnen een pagina buiten het einde van een buffer bevinden, worden onmiddellijk gedetecteerd omdat ze resulteren in illegale paginafouten op de beveiligingspagina. Underruns die betrekking hebben op wijzigingen in gegevens voorafgaand aan een buffer, worden gedetecteerd door de Verifier wanneer het stuurprogramma de toewijzing van het geheugen ongedaan maakt, omdat de handtekening is gewijzigd.

Stuurprogramma's die altijd niet-lege pool verwachten, worden misleid bij het genereren van crashes door de Verifier met het gebruik van de "geheugenfoutinjectie". U kunt de verifier zodanig configureren dat toewijzingen van een groepstoewijzing van een stuurprogramma willekeurig mislukken.

Er zijn een aantal andere fouttypen waarvoor de Stuurprogrammacontrole controleert, waaronder IRP-consistentie (I/O-aanvraagpakket) en alleen-lezenbeveiliging van systeem- en stuurprogrammacodepagina's.

Als u een ontwikkelaar van apparaatstuurprogramma's bent, doet u uzelf, uw bedrijf en de NT-community een plezier door te testen met de Verifier. Houd er rekening mee dat u ook uw NT 4.0-stuurprogramma's moet testen die compatibel zijn met Win2K zodra u toegang hebt tot de Driver Verifier (de meeste ontwikkelaars krijgen het met MSDN's verzending van Win2K Beta 3 eind april of mei).

Zie Driver Verifier voor meer informatie.

Y2K TESTEN MET OPSTARTEN. INI

Als u regelmatig de interne systeemwebsite controleert, bent u waarschijnlijk al op de hoogte van de nieuwe Win2K niet-gedocumenteerde BOOT. INI switch, /YEAR. Ik heb niet vermeld op de website dat de switch ook wordt ondersteund door NT 4.0 Service Pack 4. Met deze switch kunt u NT en alle software op een NT-systeem spoofen om te denken dat het een ander jaar is. Bijvoorbeeld: /YEAR=2001 zou het systeem laten denken dat het 2001 was in plaats van 1999. De switch is dus ideaal voor het testen van Y2K-problemen op elk softwareniveau en het voordeel van het gebruik ervan in plaats van de BIOS-klok handmatig opnieuw in te stellen (bijvoorbeeld via de klok applet) is dat de wijziging tijdelijk en alleen actief is wanneer u opstart naar een installatie met de switch die aanwezig is in de BOOT. INI-lijn. Hierdoor kunt u eenvoudig een speciale Y2K-installatie maken door een bestaande opstartlijn van de BOOT te nemen. INI, dupliceren en de schakeloptie /YEAR toevoegen.

WAT KOMT ER AAN DE DAG?

Verwacht de volgende nieuwsbrief over een paar weken. De interne tip die ik voor u de volgende keer heb, gaat over Spinlocks in wachtrij, een nieuw type spinlock dat Windows 2000 gebruikt voor de globale spinlocks. Dit zijn de globale spinlocks die bestaan in Windows 2000:

  • KiDispatcherLock: de scheduler-databasevergrendeling
  • KiContext-SwapLock: de vergrendeling voor het wisselen van gelezen vlakken
  • MmPfnLock: de databasevergrendeling van het fysieke paginaframe
  • MmSystemSpaceLock: de adresruimtevergrendeling in de kernelmodus
  • CcMasterSpinLock: de globale spinlock van Cache Manager
  • CcVacbSpinLock: de toewijzingsmatrixvergrendeling van CacheBeheer

In plaats van gewone kernel spinlocks (KeAcquireSpinLock, KeReleaseSpinLock) te gebruiken voor deze globale vergrendelingen als NT 4.0, gebruikt de Windows 2000-kernel in de wachtrij spinlocks (KeAcquireQueuedSpinLock, KeReleaseQueuedSpinLock). Deze vergrendelingen hebben enkele interessante eigenschappen die de activiteit van de bus op KMO's minimaliseren. De volgende keer dat ik u vertel hoe spinlocks in de wachtrij worden geïmplementeerd.

Binnenkort beschikbaar op Systems Internals is Tokenmon, nog een ander bewakingsprogramma. Tokenmon toont gedetailleerde informatie over alle tokengerelateerde activiteiten op uw systeem, waaronder aanmeldingen, afmeldingen, gebruik van bevoegdheden en imitatie.


Bedankt voor het lezen van de systems Internals Newsletter.

Gepubliceerd woensdag 14 april 1999 1999 17:16 door ottoh

[Nieuwsbrievenarchief ^] [Volume 1, getal 2 >]