Dela via


[Nyhetsbrev arkiv ^][< Volym 2, nummer 3][Volym 2, nummer 5 >]

System Internals Newsletter Volym 2, Nummer 4

www.sysinternals.com
Copyright © 2000 Mark Russinovich


30 augusti 2000 – I det här problemet:

  1. REDAKTIONELLA

  2. NYHETER PÅ 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
    • Inuti Windows 2000, 3rd Ed.
    • Sysinternals på Microsoft
  3. INTERN INFORMATION

    • Kraften i DEBUG-behörigheten
    • Nya API:er i Win2K SP1?
    • WinDev 2000 West
  4. VAD KOMMER UPP

    • Tokenmon

MEDSPONSOR: WINTERNALS SOFTWARE

Sysinternals Nyhetsbrev sponsras av Winternals Software, på webben på www.winternals.com. Winternals Software är den ledande utvecklaren och leverantören av avancerade systemverktyg för Windows NT/2K. Winternals Software-produkter inkluderar FAT32 för Windows NT 4.0, NTFSDOS Professional Edition (en läs-/skriv-NTFS-drivrutin för DOS) och Remote Recover.

Winternals Softwares ERD Commander 2000 är den senaste versionen i sin prisbelönta ERD Commander-produktlinje. ERD Commander 2000:s nya funktioner, inklusive inbyggda register- och filredigerare, gör det till det mest avancerade återställningsverktyget för Windows NT och Windows 2000. Du kan installera ERD Commander 2000 på disketter, en CD-ROM och till och med ett systems hårddisk för snabb åtkomst, och installationsguiden gör det enkelt att lägga till SCSI från tredje part och andra drivrutiner för masslagring. ERD Commander 2000 är $ 349, eller bara $ 49 för befintliga ERD Commander Professional ägare. Läs mer och ladda ned utvärderingsversionen på www.winternals.com/products/erdcommander2000.shtml.

MEDSPONSOR: WINDOWS 2000 MAGAZINE

Windows 2000 Magazine innehåller praktiska lösningar för personer som arbetar med Windows NT/2000 varje dag. Beställ ett kostnadsfritt exempelproblem nu och utan risk. Om du bestämmer dig för att fortsätta din prenumeration får du ytterligare 13 problem till 40 % jämfört med tidningskioskens pris. Prenumerera idag på: http://www.win2000mag.com/sub.cfm?code=fs00inhs13

Hej!

Välkommen till Sysinternals nyhetsbrev. Nyhetsbrevet har för närvarande 25 000 prenumeranter.

Jag tillbringar mycket tid i Regmon, Filemon och DebugView, verktyg som Bryce och jag har utvecklat på Sysinternals. Regmon är en registeråtkomstövervakare (www.sysinternals.com/regmon.htm), Filemon är en övervakare för filåtkomst (www.sysinternals.com/filemon.htm) och DebugView är en övervakning av felsökningsutdata (www.sysinternals.com/dbgview.htm). Ibland stöter jag på en program- eller enhetsdrivrutin installerad på ett av mina flera system som genererar kontinuerlig aktivitet som är synlig i något av dessa verktyg. Jag talar inte om nödvändig aktivitet, men de åtgärder som programvaran utför är vanligtvis av repetitiv karaktär och undersökning av utdataspårningar avslöjar att programvaran använder en avsökningsteknik där användningen av någon annan mindre påträngande mekanism är möjlig.

Till exempel frågar olika kommersiella virusskannrar sin virussignaturfil flera gånger i sekunden för att se om den har uppdaterats. Ett av mina system har en skrivardrivrutin från en större skrivartillverkare som kontinuerligt matar ut felsökningsuttryck som genom att inkludera ordet "avsökning" annonserar att de avsöker. I ett av mina favoritexempel frågar ett verktyg som annonseras som att förbättra systemprestandan från en större leverantör av verktyg flera av leverantörens registernycklar flera gånger i sekunden. Ett exempel på en annan typ av slarvig kodning finns i ett nätverkskort från en större nätverksleverantör som innehåller en programvarukomponent i användarläge som innehåller inbäddade felsöknings brytpunkter som kontinuerligt körs när programvaran körs. Om ett program behöver identifiera en filändring kan det begära ett katalogändringsmeddelande. På samma sätt kan den om den behöver identifiera ändringar i en registernyckel begära ett meddelande om nyckeländring, och kommersiell programvara bör aldrig innehålla felsökningsutdata eller felsöknings brytpunkter som är aktiverade som standard.

