Soci (Soczó Zsolt) szakmai blogja

2009.05.19.

Windows memóriakezelés cikkem 2. része

Filed under: Windows,Windows 2008 R2,Windows 7,Windows Server 2008,Winternals — Soczó Zsolt @ 10:10

Megjelent a techneten, ebben a virtuális memória fizikai címekre leképezéséről írtam.

2008.08.13.

The requested operation could not be completed due to a file system limitation

Filed under: Szakmai élet,Vista,Windows,Windows Server 2008 — Soczó Zsolt @ 14:12

Ez egy érdekes hibaüzenet, amit NTFS fájlok írásakor kaphat néha az ember. A GetLastError ilyenkor a 665-ös hibát adja vissza.
SQL Servernél a snapshotok írásakor jöhet ez elő, otthoni felhasználásnál nagyobb fájlok torrentes letöltése esetén, amikor a torrent kliens mint pl. a uTorrent úgy van beállítva, hogy használja az NTFS sparse file funkcióját. Ha egy sparse fájlt nagyon sok kicsi darabban raknak össze, akkor állhat elő ez a hiba, nem lehet folytatni a fájlt.
Aszongya a tudomány:
” When a sparse file (used for snapshot database files) is populated Windows limits the amount of data that may reside in the file. Once the amount of data stored in the sparse file exceeds the limit further data storage in the file may be prevented.

· Windows 2003 – 64GB (Error 1450 returned)
· Windows 2008 and Vista – 16GB (Error 665 returned)

Forrás.
Ilyenkor én az xcopy /Z forrás cél módszert használom, így a másolás leáll ugyan egy idő után hibával, de a fájl jelentős részét (általában az egészet) sikerül visszanyerni. Aztán a torrent kliens majd befoltozza a lukakat. Így sosincs gondom nagyobb SDK vagy egyéb hasznosság torrentes letöltésekor.

2008.08.12.

Vista aktiválás furcsaság

Filed under: Szakmai élet,Vista,Windows,Windows Server 2008 — Soczó Zsolt @ 22:35

Van egy kis virtuális masinám, amiben Windows 2008 fut, ezt debugolom éjszakánként kernel módban.
Eljött az ideje, hogy aktiváljam, de az aktiválás azt mondta:
Activation Error – 0x8007232B, DNS name does not exist
Azanyád, rossz a net config? Nem, mert simán lehet böngészni a gépben. Google, kiderül, hogy ha rossz a product key, akkor is ilyet mond az aktiválás. Nem tudom, de szerintem ez van olyan kényes kérdés, amit illett volna jobba kidolgozni az MSnek.

2008.08.05.

Windows Internals vizsga – tapasztalatok

Filed under: Debugging,Könyvek,Szakmai élet,Vista,Windows,Windows Server 2008 — Soczó Zsolt @ 22:16

Voltam, láttam, visszamennék :) Ahogy várható volt ez nem az a vizsga, amit 2 nap tanulással le lehet tenni. A Windows Internals könyvből 3 fejezetet tudtam megemészteni ennyi idő alatt, így az azokkal kapcsolatos kérdésekre tudtam is kb. a válaszokat. Ha valaki elolvassa, megérti és kipróbálja a gyakorlatokat a könyvből, akkor szerintem a kérdések kb. 70%-ára tudni fogja a választ.
A maradék 30-hoz általános API programolási ismeretek, windbg igen alapos ismerete és a device driver programozás egyes részletei szükségesek. Emellett tudni kell kékhalált analizálni, érteni az IO műveleteket kernel módban, IRQ-kkal kapcsolatos debugolásokat, dumpokat elemezni, verifierrel vegzáni drivereket, paged, nonpaged, stb. memóriákat elemezni, heap corruption-öket debugolni, lefagyott vagy lerohadt user módú appokat debugolni, kernelből visszahívni user módba, szervizeket piszkálni, leak-eket analizálni, különböző utilokat ismerni (umdh, procexp, tlist, kernrate, sc, gflags, stb.), 64 biten 32 bites cuccok futtatása, UAC jobbra-balra, DEP, memory mapped files, IO completion portok, named pipe-ok, file-ok kezelése szinkron és aszinkron módon, Credential api, perfmon, pool tagging, kernel profilozás, power események kezelése device driverből, kernel struktúrák debugolása, azokból infók kibányászása (nt!_KWAIT_BLOCK, _DISPATCHER_HEADER, stb.), P&P eszközök debugolása, user és kernel módú szinkronizálás, aszinkron IO programozása driverben, kernel szálak kezelése, IRQL szintek és azok jellemzői, Deferred Procedure Call programozása, DMA kezelés, védett módba lépés különböző processzorokon, kézzel lekreseltetni a lefagyott oprendszert (dump céljából), checked buildű kernel hozzáadása éles géphez, filter driverek problémái, stb, stb. Most több nem jut az eszembe. Kb. 3/4 rész kernel, és 1/4 rész user mód volt benne. A kérdések legalább a fele a WinDbgről szól. Ezzel nem is lett volna baj, ő az új szerelmem már pár hónapja (sokkal többet tud, mint a vs debuggere), de én eddig user módban debugoltam. Igaz, hétvégén összehoztam egy kernel debug sessiont a 64 bites gépen, orgazmushoz közeli érzés CTRL-Break-kel megállítani az oprendszert, és beleesni a kernel debuggerbe. Majd ha e helyett már unalmat érzek, akkor érdemes elmenni erre a vizsgára (ez kicsit kétértelmű lett. :).
Szóval korrekt, de nehéz kérdések voltak.

