Кой системен администратор не познава инструментите на SysInternals (Winternals) за администриране и диагностика на Windows? Изглежда, че те съществуват от незапомнени времена. Не всички обаче знаят, че тези незаменими инструменти изобщо не са написани от Microsoft. Напротив, те са написани въпреки желанието на Microsoft.
И тук стигаме до личността на автора, талантливия и свръхпродуктивен програмист Марк Русинович. Той показа, че един умен човек е способен интелигентно да побутне една мегакорпорация. А на нея ще ѝ се наложи да му плаща много пари и дори да го наеме на работа. Защото не би могла да създаде неговите програми…
Сред най-великите програмисти на нашето време Марк Русинович се откроява с отличното си образование и докторска степен. Всъщност това е рядкост, защото половината от брилянтните програмисти нямат никакво висше образование, още по-малко пък диплома. Той, от друга страна, до 27-годишна възраст е глозгал гранита на науката и едва тогава е започнал да работи…
След като десет години изучава компютърни науки в университета Карнеги Мелън, Марк Русинович работи като програмист в няколко малки компании. След това обстоятелствата го подтикват да стартира собствена компания. Обстоятелствата са следните:
- Излиза изключително популярната операционна система Windows 95/NT, която се инсталира на почти всички нови компютри (по това време компютрите Mac са в изключителен упадък).
- Интернет стана достъпен за широката общественост, което даде възможност за глобалното разпространение на софтуера, включително и чрез Shareware модела.
Shareware
През 1996 г. двамата с Брайс Когсуел основават компанията Winternals Software, където Русинович е главният софтуерен архитект. По същото време стартира и сайтът sysinternals.com (първоначално ntinternals.com), където партньорите пишат и публикуват десетки популярни помощни програми (сега пренасочени към learn.microsoft.com/en-us/sysinternals/). В началото всички програми бяха безплатни.
Както вероятно знаете, от средата на 90-те години на миналия век публикуването и продажбата на неголеми програми по модела Shareware чрез интернет даде възможност на всеки самостоятелен програмист доста бързо да спечели милиони долари. Мнозина си спомнят 19 годишния студент Джъстин Франкел, който по цял ден си е седял вкъщи и играел компютърни игри, но след създаването на примитивния от днешна гледна точка плейър Winamp, което става през 1997 година той започва да получава тонове чекове на сума $10 и забогатява.
През 90-те години много програмисти си опитват късмета с модела Shareware. Тогава това си е направо революция: за да печелиш, при това добре, е достатъчен само един компютър. Не е необходимо да ходиш в какъвто и да било офис и да си губиш времето с глупави мениджъри. Стой си в къщи или в своя си кабинет и програмирай. Създавай. Щом имаш подходяща идея и талант, целият свят е твой. Именно тогава програмистите от цял свят, включително и от съвсем малките страни, започват да получават заплати от американско ниво. Благодарение на интернет…
Може да се каже, че полезните помощни програми на Winternals представят Microsoft някак в неизгодна светлина. Всички ясно видяха, а и сега виждат каква точно функционалност не достига на операционната система на Microsoft, кои настройки липсват и кое по подразбиране е направено доста криво и неудачно. Интересното е, че тези недостатъци са открити и демонстрирани от един единствен програмист. Това означава, че той много добре познава ядрата на различните версии на ОС Windows, и че може да програмира много по-добре от примерно хиляда разработчика на корпорацията от Редмънд. Това не е за учудване, понеже той работи за себе си, а не за някоя компания или корпорация.
Повечето помощни програми в базовата версия на комплекта на Русинович се разпространяват безплатно, но техните професионални версии се продават и не са безплатни, като всъщност това е един от вариантите на бизнес модела Shareware. Предлага се и отделен много добър софтуер за възстановяване на данни от на практика всякакви носители.
Списъкът с помощните програми
Нека накратко се спрем на някои от полезните и много компактни помощни програми на SysInternals, Wininternals и NTInternals, които се предлагат още от 1996 година. Повечето могат да се изтеглят от сайта на Microsoft (learn.microsoft.com/en-us/sysinternals).
Системните помощни програми
- BlueScreen е скрийнсейвър, който емулира синия екран на смъртта и рестартирането на компютъра
- Process Explorer и Process Monitor: значително по-добри и усъвършенствани версии на вградения в ОС Windows Мениджър на задачите – Windows Task Manager
- Autoruns: може би най-добрата програма за управление на автоматично стартираните приложение в ОС Windows
- SDelete: изтриване на файловете по такъв начин, че в диска не остават следни от тях
- BgInfo: автоматично генериране на текст върху тапета на десктопа, показващ подробна система информация. Ако искате да премахнете този текст можете да изберете друг тапет и след това да се върнете към предишния – текстът ще бъде премахнат
- TCPView: преглед на активните връзки
- NTFSDOS: работа с форматирани с NTFS под Windows 98 и DOS, които преди време изобщо не поддържаха тази файлова система. Сега тази програма е премахната от официалния сайт, но я има на много места.
- Contig: помощна програма за дефрагментиране на дисковете, работеща от командния ред
- Coreinfo: програма от командния ред, която показва в конзолата съответствието между физическите и логическите ядра на процесора, NUMA, сокетите и кешовете на всеки логически процесор. Показва се много подробна информация за централните процесори.
Ето един пример:
Coreinfo v3.03 - Dump information on system CPU and memory topology Copyright (C) 2008-2011 Mark Russinovich Sysinternals - www.sysinternals.com Intel(R) Xeon(R) CPU W3520 @ 2.67GHz Intel64 Family 6 Model 26 Stepping 5, GenuineIntel EM64T * Supports 64-bit mode VMX - Supports Intel hardware-assisted virtualization SVM - Supports AMD hardware-assisted virtualization HYPERVISOR * Hypervisor is present HTT * Supports hyper-threading SMX - Supports Intel trusted execution SKINIT - Supports AMD SKINIT EIST * Supports Enhanced Intel Speedstep NX * Supports no-execute page protection PAGE1GB - Supports 1GB large pages PAE * Supports > 32-bit physical addresses PAT * Supports Page Attribute Table PSE * Supports 4-MB pages PSE36 * Supports > 32-bit address 4-MB pages PGE * Supports global bit in page tables SS * Supports bus snooping for cache operations VME * Supports Virtual-8086 mode FPU * Implements i387 FP instructions MMX * Supports MMX instruction set MMXEXT - Implements AMD MMX extensions 3DNOW - Supports 3DNow! instructions 3DNOWEXT - Supports 3DNow! extension instructions SSE * Supports Streaming SIMD Extensions SSE2 * Supports Streaming SIMD Extensions 2 SSE3 * Supports Streaming SIMD Extensions 3 SSSE3 * Supports Supplemental SIMD Extensions 3 SSE4.1 * Supports Streaming SIMD Extensions 4.1 SSE4.2 * Supports Streaming SIMD Extensions 4.2 AES - Supports AES extensions AVX - Supports AVX intruction extensions FMA - Supports FMA extensions using YMM state MSR * Implements RDMSR/WRMSR instructions MTTR * Supports Mmeory Type Range Registers XSAVE - Supports XSAVE/XRSTOR instructions OSXSAVE - Supports XSETBV/XGETBV instructions CMOV * Supports CMOVcc instruction CLFSH * Supports CLFLUSH instruction CX8 * Supports compare and exchange 8-byte instructions CX16 * Supports CMPXCHG16B instruction DCA - Supports prefetch from memory-mapped device F16C - Supports half-precision instruction FXSR * Supports FXSAVE/FXSTOR instructions FFXSR - Supports optimized FXSAVE/FSRSTOR instruction MONITOR - Supports MONITOR and MWAIT instructions MOVBE - Supports MOVBE instruction PCLULDQ - Supports PCLMULDQ instruction POPCNT * Supports POPCNT instruction SEP * Supports fast system call instructions DE * Supports I/O breakpoints including CR4.DE DTES64 - Can write history of 64-bit branch addresses DS - Implements memory-resident debug buffer DS-CPL - Supports Debug Store feature with CPL PCID - Supports PCIDs and settable CR4.PCIDE PDCM - Supports Performance Capabilities MSR RDTSCP * Supports RDTSCP instruction TSC * Supports RDTSC instruction TSC-DEADLINE - Local APIC supports one-shot deadline timer xTPR * Supports disabling task priority messages ACPI * Implements MSR for power management TM * Implements thermal monitor circuitry TM2 * Implements Thermal Monitor 2 control APIC * Implements software-accessible local APIC x2APIC - Supports x2APIC CNXT-ID - L1 data cache mode adaptive or BIOS MCE * Supports Machine Check, INT18 and CR4.MCE MCA * Implements Machine Check Architecture PBE * Supports use of FERR#/PBE# pin PSN - Implements 96-bit processor serial number Logical to Physical Processor Map: *--- Physical Processor 0 -*-- Physical Processor 1 --*- Physical Processor 2 ---* Physical Processor 3 Logical Processor to Socket Map: **** Socket 0 Logical Processor to NUMA Node Map: **** NUMA Node 0 Logical Processor to Cache Map: *--- Data Cache 0, Level 1, 32 KB, Assoc 8, LineSize 64 *--- Instruction Cache 0, Level 1, 32 KB, Assoc 4, LineSize 64 *--- Unified Cache 0, Level 2, 256 KB, Assoc 8, LineSize 64 -*-- Data Cache 1, Level 1, 32 KB, Assoc 8, LineSize 64 -*-- Instruction Cache 1, Level 1, 32 KB, Assoc 4, LineSize 64 -*-- Unified Cache 1, Level 2, 256 KB, Assoc 8, LineSize 64 --*- Data Cache 2, Level 1, 32 KB, Assoc 8, LineSize 64 --*- Instruction Cache 2, Level 1, 32 KB, Assoc 4, LineSize 64 --*- Unified Cache 2, Level 2, 256 KB, Assoc 8, LineSize 64 ---* Data Cache 3, Level 1, 32 KB, Assoc 8, LineSize 64 ---* Instruction Cache 3, Level 1, 32 KB, Assoc 4, LineSize 64 ---* Unified Cache 3, Level 2, 256 KB, Assoc 8, LineSize 64 **** Unified Cache 4, Level 3, 8 MB, Assoc 16, LineSize 64 Logical Processor to Group Map: **** Group 0
- DebugView: прихваща извикванията към DbgPrint от драйверите на различните устройства и програми, включително на отдалечена система без да се налага стартирането на дебъгер
- Desktops: стартира до четири виртуални десктопа, които са съвсем самостоятелни и превключването между тях е лесно и удобно
- LoadOrder: Показва реда на зареждане и активиране на устройства в ОС WinNT/2K
- MoveFile и PendMoves: дават възможност за планиране на премахването или преместването на файл автоматично след рестартиране на компютъра (например в последния ден на работата в компанията)
- NotMyFault: планиране на различни сривове, рестартирания и други подобни в ОС Windows
- PageDefrag: дефрагментация на файловете, включително на суап файла и системния регистър, което навремето бе недостъпно за тогавашните инструменти за дефрагментиране. Тази програма бе включена в състава на 32-битовите ОС Windows
- RootkitRevealer: безплатна програма за локално откриване на руткитове. Програмата непрекъснато сканира API на файловата система (MFT, NTFS, FAT16/32), както и системния регистър, и извежда списък с несъответствията с реалните данни;
- PortMon: мониторинг на последователните и паралелните портове, включително с показването на обменяните данни
- и други
Мениджъри и комплекти с помощни програми:
- Winternals Administrator’s Pak (ERD Commander 2005, Remote Recover 3.0, NTFSDOS Professional 5.0, Crash Analyzer Wizard, FileRestore 1.0, Filemon Enterprise Edition 2.0, Regmon Enterprise Edition 2.0, AD Explorer Insight for Active Directory 2.0, TCP Tools)
- Protection Manager
- Defrag Manager
- Recovery Manager
- и други
Като цяло Марк и Брайс са написали над 65 полезни програми. По всичко личи, че дори след основаването на компанията и наемането на младши програмисти, те са работили като водещи разработчици и са написали голяма част от кода.
Сега Microsoft продължава да поддържа и актуализира много от тези инструменти и дори разработва версии за Linux.
Сделката с Microsoft
През месец юли 2006 г. Microsoft купува Winternals Software и всички нейни активи. Марк съобщи новината в блога си и заяви, че ще продължи да разпространява помощните програми от пакета Sysinternals, докато Microsoft не възразява срещу това.
Не всичко обаче върви гладко. Веднага след сделката с Microsoft от сайта беше премахната програмата NT Locksmith за възстановяване на „забравени“ пароли за Windows. Очевидно юристите ма софтуерния гигант са сметнали, че тя може да се използва за хакерство, т.е. за неоторизиран достъп до чувствителна компютърна информация, за което има член в Наказателния кодекс.
Въпреки че ако разглеждаме хакерството в по-широк смисъл, половината от системните помощни програми на Sysinternals могат да се разглеждат като „хакерство на Windows“, след като получаваме достъп до информация, която е недостъпна със стандартните средства на операционната система. В края на краищата, за да разберете структурата на всяка една система, трябва да проникнете в нея, как иначе? С други думи, хакерството е и системно програмиране.
Не след дълго по-голямата част от сорс кода на софтуера е премахната от сайта. Но това е логично, тъй като Microsoft винаги е била враг на движението за отворен код, считайки свободните (вирусни) лицензи за главната опасност за комерсиалната софтуерна индустрия.
Първоначално Марк Русинович е технически специалист в отдела за платформи и услуги на Microsoft, който се занимава с разработването на ядрото на Windows. С течение на времето талантите му стават все по-очевидни – и през 2014 г. той е повишен в главен технически директор в Microsoft Azure.
Тази история показва, че големият успех може да започне с едно съвсем малко начинание – една или няколко простички помощни програми, написани само за една вечер. При Марк Русинович обаче нещата стоят по съвсем различен начин. Той наистина се е доказал като първокласен системен програмист и е спечелил уважението на милиони системни администратори, които все още всеки ден използват неговите помощни програми. Подобно уважение от страна на милиони хора, съчетано с огромен талант лесно се трансформират в сериозни пари, стига да има желание за това.