Det kanske mest avskyvärda exemplet är dock Microsoft Windows Media Program Service som levereras med Windows 2000 Server (\Winnt\System32\Windows Media\Server\Npsm.exe): den läser de första 2 KB \Winnt\System32\Windows Media\Server\ASDB\mdsas.mdb av med en hastighet av cirka 60 gånger per sekund i ett system där det annars inte finns någon aktivitet (inklusive ingen mediatjänst). Det finns ingen ursäkt för detta, särskilt eftersom detta kan påverka serverns övergripande prestanda negativt.

Jag är säker på att om du har använt Regmon, Filemon eller DebugView under en längre tid har du förmodligen stött på liknande exempel. När du ser ett, ställ inte bara in ett filter och glöm det, skicka ett e-postmeddelande till leverantören och klaga på deras slarviga programmering.

Skicka nyhetsbrevet till vänner som du tror kan vara intresserade av dess innehåll.

Tack!

-Markera

NYHETER PÅ SYSINTERNALS

LISTDLLS V2.23

List-DLL:er är ett kommandoradsverktyg som visar detaljerad information om de DLL:er som processerna har läst in. List-DLL:er visar till exempel den grundläggande minnesadressen, storleken, versionen och den fullständiga sökvägen för varje DLL. Den här nya versionen visar kommandoraden som användes för att starta en process, inklusive alla parametrar som skickades på kommandoraden. Detta kan hjälpa dig att skilja mellan flera processer och felsöka problem som rör specifika kommandoradsalternativ.

Ladda ned ListDLLs v2.23 på www.sysinternals.com/listdlls.htm.

HANDLEEX V2.26

HandleEx är ett program som visar information om vilka handtag och DLL-processer som har öppnats eller lästs in. Dess visning består av två underfönster. Överst visas alltid en lista över de aktiva processerna, inklusive namnen på deras ägande konton, medan informationen som visas i det nedre fönstret beror på det läge som HandleEx är i: om HandleEx är i handtagsläge ser du de referenser som processen som valts i det övre fönstret har öppnats. Om den är i DLL-läge ser du de DLL-filer och minnesmappade filer som processen har läst in.

Den senaste versionen av HandleEx innehåller flera nya funktioner. Först, precis som list-DLL:er, visar den nu kommandoraden som användes för att starta en process när du visar processens egenskaper.

En av bristerna i HandleEx före den här versionen var att även om det visade namnet på det konto där systemprocesser och processer för inloggningssessionen kördes, kunde det inte kringgå windows NT/2000-säkerhetsmodellen för att visa ägaren av processer som startats från andra användarkonton (Pview-programmet från Windows NT/2000 Resource Kits lider också av denna begränsning). Detta var smärtsamt uppenbart i NT 4 Terminal Server- och Windows 2000 Terminal Services-miljöer, där HandleEx angav att processer som startades från andra användarsessioner hade okända ägare. HandleEx v2.26 implementerar ett trick så att det kan fastställa ägandekontot för alla processer, utan undantag, vilket gör det till ett idealiskt verktyg för Terminal Services-miljöer.

Den sista nya funktionen i HandleEx v2.26 gör att du kan tvinga stängda alla öppna handtag. Jag har lagt till den här funktionen efter att ha fått många förfrågningar om den. Jag rekommenderar att du använder det med extrem försiktighet, men eftersom program i allmänhet inte är skrivna för att förvänta sig att handtagen plötsligt kan bli ogiltiga, och program med handtag som tvingas stängas kan bete sig oberäkneligt eller krascha som ett resultat.

Ladda ned HandleEx v2.26 på www.sysinternals.com/handleex.htm.

ELOGLIST V2.02

Windows 2000 Resource Kit innehåller ett verktyg med namnet ELogDmp som gör att du kan dumpa poster från en händelselogg på den lokala datorn eller en fjärrdator. ELogList är kraftfullare än ElogDmp eftersom du även kan ange ett valfritt kontonamn och lösenord så att du kan komma åt en dators händelseloggar från ett annat konto än det som du kör verktyget från. Dessutom, medan ElogDmp-verktyget visar händelseloggposter i sin råa form, vilket gör utdata svåra att tolka, formaterar denna ElogList-uppdatering händelseloggposter för att visa text som den visas i Windows NT/2000-Loggboken s. Även när du visar händelseloggar från fjärrsystem använder ElogList rätt meddelandefiler i fjärrsystemet för sina formateringssträngsdata.

