Величайшие программисты XXI века. Марк Руссинович и его 65 системных утилит

в 9:00, , рубрики: ruvds_статьи, Блог компании RUVDS.com, взлом Windows, разработка под windows, системное администрирование, системное программирование, Софт
Величайшие программисты XXI века. Марк Руссинович и его 65 системных утилит - 1Кто из админов не знает утилиты SysInternals (Winternals) для администрирования и диагностики Windows? Кажется, они известны с незапамятных времён. Но не каждый в курсе, что эти незаменимые инструменты написаны вовсе не компанией Microsoft. Скорее наоборот, они написаны вопреки её желанию.

И здесь мы подходим к личности автора, талантливого и суперпродуктивного программиста Марка Руссиновича. Он показал, что один умный парень способен интеллектуально продавить мегакорпорацию. И той придётся заплатить ему огромные деньги, и даже взять на работу. Потому что повторить его программы она не сумела…

Среди величайших программистов современности Марк Руссинович отличается тем, что у него великолепное образование и степень PhD. На самом деле это редкость, поскольку у половины гениальных разработчиков вообще нет высшего образования, а тем более степени. А вот он до 27-ми лет грыз гранит науки, только потом начал работать…

После десяти лет изучения компьютерных наук в университете Карнеги–Меллона Марк Руссинович пару лет поработал разработчиком в нескольких маленьких компаниях. Затем обстоятельства созрели, чтобы запустить собственную компанию. Обстоятельства следующие:

  • Вышла мегапопулярная ОС Windows 95/NT, её ставили практически на всех новых компьютерах (маки тогда были в крайнем упадке).
  • Появился общедоступный интернет, что открывает возможность для распространения софта в мировом масштабе, в том числе по модели shareware.

Шаровары

