- PVSM.RU - https://www.pvsm.ru -
[1]Кто из админов не знает утилиты SysInternals [2] (Winternals) для администрирования и диагностики Windows? Кажется, они известны с незапамятных времён. Но не каждый в курсе, что эти незаменимые инструменты написаны вовсе не компанией Microsoft. Скорее наоборот, они написаны вопреки её желанию.
И здесь мы подходим к личности автора, талантливого и суперпродуктивного программиста Марка Руссиновича. Он показал, что один умный парень способен интеллектуально продавить мегакорпорацию. И той придётся заплатить ему огромные деньги, и даже взять на работу. Потому что повторить его программы она не сумела…
Среди величайших программистов современности Марк Руссинович отличается тем, что у него великолепное образование и степень PhD. На самом деле это редкость, поскольку у половины гениальных разработчиков вообще нет высшего образования, а тем более степени. А вот он до 27-ми лет грыз гранит науки, только потом начал работать…
После десяти лет изучения компьютерных наук в университете Карнеги–Меллона Марк Руссинович пару лет поработал разработчиком в нескольких маленьких компаниях. Затем обстоятельства созрели, чтобы запустить собственную компанию. Обстоятельства следующие:
В 1996 году они вместе с Брайсом Когсвеллом соучредили компанию Winternals Software, где Руссинович занимал должность главного архитектора программного обеспечения. Одновременно был запущен сайт sysinternals.com (поначалу ntinternals.com), на котором напарники написали и опубликовали десятки популярных утилит (сейчас оттуда стоит редирект на https://learn.microsoft.com/en-us/sysinternals/ [3]). Все программы поначалу были бесплатными.

Как известно, с середины 90-х выпуск и продажа мелких программ по модели shareware (в просторечье «шаровары») через интернет позволял единственному программисту быстро заработать миллионы долларов. Многие помнят 19-летнего студента Джастина Франкеля, которого просиживал сутки напролёт дома за компьютерными играми, но после создания примитивного MP3-плеера Winamp в 1997 году денежные чеки по $10 приходили ему мешками со всего мира, а ведь Джастин даже не сам написал эту программу, а использовал труд своего однокурсника [4] Дмитрия Болдырева, а потом заплатил ему за молчание (если верить Дмитрию, конечно).
Вообще, в 90-е годы многие разработчики испытывали удачу с помощью «шаровар». Это была революция: для заработка достаточно одного компьютера. Не нужно ходить в офис. Сиди дома и программируй. Создавай. Есть идея и талант — весь мир у твоих ног. Наконец-то программисты в разных уголках планеты стали получать зарплату американского уровня — всё благодаря интернету...
… Можно сказать, что утилиты Winternals выставили Microsoft в невыгодном свете. Все ясно увидели, какой функциональности сильно не хватает в операционной системе, каких настроек там нет, что сделано коряво по дефолту. И удивительно, что все эти косяки продемонстрировал по сути один программист. Фактически, он знал ядро Windows и умел программировать лучше, чем тысячи разработчиков редмондской корпорации. Оно и неудивительно, ведь он работал на себя, а не на дядю.
Большинство утилит в базовой версии распространялись бесплатно, но компания продавала профессиональные версии этих инструментов (так работает один из вариантов бизнес-модели shareware), а также отдельный коммерческий софт для восстановления данных.
Вот некоторые из программ SysInternals, Wininternals и NTInternals, начиная с 1996 года. Указаны ссылки на некоторые утилиты, которые официально распространяются до сих пор с сайта Microsoft.


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
DbgPrint от драйверов устройств и из программ, в том числе на удалённой системе через интернет без запуска дебаггера;



В общей сложности Марк с Брайсом написали более 65 утилит [2]. Судя по всему, даже после основания компании и найма джуниоров они работали ведущими программистами и писали часть кода.
Сейчас Microsoft продолжает поддержку и обновление многих из этих инструментов, и даже выпускает версии под Linux.
Примечание. Кроме системных инструментов SysInternals, для Windows ещё выпускается набор PowerToys [29], к разработке которого Марк Руссинович не имеет отношения. Это программки для тонкой настройки различных аспектов UI типа Always on Top [30], которая закрепляет одно окно поверх других и Диспетчер клавиатуры [31] для переопределения клавиш на клавиатуре (например, можно повесить запуск разных скриптов на ScrollLock или F5–F12, а также переназначить любые системные хоткеи, кроме Ctrl+Alt+Del и ещё парочки). Недавно программы выложили в опенсорс.

Панель PowerToys Run [32] из комплекта PowerToys
В июле 2006 года Microsoft купила Winternals Software и все её активы. Марк объявил [33] эту новость в своём блоге и пояснил, что продолжает распространение утилит из комплекта Sysinternals до тех пор, пока Microsoft против этого не возражает.
Однако не всё пошло гладко. Сразу после сделки с Microsoft с сайта была удалена утилита NT Locksmith для восстановления «забытых» паролей Windows. Вероятно, юристы посчитали, что её можно использовать для взлома, то есть для несанкционированного доступа к компьютерной информации, за что предусмотрена статья в УК.
Хотя если рассматривать хакинг в более широком смысле, то половину системных утилит Sysinternals можно рассматривать как «взлом Windows», если мы получаем доступ к информации, недоступной штатными средствами ОС. Ведь чтобы понять устройство любой системы, нужно её вскрыть, как же иначе? То есть взлом, хакинг — тоже системное программирование.
Вскоре с сайта удалили большую часть исходных кодов программ. Но это вполне логично, потому что Microsoft всегда была врагом движения Open Source, считая свободные (вирусные) лицензии главной опасностью для индустрии коммерческого ПО.
Первоначально Марк Руссинович получил должность технического специалиста в подразделении платформ и сервисов Microsoft, в сферу которого входит разработка ядра Windows. Со временем его таланты проявились более очевидно — и к 2014 году он дорос до технического директора в Microsoft Azure.
Эта история показывает, что большой успех может начинаться с очень маленького дела — одной или простой утилитки, написанной буквально за вечер. Так было и с Winamp, хотя о гениальности Френкеля не идёт и речи, потому что достаточно было набросать GUI и портировать под Windows готовый плеер. Однако с Марком Руссиновичем совершенно другая история. Он действительно проявил себя как высококлассный системный программист, заработал уважение миллионов системных администраторов, которые до сих пор используют его утилиты каждый день. Подобное уважение миллионов людей и собственный талант всегда легко конвертировать в деньги, если есть такое желание.
Брайс Когсвелл уволился в 2010-м, а Марк Руссинович до сих пор работает в Microsoft [34]. В отличие от большинства компьютерных гениев-самоучек, у него степень PhD и полный набор софт-скиллов, чтобы успешно влиться в большую корпорацию. Что он в итоге и сделал. Такой хакерский путь тоже возможен.
Автор: Анатолий Ализар
Источник [39]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/sistemnoe-programmirovanie/382098
Ссылки в тексте:
[1] Image: https://habr.com/ru/company/ruvds/blog/710268/
[2] SysInternals: https://learn.microsoft.com/en-us/sysinternals/downloads/
[3] https://learn.microsoft.com/en-us/sysinternals/: https://learn.microsoft.com/en-us/sysinternals/
[4] использовал труд своего однокурсника: https://news.ycombinator.com/item?id=6773682
[5] BlueScreen: https://learn.microsoft.com/en-us/sysinternals/downloads/bluescreen
[6] Process Explorer: https://learn.microsoft.com/en-us/sysinternals/downloads/process-explorer
[7] Process Monitor: https://learn.microsoft.com/en-us/sysinternals/downloads/procmon
[8] Autoruns: https://learn.microsoft.com/en-us/sysinternals/downloads/autoruns
[9] SDelete: https://learn.microsoft.com/en-us/sysinternals/downloads/sdelete
[10] BgInfo: https://learn.microsoft.com/en-us/sysinternals/downloads/bginfo
[11] TCPView: https://learn.microsoft.com/en-us/sysinternals/downloads/tcpview
[12] NTFSDOS: https://web.archive.org/web/20070314000310/http://www.sysinternals.com/Utilities/NtfsDos.html
[13] Contig: https://learn.microsoft.com/en-us/sysinternals/downloads/contig
[14] Coreinfo: https://learn.microsoft.com/en-us/sysinternals/downloads/coreinfo
[15] DebugView: https://learn.microsoft.com/en-us/sysinternals/downloads/debugview
[16] Desktops: https://learn.microsoft.com/en-us/sysinternals/downloads/desktops
[17] LoadOrder: https://learn.microsoft.com/en-us/sysinternals/downloads/loadorder
[18] MoveFile: https://learn.microsoft.com/en-us/sysinternals/downloads/pendmoves
[19] NotMyFault: https://learn.microsoft.com/en-us/sysinternals/downloads/notmyfault
[20] PageDefrag: https://learn.microsoft.com/ru-ru/previous-versions/bb897426(v=msdn.10)
[21] RootkitRevealer: https://learn.microsoft.com/en-us/sysinternals/downloads/rootkit-revealer
[22] PortMon: https://learn.microsoft.com/en-us/sysinternals/downloads/portmon
[23] ProcDump: https://learn.microsoft.com/en-us/sysinternals/downloads/procdump
[24] PsPasswd: https://learn.microsoft.com/en-us/sysinternals/downloads/pspasswd
[25] PsShutdown: https://learn.microsoft.com/en-us/sysinternals/downloads/psshutdown
[26] PsSuspend: https://learn.microsoft.com/en-us/sysinternals/downloads/pssuspend
[27] RAMMap: https://learn.microsoft.com/en-us/sysinternals/downloads/rammap
[28] Zoomit: https://learn.microsoft.com/en-us/sysinternals/downloads/zoomit
[29] PowerToys: https://github.com/microsoft/PowerToys
[30] Always on Top: https://aka.ms/PowerToysOverview_AoT
[31] Диспетчер клавиатуры: https://aka.ms/PowerToysOverview_KeyboardManager
[32] PowerToys Run: https://aka.ms/PowerToysOverview_PowerToysRun
[33] объявил: https://learn.microsoft.com/en-us/archive/blogs/markrussinovich/on-my-way-to-microsoft
[34] до сих пор работает в Microsoft: https://www.linkedin.com/in/markrussinovich
[35] Джастин Танни: https://habr.com/ru/company/ruvds/blog/682150/
[36] Джей Фриман (saurik): https://habr.com/ru/company/ruvds/blog/688716/
[37] Михал Залевски: https://habr.com/ru/company/ruvds/blog/695386/
[38] Джон Кармак: https://habr.com/ru/company/ruvds/blog/701556/
[39] Источник: https://habr.com/ru/post/710268/?utm_source=habrahabr&utm_medium=rss&utm_campaign=710268
Нажмите здесь для печати.