Ladda ned ElogList v2.02 på www.sysinternals.com/eloglist.htm.

LOGGEDON V1.1

LoggedOn är en kommandorads-applet som anger vem som är inloggad på en viss dator, antingen lokalt eller via resursresurser. Med version 1.1-uppdateringen kan du söka i nätverket efter inloggningssessioner som är associerade med en viss användare. Den här funktionen är användbar i situationer där du vill utföra uppdateringar av ett användarkonto och måste kontrollera att användaren inte är inloggad för tillfället.

Ladda ned LoggedOn v1.1 med full källkod på www.sysinternals.com/misc.htm.

BLUESCREEN V2.21

De flesta av er är vid det här laget utan tvekan bekant med den berömda Sysinternals Blue Screen-skärmsläckaren, som korrekt visar en Windows NT- eller Windows 2000-krasch och omstart. Sedan den första versionen har jag kontinuerligt fått förfrågningar från Windows 9x-användare som vill köra skärmsläckaren på sina datorer, så jag har äntligen portat den till Windows 9x. I Windows 9x simuleras en Windows 2000-krasch och omstart.

Det enda kravet för att använda Sysintenals Blue Screen-skärmsläckaren på Windows 9x är att du hämtar en kopia av en Windows 2000 Ntoskrnl.exe-fil för att placera i \Windows\System katalogen – Blå skärm kräver filen för Windows 2000-välkomstskärmen.

Nu kan du verkligen förvirra intet ont anande Windows 9x användare som kommer tillbaka till sin dator bara för att upptäcka att det har fastnat i en Windows 2000 krasch och omstart cykel!

Ladda ned Bluescreen Screen Saver v2.21 på www.sysinternals.com/bluescreen.htm.

PAGEDEFRAG V2.01

PageDefrag är ett defragmenteringsverktyg som körs vid starttiden för att defragmentera systemets växlingsfiler och registreringsdatafiler. PageDefrag var det första verktyget som kunde defragmentera registerdatafiler, men sedan lanseringen har funktionen lagts till i flera kommersiella defraggers. PageDefrag är dock fortfarande kostnadsfritt och version 2.01 fungerar på Windows 2000 samt Windows NT 4.

Om du är intresserad av defrag-gränssnittet från Windows NT 4 och Windows 2000 kan du lära dig om det och ladda ned källkod till en interaktiv fildefragmenterare på www.sysinternals.com/defrag.htm. Sysinternals dokumenterade defrag-gränssnittet flera år innan Microsoft inkluderade det i Platform SDK, och flera kommersiella defragmenterare använde vår dokumentation och exempelkod.

Ladda ned PageDefrag v2.01 på www.sysinternals.com/pagedfrg.htm. Visa dokumentationen för defrag-gränssnittet på www.sysinternals.com/defrag.htm.

LOADORDER V1.1

Har du någonsin undrat i vilken ordning enhetsdrivrutiner och tjänster läser in och initierar? Nu kan du enkelt ta reda på det. LoadOrder är ett verktyg som bearbetar informationen under HKLM\System\CurrentControlSet\Services för att skapa en bild av drivrutins- och tjänstbelastningsordningen.

Ladda ned LoadOrder v1.1 på www.sysinternals.com/misc.htm.

CLOCKRES V1.0

I mina artiklar om schemaläggaren har jag talat om det faktum att Windows NT/2000 tråd quanta (längden på en tråds tur att köra på en CPU) baseras på upplösningen av systemklockan. Klockans upplösning påverkar också svarstiden för Windows-timerbaserade händelser. Artikeln på www.sysinternals.com/timer.htm diskuterar till och med hur programmen kan manipulera klockans upplösning. På de flesta SMP:er är upplösningen 15 ms och på enprocessorer är dess 10 ms värden som anges av standard-SMP och uniprocessor-HAL:er (Hardware Abstraction Layer).

