Agysebészet kőbaltával

Nem, most nem Matolcsyról fogok beszélni. Bár vad dolgok ebben az írásban is lesznek.

Habár az előzményekről már esett szó a privát blogomban (itt és itt és itt) – leginkább dühöngés és káromkodás formájában – de itt, ebben az írásban valamelyest újra felelevenítem ezeket, immár higgadtabban és szakmai szemmel.

Tehát a jelenség az volt, hogy 9-én este, amikor le akartam játszani egy videót a médiailag felturbózott Windows 2008 R2 szerveren, elment a hang, illetve beszaggatott a kép, minden lejátszóprogramban. Már amelyik egyáltalán elindult. Bementem a Control Panel / Programs panelbe, kiszórtam az összes Creative programot és drivert, emellett kiszórtam mindent, amit felesleges hulladéknak, telepítési szemétnek tartottam. A videólejátszás rögtön megjavult, a hang nyilván nem, de egyfelől írtam Jánosnak – akitől a hangkártyát kaptam kipróbálásra – hogy mi is ennek a szutyoknak a pontos neve, másfelől megrendeltem egy párezer forintos USB hangkártyát, mert több helyen is írták, hogy a HP ML110 PCI csatija nem annyira szereti a hangkártyákat.
Reggel, még az ágyban, átfutottam az éjszakai leveleket, ott volt benne a hangkártya pontos neve. Gut. Úgy pizsamásan lementem, lekaptam a Creative oldaláról a Microsoft(!) által írt drivert, feltettem, kért egy újraindítást, leokéztam… aztán kék halál.

From Segédlet
From Segédlet

Oké, láttam már ilyet, hibás drivertől nem ijedünk meg. Last good configuration. Megint kék halál. Nofene. Safe mode. Ugyanaz. Ekkor felejtettem a konyhában a kávémat. A safe módban látható volt, hogy a classpnp.sys betöltésével van a baj. Jobb híján rákerestem a neten… és rámdőlt a világ. Mint földrengéskor a tízemelet. Vajákolások, kinlódások, jószándékú, de fogalmatlan topicok, hosszan elnyúlva, aztán egy-két értelmes bejegyzés, melyek azért adtak némi támpontot és ötleteket a továbbhaladáshoz. A továbbhaladást értsd úgy, hogy egyre beljebb a mocsárba. Az első nap végén eljutottam oda, hogy realizáljam, őrült nagy baj van, de még azt se tudom, hogy a Windowsban, a hardverben, vagy a Biosban. János szerint a Creative programozóinál csak az Adobe programozói idiótábbak, szóval ő a maga részéről arra tippelt, hogy a hangkártya driver vágta haza a rendszert. Nekem meg kiesett a fejemből, hogy ez MS driver volt, és hát azért az MS csak nem öli meg a saját rendszerét. Viszont a rossz driver mellett szólt, hogy a Startup Repair is azt üzente, hogy BadDriver. Attól meg végleg kikattantam, hogy egy driver hogyan tud megölni egy szerver operációs rendszert.
Az egész napot pizsamában nyomtam végig, kaja nélkül. Hajnalban hullafáradtan dőltem bele az ágyba.
Reggel folytköv. Pizsama, a dohányzóasztal, mint szék. Éjjel még támadt néhány ötletem, azokat ki akartam próbálni, illetve előkészíteni az újratelepítést. Az ötletek közül egy sem működött, a telepítéshez összeraktam mindent (ez sem volt egyszerű, de most ne részletezzük)… aztán fellázadtam. Hagytam a francba az egészet, reggeliztem, zuhanyoztam, melegítőt cseréltem, főztem egy kávét… szóval megpróbáltam kultúrembert faragni a két napja széjjelfrusztrált gnómból.

Ez a szünet mentette meg a gépemet.

Közben ugyanis a blogbejegyzésben megjelent egy komment, melyben újabb ötletek voltak, illetve nem sokkal később egy másik, amelyikben volt egy link. Egy olyan írásra mutatott, melyet olvasván tátva maradt a szám. Bakker, ez pont az én történetem! Fura volt látni, mert az a több száz bejegyzés, melyet az utóbbi másfél napban olvastam, mind úgy nézett ki, mintha az én esetem lett volna, de aztán mégsem. Ez viszont pontosan az volt.

Amikor telepítettem a segédprogramokat, valamelyik (VLC? K-Lite? DaemonTools? Egyéb?) felajánlotta, hogy felrak egy McAfee Scan nevű cuccot. Habár az MSE már fent volt, de tapasztalataim szerint az eléggé harmatos, ezt a gépet pedig négyen fogjuk gyötörni, köztük két húszéves padaván, szóval úgy gondoltam, inkább több védelem legyen, mint kevesebb. Aztán amikor 9-én este szétesett a gép, nemcsak a hangkártya drivert és segédprogramokat szedtem le, hanem sok egyéb mellett ezt a McAfee cuccot is. Ezzel helyeztem el a pokolgépet a rendszerben. Aktiválni pedig a restarttal lehetett, melyre másnap reggel, a driver telepítésekor került sor. Jó, mi? Azt hinnéd, hogy a driver ölte meg a gépet. A fene sem gondolná, hogy a McAfee Uninstall a háttérben már szétkeffentette a lemezen az oprendszert és az egész gyakorlatilag a memóriából megy.