Feltett szándékom, hogy azért is megértem mi történik a Windowsban, és megcsinálom a vizsgát, majd később, pénzért (ez most ingyenes beta volt). Ami nekem még előnyöm a MVP-ként a Windows forráskód hozzáférés, majd ha a kernelt tudom forrásszinten debugolni, az is egy újabb hőhullámot fog kiváltani. :) User mód már megvolt, az is egy élmény forrásszinten.

A tanuláshoz a következő könyveket és forrásokat szándékozok bevetni:

Első körben ennyi. Már csak pár évnyi éjszaka kell, és túl is vagyok rajtuk. :)

2008.08.04.

Az IIS7 secu mágia titka: Service SID

Filed under: Security,Szakmai élet,Vista,Windows Server 2008 — Soczó Zsolt @ 23:04

Az IIS7-ben megoldották, hogy hiába egy account alatt fut sok worker processz, akkor SEM tudják egymás védett fájljait olvasni. Így el lehet szigetelni a webappokat annak ELLENÉRE, hogy egy account alatt futnak (még ha nem is a javasolt konfig hosztereknek). De hogy a csudába? Eddig nem tudtam, de most megtaláltam a választ: Service SID.

“Service SIDs protect access to resources owned by a particular service, but by default services still have access to all the objects that the user account in which they run can access. For example, a service running in the Local Service account might not be able to access resources created by another service running as Local Service in a different process that has protected its objects with permissions referencing a service SID, however, it can still read and write any objects to which Local Service (and any groups to which Local Service belongs, like the Service group) has permissions.

Windows Vista therefore introduces a new restricted service type called a write-restricted service that permits a service write access only to objects accessible to its service SID, the Everyone group, and the SID assigned to the logon session. To accomplish this, it uses restricted SIDs, a SID type introduced back in Windows 2000. When the process opening an object is a write-restricted service, the access-check algorithm changes so that a SID that has not been assigned to a process in both restricted and unrestricted forms cannot be used to grant the process write access to an object. ”

Már csak az nem vili, hogy ezt hogyan használják fel az IIS wp-ek esetén, azok ugyanis nem szervizek. Ha egyszer megtalálom a választ, leírom.

2008.08.01.

A Windows Integrity Control hétköznapi hatása

Filed under: Szakmai élet,Vista,Windows Server 2008 — Soczó Zsolt @ 09:38

A Windows Integrity Control (WIC) régebbi nevén Mandatory Integrity Control (MIC) az a mechanizmus a Vistában és a Windows 2008-ban, amely miatt egy alacsonyabb szinte besorolt processz nem tud Windows üzeneteket küldeni egy magasabb szinten futó processznek. A klasszikus probléma ami miatt ezt bevezették az interaktív szervizek hekkelése volt. Ha egy System account alatt futó szerviznek van Interact with the Desktop beállítása, akkor ki tud rakni ablakot az interaktívan bejelentkezett felhasználó asztalára. Ez látszólag ártatlan dolog. Azonban a magas jogosultságokkal futó szerviz GUI-nak tudunk mi, kis privilégiumú felhasználók üzeneteket küldeni. Ez azt jelenti, hogy ha pl. a textboxok tartalmát a szerviz nem ellenőrzi jól, egy jól irányzott hosszú szöveggel buffer overrunt okozhatunk a szervizben, megfelelő ügyességgel a szövegben elrejtett bináris kódot végrehajtatva vele. Ez az alapprobléma, ezzel nem lehet mit kezdeni Vista előtt, együtt kell élni vele. Gáz, de ez van. Sokszor mondták, ne írjunk ilyen szervizt, de egyszerűbb volt ezt csinálni, mint külön írni egy szervizt és egy sima userként futó klienst, ami mondjuk named pipe-on vagy egyéb IPC-n keresztül kommunikál egymással, biztonságosan.
Vistában egy szerviz magas integritási szinten fut, míg egy nemadmin felhasználó (aki lehet, hogy admin, de az UAC miatt nem admin, mint én is) az közepesen. (Érdekességképpen, egy protected módban futó IE7 esetén az általa elindított folyamtok alacsony szinten futnak.)
A WIC miatt egy közepes folyamat (sima user, sima app) nem tud üzenetet küldeni egy magas szinten futó folyamatnak (szerviz), így az előbbi hekkelési probléma megoldott.
No, aminek apropóján írom ezt, az a következő. A céges VPN-t egy Citrix Firebox SSL programmal érjük el. Ezt adminként kell futtatni, hogy meg tudja változtatni a hálózati beállításokat. Adminként így ő magas integritási szinten fut. Hogy a jelszót ne kelljen begépelnem előszeretettel használom a KeePass automatikus gépelő szolgáltatását, így CTRL-ALT-A-ra az ablak címe alapján benyom olyan billentyűkombinációt a célablakba, amit megálmodtunk. Ez viszont természetesen nem megy az előbbi helyzetben, mert a KeePass nemadminként, így közepes integritású szinten fut. Az integritási szinteket a process explorer mutatja meg, egy processznél a security fülön.
Ellenpróbaként adminként futtattam KeePasst, így egyből gépelt.
Ugyanez a probléma jött elő, csak rejtettebb módon, amikor proteced módban futó IE alatt fejlesztett AddInból adtam ki OutputDebugString hívást (ezt hívja meg a DefaultTraceListener is .NET-ben). A DebugView elvileg az ilyen hívások kimenetét adja vissza, de nem jött meg bele semmilyen üzenet. Utánanéztem, ilyenkor is üzenetek formájában mennek át a szövegek, ergo megint a WIC köpött a levesbe. A megoldás az volt, hogy alacsony integritási szinten kellett futtatni a DebugView-t. Erre írtam egy kis programocskát (ez alapján), ami egy processzt egy adott integritási szinten indít el. A PsExectől várnék el valami ilyesmit. Ha valaki tud ilyen kész utilt, akkor kérem jelezze.