Även om de flesta system använder de vanliga värden som anges ovan, hur kan du fastställa den faktiska upplösningen på klockan på dina datorer? Svaret ligger i Win32-API:et GetSystemTimeAdjustment, som anger om systemet tillämpar en periodisk justering av klockan för tid på dagen. Det råkar vara så att det här API:et också returnerar klockintervallet. ClockRes-appleten använder API:et för att berätta upplösningen för systemets klocka.

Ladda ned ClockRes plus källa på www.sysinternals.com/misc.htm.

BGINFO V1.0

Om du är administratör med ansvar för flera servrar ägnar du förmodligen mycket tid åt att öppna olika informationsdialogrutor för att påminna dig själv om värdena för olika systemegenskaper, till exempel installerad service pack-version, IP-adresser, datornamn, minnesstorlek och processorhastighet. Nu kan du ha all denna information i klar vy på varje servers skrivbord med hjälp av BgInfo-verktyget som Bryce utvecklade.

När du kör den skapar BgInfo en skrivbordsbakgrund som automatiskt rapporterar en mängd användbara systemegenskaper. Du kan placera BgInfo i din Start-mapp så att informationen är tillgänglig för dig när du loggar in, och du kan ändra de data som BgInfo visar, till och med lägga till dina egna. När BgInfo är installerat på dina servrar sparar du den tid som du upprepade gånger har lagt på att leta upp lätt bortglömd information.

Ladda ned BgInfo v1.0 på www.sysinternals.com/misc.htm.

INUTI WINDOWS 2000, 3RD EDITION

Den officiella boken om det interna i Windows 2000 är nu tillgänglig! Denna utgåva, som är medförfattare av David Solomon (www.solsem.com) och Mark Russinovich, är över 40% större än den tidigare, med ny täckning av nätverk, plug-and-play, energisparfunktioner, tjänster, registret, WMI, start och avstängning och lagring. Den innehåller även en CD med flera kraftfulla verktyg, som inte är tillgängliga någon annanstans, för att undersöka interna Windows 2000-enheter.

Se bokens innehållsförteckning och ordning nu via www.sysinternals.com/insidew2k.htm.

SYSINTERNALS AT WWW.MICROSOFT.COM

Jag har inga nya KB-artiklar som refererar till Sysinternals att rapportera, men Microsoft har lagt till några ganska högprofilerade länkar till Sysinternals i TechNet-delen av sin webbplats. Den första är i "Fråga oss om... Säkerhetskolumn på www.microsoft.com/TechNet/security/au022800.asp, där kolumnisten Joel Scambray varnar läsarna för att NTFSDOS (www.sysinternals.com/ntfspro.htm) kan användas av en obehörig användare för att ändra innehållet i en Windows 2000-domänkontrollants Active Directory.

Den andra referensen finns i kolumnen "Inside Microsoft" på www.microsoft.com/technet/inside/default.asp. Kolumnen är i Q&A-stil och börjar med två frågor som rör att avgöra vilket program som har en viss fil öppen. Under svar, där läsarna pekas på HandleEx (www.sysinternals.com/handleex.htm) och NtHandle (www.sysinternals.com/nthandle.htm), säger artikelns författare ("Mole") detta om Sysinternals: "Det finns bara massor av bra verktyg däri som inte kostar dig en krona. Även Mole refererar till Sysinternals då och då (Vad? Du trodde kanske Mole har all denna information i huvudet?). Än en gång, det är här han kommer att skicka dig." Detta är ungefär så nära ett officiellt godkännande av webbplatsen av Microsoft som vi kan förvänta oss.

INTERN INFORMATION

KRAFTEN I FELSÖKNINGSPRIVILEGIET

Till skillnad från andra övervakare av felsökningsutdata, inklusive dbmon, kräver min DebugView debug-output monitor (www.sysinternals.com/dbgview.htm) lokala administratörsbehörigheter för körning, eftersom den installerar en enhetsdrivrutin som samlar in felsökningsutdata i kernelläge. Som ett resultat har jag fått dussintals e-postmeddelanden från utvecklare som klagar på att deras hantering inte ger dem lokala administratörsbehörigheter, bara felsökningsprivilegiet. Argumentet säger att felsökningsprivilegiet finns där av en anledning och att alla programutvecklare behöver utveckla det. Dessa utvecklare ber mig att ändra DebugView så att den bara installerar drivrutinen om användaren har administratörsbehörighet och annars bara samlar in Win32-felsökningsutdata.