A KB cikk a McAfee oldalára mutatott, a kettőből szépen össze lehetett rakni a történetet. Létezik egy könyvtár, a %systemroot%\system32\catroot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\, ahol úgynevezett .cat katalógusfájlokban található minden szolgáltatásról, driverről és hotfixről minden azonosító adat. (Pontosabban a katalógusfájlok az egyes csomagok fájljairól készített hash-ek gyűjteménye, természetesen szintén aláírva.) Ezekből az adatokból a rendszer kiszed bizonyos információkat és eltárolja azokat a %systemroot%\system32\CodeIntegrity könyvtárban egy bootcat.cache nevű fájlban. Ezt a fájlt próbálja felolvasni a classpnp.sys driver. Ha nem sikerül neki, akkor megpróbálja legenerálni azt a catroot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE} könyvtár tartalmából. És itt jön a balhé: ha az innen felszedett információk nem egyeznek meg a gép konfigurációjával (értsd driver, service, hotfix szinten), akkor a classpnp.sys eldobja az agyát: kék halál.

Ezek után lássuk, mit csinált McAfee.

Amikor azt mondtam, hogy uninstall, akkor fogta és azt a bizonyos guidnevű könyvtárat átnevezte(!?) temp????.tmp névre, létrehozott helyette egy üres újat… majd a fene tudja, mit tervezett vele, mert ebben a pillanatban tökönszúrta magát és elhalálozott. A gép pedig a következő újraindításkor szembesült vele, hogy a catroot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE} könyvtár üres. Persze, hogy a classpnp.sys eldobta az agyát. Arra kérlek, hogy ha van előtted akár egy Windows 7, vagy akár egy Windows 2008 szerver, akkor nézzél bele ebbe a könyvtárba. Több ezer .cat fájl. Na, az ott látott szolgáltatások és driverek, illetve pecselt komponensek mind kipurcantak, mert nem volt meg hozzájuk a bootoláskor szükséges információ.
Csoda-e ezek után, hogy McAfee-t le akarják lőni Belizében?
Mondjuk, az is egyfajta understatement, hogy a Windows csak annyit mondott, hogy BadDriver. Bakker, az összes driver és az összes szolgáltatás Bad lett.

A workaround nyilván az, hogy Emergency Repair módban visszamásoljuk a temp????.tmp könyvtárból a .cat fájlokat a guidnevű könyvtárba, a bootcat.cache fájlt pedig töröljük.

Csakhogy. Nálam valahogyan a McAfee Uninstall valamelyik gonoszabb változata garázdálkodott, ez nem hozott létre temp könyvtárat, viszont a guidnevű tartalmát törölte. Ott álltam egy tök pucér katalóguskönyvtárral, úgy, hogy nem volt meg az előző állapot. Nézz bele légyszíves megint abba a könyvtárba! Hogy érzékeld a helyzetet: itt mindennek pontosan klappolnia kell: a drivereknek, a szolgáltatásoknak, méghozzá verziószámra azonosan, és persze jelen kellett lennie az összes patch katalógusfájljának, amelyik a gépen volt. Az a nyomorult classpnp.sys csak akkor indult el, ha minden egyezett.
Jópofa vadászat kezdődött. Először átmásoltam a Windows RE változatból – mely gyk. a Repair Tools opcióval indul el – a .cat fájlokat. Nem indult el. Kaptam egy bootcat.cache fájlt, bemásoltam. Kiröhögött. Újabb ötlet: ott van a szerveren egy csomó virtuális 2008 R2 szerver, szedjük ki azokból a .cat fájlokat. Windows RE alól a diskpart segédprogrammal fel lehet mountolni a vhd fájlokat, kimásoltam a {F750E6C3-38EE-11D1-85E5-00C04FC295EE} könyvtár tartalmát. Nagy levegő. Megint nem indult el. Pedig úgy emlékeztem, a host és a guest gépek azonos pecseltségi szinten vannak. Újabb ötlet: a %systemroot%\servicing\packages könyvtárban ott van az összes hotfix katalógusfájlja, küldjük még rá azt is. Le van szarva, ha több lesz. És igen, ezzel nyertünk: a három helyről összemásolt katalógusfájlokban már megvolt minden, pontosan olyan verziókkal, ahogy az a fránya kényes ízlésű classpnp.sys elvárta. Habár malmozott pár percig, de aztán kék képernyő helyett a Windows logon képernyő jött be.

Ha meglett volna a forgószékem, akkor elégedetten dőltem volna hátra.

Nyilván jött még egy nagytakarítás, a lakás gyk. tele volt romokkal, aztán rendezni kellett a kártyákat, drivereket (a találgatások során szanaszét állítgattam a registry-t), de ez már egyszerű hamupipőke munka volt, szerencsére mindent logoltam egy noteszbe.