Update: megválaszolom magamnak, a psexec -l Low Integrity-vel indít el egy processzt. :)

2008.07.17.

SQL Server 2008 Analysis Services Windows Server 2008-on vs. Windows Server 2003-on

Habár nem értek az Analysis Serviceshez (még, az SSIS után ez a következő falat), de ez a cikk igen érdekes. Nem annyira az SQL-es, inkább az operendszeres vonatkozásai miatt.
Az átlagfelhasználó az új Windowsokból csak az új shellt tapasztalja meg, meg, hogy több ram kell nekik. Ennek ellenére a háttérben keményen fejlesztik a rendszer magját, csak az nem annyira látványos, még, ha igen hasznos is.
A cikkben arról beszélnek, hogy a Windows 2008-ban új memóriakezelő van, ami sokkal jobban kezeli a sok, apró memóriafoglalást. Ez azonnal látszik, ha az Analysis Services-szel dolgoztatunk fel jelentős mennyiségű adatot, a 2008-on kapásból dupla olyan gyors lett a feldolgozás (tudom, minden teszt csal, de nem hiszem, hogy nagyot hazudnának).
A szerviznek meg lehet mondani, hogy előre allokálja le a memóriát, így 2003-on is hasonló teljesítményt érhetünk el, mint 2008-on.

Az egészből számomra az az érdekes, hogy gyorsabb Windows 2008-ban a memóriakezelés, amiből bármilyen app profitálni fog. Megvettük. :)

2008.04.10.

Vége a terminátor kliens /console kapcsolójának

Filed under: Szakmai élet,Vista,Windows,Windows Server 2008 — Soczó Zsolt @ 12:19

Van helyette /admin. Itt leírják, miért?

2008.02.19.

MSDeployhoz Vista SP1 kell

Filed under: IIS,IIS7,Szakmai élet,Vista,Windows Server 2008 — Soczó Zsolt @ 23:53

Mert őkelmét Windows 2008-on tesztelték, ami meg azonos modulokat tartalmaz, mint a Vista SP1. Van motivációm, hogy felrakjam az SP1-et.

2007.07.26.

Windows Server 2008 developer oktatóanyag letölthető

Filed under: Szakmai élet,Windows Server 2008 — Soczó Zsolt @ 12:02

Forrás.

Tartalom:
* Introduction to Windows Communication Foundation
This lab provides the basic introduction to building services and clients including the use of data contracts, service contracts and configuration of both. The lab also includes information on how to declaratively secure a service.
* Integrating CardSpace into Web Sites
This lab walks the user on how to can integrate CardSpace into Web sites. The user will modify existing registration and sign-in pages to allow customers to use CardSpace for site features that require the customer’s identity.
* Introduction to Windows Workflow Foundation
This lab walks the user through the basics of creating a workflow and learning about the Visual Studio environment for building workflows. The lab also covers some of the common base activities and passing parameters to a workflow.
* Using Windows Eventing
This lab introduces the improvements made to the event logging, viewing and management features in Windows Vista and Windows Server 2008.
* Extending Windows PowerShell and the Microsoft Management Console
In this lab, the user walks through the creation of Cmdlets for Windows PowerShell and a Snap-in for Microsoft Management Console 3.0 (MMC) using managed code.
* Extending IIS 7.0 with Custom Handlers
This lab walks the user through the extension of IIS administration interface and addition of custom handlers written in managed code.
* Using Transactional NTFS (TxF)
This lab is focused on adding Transactional NTFS capabilities to an existing application by using managed wrappers, in just a few lines of code.

Powered by WordPress