Dessa begäranden ger mig alltid ett skratt, eftersom det som ledningen som gör argumentet Debug-privilege inte inser är att det här privilegiet öppnar dörren till lokala administratörsbehörigheter. Med hjälp av felsökningsprivilegiet kan en utvecklare ha en felsökningsanslutning till LSASS-processen (Local Security Authority) och ändra den så att de får lokala administratörsbehörigheter vid nästa inloggning. Eller så kan de mata in kod i alla processer som körs i systemkontot som skulle lägga till sitt konto i den lokala administratörsgruppen. När jag förklarar detta för de klagande utvecklarna svarar de ibland att deras ledning inte köper argumentet. Hittills har jag inte haft något för dem att ta tillbaka till sin ledning för att göra sitt fall, men ett nyligen utslag av sådana e-postmeddelanden har fått mig att vidta åtgärder.

LogonEx, ett verktyg som du kan ladda ned på www.sysinternals.com/logonex.zip, visar grafiskt kloningen av felsökningsprivilegiet. LogonEx fungerar på Windows NT och Windows 2000. För att visa upp det bäst skapar du ett konto som är ett normalt användarkonto förutom med tillägget av behörigheten "Felsöka program". Logga ut och logga in under det kontot och kör LogonEx. Du behöver symbolfilerna för msv1_0.dll för din installation (utvecklare har vanligtvis systemsymboler installerade), som LogonEx använder för att hitta startpunkten för funktionen och korrigera den MsvpPasswordValidate . När LogonEx har gjort sin korrigering kan du logga in på systemet med något konto utan att ange ett lösenord. Slutför demonstrationen genom att logga in som administratör och lägga till kontot som du skapade i den lokala administratörsgruppen.

LogonEx är bara ett exempel på hur felsökningsprivilegiet gör det möjligt för en utvecklare att ta kontroll över ett system, men det finns många andra. Jag hoppas att LogonEx övertygar ledningen om att det inte är meningsfullt att inte ge utvecklare lokala administratörsprivilegier (Observera dock att jag inte talar om domänadministratörsprivilegier, vilket är en annan historia en lokal administratör regerar högsta endast över sin egen dator, inte några andra, medan en domänadministratör styr ett nätverk).

NYA API:AR I WIN2K SP1?

Efter att många användare har stött på problem med NT 4-servicepaket (SP) som orsakar nya buggar, antog Microsoft en princip för att inte inkludera några nya funktioner i ett SP för att minimera risken för att de skulle införa nya problem när de åtgärdade gamla. Eller så tänkte vi. Windows 2000 SP 1 släpptes nyligen och verkade inte ha några nya funktioner. En detaljerad kontroll av Ntoskrnl.exe, filen som innehåller Windows 2000 executive- och kernelkomponenterna, och Ntdll.dll, biblioteket som innehåller det interna API:et och inläsaren, visar dock att ett nytt API gjorde sin debut i SP 1.

Det nya API:et består av följande funktioner:

   RtlTraceDatabaseAdd
   RtlTraceDatabaseCreate
   RtlTraceDatabaseDestroy
   RtlTraceDatabaseEnumerate
   RtlTraceDatabaseFind
   RtlTraceDatabaseLock
   RtlTraceDatabaseUnlock
   RtlTraceDatabaseValidate

Namnen på funktionerna är ganska beskrivande, så det här är helt klart ett API för loggningshändelser. En intressant aspekt av API:et är att dess implementering dupliceras i Ntdll och Ntoskrnl. Detta skiljer sig från andra Ntdll-API:er som anropar tjänsterna för en implementering i Ntoskrnl.

Undersökningen av API:ets implementering visar att det används så här: ett program skapar en spårningsdatabas som lagras i programmets virtuella minne och lägger till poster i databasen. Vid något tillfälle kan programmet räkna upp innehållet i databasen och när det är klart med databasen tas den bort. Konstigt nog verkar det inte finnas något sätt att ta bort databasposter.

Vad använder det här nya API:et? Ingenting som är installerat på min ganska full-funktioner Windows 2000 Advanced Server installation, så det är inte klart att något gör. Kanske var detta ett felsöknings-API som av misstag ingick i SP 1-versionskoden.

Publicerad onsdag 30 augusti 2000 19:07 av ottoh

[Nyhetsbrev arkiv ^][< Volym 2, nummer 3][Volym 2, nummer 5 >]