В 1996 году они вместе с Брайсом Когсвеллом соучредили компанию Winternals Software, где Руссинович занимал должность главного архитектора программного обеспечения. Одновременно был запущен сайт sysinternals.com (поначалу ntinternals.com), на котором напарники написали и опубликовали десятки популярных утилит (сейчас оттуда стоит редирект на https://learn.microsoft.com/en-us/sysinternals/). Все программы поначалу были бесплатными.

Величайшие программисты XXI века. Марк Руссинович и его 65 системных утилит - 2

Как известно, с середины 90-х выпуск и продажа мелких программ по модели shareware (в просторечье «шаровары») через интернет позволял единственному программисту быстро заработать миллионы долларов. Многие помнят 19-летнего студента Джастина Франкеля, которого просиживал сутки напролёт дома за компьютерными играми, но после создания примитивного MP3-плеера Winamp в 1997 году денежные чеки по $10 приходили ему мешками со всего мира, а ведь Джастин даже не сам написал эту программу, а использовал труд своего однокурсника Дмитрия Болдырева, а потом заплатил ему за молчание (если верить Дмитрию, конечно).

Вообще, в 90-е годы многие разработчики испытывали удачу с помощью «шаровар». Это была революция: для заработка достаточно одного компьютера. Не нужно ходить в офис. Сиди дома и программируй. Создавай. Есть идея и талант — весь мир у твоих ног. Наконец-то программисты в разных уголках планеты стали получать зарплату американского уровня — всё благодаря интернету...

… Можно сказать, что утилиты Winternals выставили Microsoft в невыгодном свете. Все ясно увидели, какой функциональности сильно не хватает в операционной системе, каких настроек там нет, что сделано коряво по дефолту. И удивительно, что все эти косяки продемонстрировал по сути один программист. Фактически, он знал ядро Windows и умел программировать лучше, чем тысячи разработчиков редмондской корпорации. Оно и неудивительно, ведь он работал на себя, а не на дядю.

Большинство утилит в базовой версии распространялись бесплатно, но компания продавала профессиональные версии этих инструментов (так работает один из вариантов бизнес-модели shareware), а также отдельный коммерческий софт для восстановления данных.

Список утилит

Вот некоторые из программ SysInternals, Wininternals и NTInternals, начиная с 1996 года. Указаны ссылки на некоторые утилиты, которые официально распространяются до сих пор с сайта Microsoft.

▍ Системные утилиты

  • BlueScreen — скринсейвер, который эмулирует синий экран смерти и перезагрузку компьютера;
  • Process Explorer и Process Monitor — продвинутые версии нативного Windows Task Manager;

    Величайшие программисты XXI века. Марк Руссинович и его 65 системных утилит - 3

  • Autoruns — самая продвинутая программа для управления автозагрузкой;
  • SDelete — безопасное удаление файлов, чтобы на диске не оставалось следов;
  • BgInfo — автоматическая генерация обоев рабочего стола с системной информацией;
    Величайшие программисты XXI века. Марк Руссинович и его 65 системных утилит - 4

  • TCPView — просмотр активных соединений;
  • NTFSDOS — работа с дисками NTFS под Windows 95 и 98, которые на тот момент не поддерживали эту файловую систему (сейчас утилита удалена с официального сайта);
  • Contig — утилита командной строки для дефрагментации HDD.
  • Coreinfo — утилита командной строки, которая выводит в консоль соответствие логических и физических CPU, узлов 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 от драйверов устройств и из программ, в том числе на удалённой системе через интернет без запуска дебаггера;
    Величайшие программисты XXI века. Марк Руссинович и его 65 системных утилит - 5

  • Desktops запускает до четырёх виртуальных десктопов и позволяет удобно переключаться между ними;
  • LoadOrder — показывает порядок загрузки устройств на WinNT/2K;
  • MoveFile и PendMoves — позволяет запланировать удаление или перемещение файла автоматически после следующей перезагрузки компьютера (например, в свой последний день работы в компании);
  • NotMyFault — планирование различных сбоев, перезагрузок и других диверсий под Windows;
    Величайшие программисты XXI века. Марк Руссинович и его 65 системных утилит - 6

  • PageDefrag — дефрагментация файлов, в том числе файлов подкачки и кустов реестра, что в то время было недоступно обычными инструментами для дефрагментации, в своё время утилиту включили в состав 32-битных Windows;
  • RootkitRevealer — бесплатная утилита для локального обнаружения руткитов. Программа непрерывно сканирует API файловой системы (MFT, NTFS, FAT16/32), а также системного реестра и выводит список несоответствий к реальным данным;

    Величайшие программисты XXI века. Марк Руссинович и его 65 системных утилит - 7

  • PortMon — мониторинг параллельных и последовательных портов, в том числе отображение передаваемых данных;
  • ProcDump — дамп процессов для реверс-инжиниринга, воспроизведения процессов и расследования причин, например, пиков в использовании CPU;
  • NT Locksmith — взлом паролей Windows (формально «восстановление забытых паролей»);
  • PsPasswd — изменение пароля на локальном или удалённом компьютере;
  • PsShutdown — выключение или перезагрузка компьютера;
  • PsSuspend — приостановка и возобновление процессов.
  • диспетчер памяти RAMMap от 18 мая 2010 года стал первой утилитой, выпущенной после покупки компанией Microsoft.
  • Zoomit — программа для быстрой записи маленьких технических презентаций: зуммирования экрана, рисования на экране, подписи в любых местах и т. д., когда нужно что-то показать и объяснить со своего экрана другому человеку (или нескольким).

▍ Менеджеры и комплекты утилит

  • 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.

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

Величайшие программисты XXI века. Марк Руссинович и его 65 системных утилит - 8
Панель PowerToys Run из комплекта PowerToys

Сделка с Microsoft

В июле 2006 года Microsoft купила Winternals Software и все её активы. Марк объявил эту новость в своём блоге и пояснил, что продолжает распространение утилит из комплекта Sysinternals до тех пор, пока Microsoft против этого не возражает.

Однако не всё пошло гладко. Сразу после сделки с Microsoft с сайта была удалена утилита NT Locksmith для восстановления «забытых» паролей Windows. Вероятно, юристы посчитали, что её можно использовать для взлома, то есть для несанкционированного доступа к компьютерной информации, за что предусмотрена статья в УК.

Хотя если рассматривать хакинг в более широком смысле, то половину системных утилит Sysinternals можно рассматривать как «взлом Windows», если мы получаем доступ к информации, недоступной штатными средствами ОС. Ведь чтобы понять устройство любой системы, нужно её вскрыть, как же иначе? То есть взлом, хакинг — тоже системное программирование.

Вскоре с сайта удалили большую часть исходных кодов программ. Но это вполне логично, потому что Microsoft всегда была врагом движения Open Source, считая свободные (вирусные) лицензии главной опасностью для индустрии коммерческого ПО.

Первоначально Марк Руссинович получил должность технического специалиста в подразделении платформ и сервисов Microsoft, в сферу которого входит разработка ядра Windows. Со временем его таланты проявились более очевидно — и к 2014 году он дорос до технического директора в Microsoft Azure.

Эта история показывает, что большой успех может начинаться с очень маленького дела — одной или простой утилитки, написанной буквально за вечер. Так было и с Winamp, хотя о гениальности Френкеля не идёт и речи, потому что достаточно было набросать GUI и портировать под Windows готовый плеер. Однако с Марком Руссиновичем совершенно другая история. Он действительно проявил себя как высококлассный системный программист, заработал уважение миллионов системных администраторов, которые до сих пор используют его утилиты каждый день. Подобное уважение миллионов людей и собственный талант всегда легко конвертировать в деньги, если есть такое желание.

Брайс Когсвелл уволился в 2010-м, а Марк Руссинович до сих пор работает в Microsoft. В отличие от большинства компьютерных гениев-самоучек, у него степень PhD и полный набор софт-скиллов, чтобы успешно влиться в большую корпорацию. Что он в итоге и сделал. Такой хакерский путь тоже возможен.

Автор: Анатолий Ализар

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js