Végezetül a Köszönet rovat. Ez az írás nem jöhetett volna létre a Microsoft nélkül. Ez kivételesen nem irónia akart lenni. Onnantól kezdve, hogy délben üdén és tisztán kijöttem a fürdőszobából és megtaláltam azt a bizonyos linket, István vezette a kezemet. Tőle kaptam az ötleteket, az én dolgom csak annyi volt, hogy utánaolvassak, megértsem, mit csinálok, majd végre is hajtsam az újabb és újabb feladatokat. A magam részéről teljesen le vagyok nyűgözve, mert egyrészt ez nem volt hivatalos bejelentés, másfelől, mint kiderült, nem is az MS sara volt az oprendszer halála – mégis teljes vehemenciával dolgoztak a hiba megszüntetésén.
És köszönettel tartozom Jánosnak is, aki a hardver irányában tett kisérletezéseimben segített.
Köszönet mindkettőjüknek.

8 thoughts on “Agysebészet kőbaltával

  1. azt a nyuves security scant egy friss Adobe FlashPlayer vagy Acrobat Reader telepitessel be lehet szivni, ha az emberfia nem veszi ki a pipat a megfelelo helyen.
    Amugy meg alap, hogy ket virusirto egy csardaban total felesleges.
    De amilyen a hatekonysaguk, manapsag mar az egy is.

  2. ugy atgondolva asszem szerencsem van, hogy ugyan mindenhol irtom ezt a hulladekot, ahol lehet, de eddig mindig kezzel csinaltam, autorunssal kiszedve az inditasbol, igy amikor legkozelebb valami fel akarja rakni, akkor jo esellyel nem fogja, mert a registry alapjan azthiszi mar ottvan :D)

  3. Józsi, én rajöttem h mi a baj Veled.
    Eccerűen hiányoznak az default védekező eszközeid :), és bár utólag könnyű okoskodni, de menetközben ahogy olvastam, 3 dolog szemet szúrt:
    1. Olyan nincs, h egy telepites közben kérek egy másik szoftvert is, ez már eleve gyanús
    2. Soha, semmilyen körülmények között nem rakunk fel McAffee-t
    3. Soha semmilyen körülmények között nem használunk egy gépen 2 AV szoftert

  4. Utólag könnyű okosnak lenni, és az 1. szabályt néha én is megszegem rutinhelyzetben, de gt-nek igaza van.
    Van egy windows tűzfalam és egy Avast antivírusom, évek óta nincs más védelem a gépemen. Probléma egy szál se.

  5. Szeretem, amikor ilyen relevánsak a hozzászólások. Ha így haladunk, hamarosan meglesz a Tékozló Homár színvonal.

    3. Jelen esetben tökmindegy. Az eset szempontjából abszolút mindegy volt, hogy van a gépen még egy MSE is. Ugyanúgy jártam volna, ha csak a McAfee van. Ez kábé annyira volt helyénvaló megjegyzés, mint amikor valaki panaszkodik, hogy levágta a lábát a villamos, erre pluszba még lecseszik, hogy ráadásul lábat sem mosott előtte.

    2. Ismerek olyan céget, nem is kicsit, akinél ez a hivatalos víruskereső. Nem lehet a keresőket hetente váltogatni, attól függően, hogy most éppen melyiknek rosszabb a híre. Ez az egész különben is inkább hasonlít hitvitára, mint értelmes emberek beszélgetésére. Mindegyik víruskereső szar, csak más és más okok miatt.

    1. Ezt általában betartom, emiatt is láttam értelmét az írásban külön kiemelni, hogy most miért tértem el tőle. De itt is blődség általánosítani, amikor pl. telepítettük az Etherealt, szó nélkül engedtük, hogy tegye fel a winpcap-et is.

    Tűzfal, rendszeres pecselés és MSE mindegyik itthoni gépen van. De ostobaság lenne azt hinni, hogy ennyi elég: kell hozzá az érett felhasználói magatartás is. Hiába van fent mind a három védelmi vonal pl. a fiam gépén, mégis évente kell rajta vírust ölni.

  6. jajj, nem erted, pedig szmajliztam is 🙂

    3. ha nem teszed fel a masodikat, _nincs gond_. nem mindig tudjuk h mivel usszuk meg, eppen ezert tartsuk be az alap dolgokat. mindig, nincs kivetel.
    2. hitvita vagy nem, ilyen farok hibat nem okoz barmi, ergo gyujtjuk az ilyen infokat es a legkevesbe horrorszar sw-t hasznaljuk.
    1. ratapintottal az _egyetlen_ kivetelre, ami raadasul nekem is pont eszembe jutott mikor irtam 🙂 de azert meg igy van.

  7. @gt: Van meg ilyen kivetel amugy, pl. Visual C++ runtime environment 20xx, le sem tudod kattintani, ugy pakoljak fel az installerek. Epp csak a Windows Installer huzza el a csikot.

    ESXi tulajoknak ismeros lehet a J# Runtime, ritkan hal meg, de akkor nagyon kedvesen tud felbeszakadni a telepites miatta. Es utana sokaig nem oszinte az ember arcan a mosoly, mire kiderul, hogy miert doglott meg.

Leave a Reply

Your email address will not be published. Required fields are marked *