- Зміст статті «Титули» Марка Руссиновича можна перераховувати довго - програміст, фахівець з внутрішньою...
- Зводимо файли разом
- Культ м'якого льоду
- Як UNIX втрачає друзів
- Зародження Sysinternals і бізнесу
- Microsoft: любить / не любить
- Доторкнувся до хмар
- Книга нульового дня
- Поради Марка
Зміст статті
«Титули» Марка Руссиновича можна перераховувати довго - програміст, фахівець з внутрішньою будовою Windows, письменник, автор численних статей, Technical Fellow в Microsoft. І складно порахувати, скільки разів ми згадували в своїх статтях ProcMon, FileMon і інші незамінні утиліти, які він розробив. І ось недавно нам вдалося особисто зустрітися з цим цікавим і багатогранною людиною.
факти
- Народився в 1966 році в Іспанії.
- Випускник університету Карнегі-Меллона, володар ступенів бакалавра та доктора в області обчислювальної техніки.
- У 2006 році увійшов до топ-5 хакерів планети за версією журналу eWeek.
- Працював в IBM як експерт по операційним системам.
- Написав драйвер файлової системи NTFS під DOS.
- У 2005 році знайшов руткит на диску Sony BMG Music Entertainment, через що буквально «прокинувся знаменитим».
- Удочерив девочкуіз Москви.
Зводимо файли разом
Якщо озирнутися назад і згадати, з чого я починав, можна помітити безліч передумов до того, чим я займаюся зараз.
Моїм першим комп'ютером був Apple II. І перше, що я з ним зробив, - розколупав ROM-пам'ять, отреверсів її, і придумав, як можна її розширити.
Я прекрасно пам'ятаю цей момент. Я вчився в шостому класі і прийшов до одного додому. Його батько працював в університеті і приніс додому Apple II. Мій друг сказав: «У мого тата є персональний комп'ютер, підемо подивимося!» Ми пішли і стали грати з ним. Так все і почалося. До цього я хотів стати інженером-авіаконструктором, але після кількох годин, проведених за комп'ютером, передумав і вирішив - хочу працювати в IT.
Пізніше я почав писати статті в журнали і програмувати додатки. Статті були на тему «Як розширити ROM», а програми - для роздруківки зображення з екрану на принтері. З цього я починав і, по суті, зараз займаюся тим же.
У той час програми писали на Basic, але якщо хотілося створювати по-справжньому складні речі, потрібно було переходити на машинну мову. А машинний мову - це просто числа, тому спочатку потрібно було написати асемблер, щоб запрограмувати пакет інструкцій для комп'ютера. Потім потрібен був дизассемблер, щоб отримати з машинного мови назад код програми. Я написав для себе і дизассемблер, і асемблер.
Мене завжди цікавило, як працює комп'ютер. Мені хотілося змусити його робити речі, які звичайний програміст не може. Для цього я і розробив багато з утиліт Sysinternals.
Як тільки я вирішив, що хочу займатися комп'ютерами, я зрозумів, що хочу дізнатися про це все, що тільки можна. Настільки повно, наскільки зможу. Тоді ж прийшло рішення, що хочу отримати освіту в цій галузі. Однак я хотів вивчати не просто науку, яка часто йде в теорію і абстрактні ідеї, а й практичне її застосування, де з'єднуються апаратне і програмне забезпечення.
Я отримав ступінь бакалавра, потім магістра, а потім і доктора з обчислювальної техніки. Свої знання я доклав до створення утиліт і додатків - спробував створювати комерційні програмні продукти з ідей, які прийшли до мене в процесі роботи над докторською. Але у мене нічого не вийшло.
Коли нічого не вийшло, я пішов на роботу в компанії, що спеціалізуються на створенні програмного забезпечення, і використовував знання, отримані вже там. Першою компанією, де я працював, стала NuMega Technologies. Деякий час я був в команді, яка займалася легендарним отладчиком SoftICE (я дуже часто використовував цю програму для реверсивної інженерії під Windows і DOS).
Культ м'якого льоду
Коли я прийшов в NuMega Technologies, у них було всього два програмних продукту: SoftICE і BoundsChecker. Дебагер і утиліта для перевірки коректного використання пам'яті і API-викликів. Це великі і успішні проекти. Однак компанію в майбутньому мали намір продати, а для продажу їм було необхідно мати більше вдалих продуктів. Керівництво сказало: «Ми ще не придумали, яким буде наш наступний проект, але ми хочемо, щоб у нас були люди, готові взятися за нього, як тільки ми придумаємо». Саме тому вони найняли мене.
У мене було багато вільного часу. По суті, мені дали таке завдання: «Поки ми працюємо над наступною ідеєю, чому б тобі не попрацювати над SoftICE? Додай туди кілька команд, напиши документацію ». Тоді у мене дійсно з'явилося багато вільного часу, і саме тоді я почав займатися дослідженнями і писати різні утиліти.
Коли я почав працювати в компанії, там працювало всього близько тридцяти осіб. Компанія ще була маленька і тільки починала рости. Засновники NuMega (Френк Гросман і Джим москалі) хотіли врешті-решт продати її, так що вони наймали все більше людей, і компанія мало-помалу ставала більш організованою.
У NuMega Technologies була дуже класна хакерська атмосфера, але я пропрацював там всього близько дев'яти місяців. Над SoftICE вже тоді працювало досить велика кількість людей, в тому числі і Мет Пітрек. Про нього багато хто знає, він написав книгу «Внутрішній устрій Windows» для Windows 3.1.
Я взагалі в той час завів багато друзів, які залишилися зі мною і до цього дня. Таких як Джон Робінс - Містер Отладчик, про який читачі, швидше за все, теж знають. Містер Отладчик. Він вів колонку Bug Slayer в журналі MSDN і написав книгу з налагодження для Microsoft .NET. Він все ще один з моїх близьких друзів. Живе Джон в Сіетлі, тому що дуже багато консультує Microsoft. Ще Джеффрі Ріткор, якого я зустрів у NuMega Technologies приблизно тоді ж, теж відома людина.
Але в підсумку, в своєму прагненні продати компанію, NuMega стала куди більш комерційною і втратила свої хакерські коріння. А потім закрили розробку SoftICE. Його продали Compuware, але та теж визнала цей проект неперспективним.
Як UNIX втрачає друзів
Один з ключових моментів настав для мене, коли я вперше побачив Windows NT. Здається, це була Windows NT 3.1. Тоді я вирішив, що при тому успіху, який мала Windows 3.1, Windows NT, швидше за все, стане не менш успішною, ніж її суперник UNIX.
Хоча ця ОС все ще була нова і незріла, у неї був впевнений старт. Тоді я подумав - ми спостерігали споживчий зростання в IT, про який всі говорять, і це зростання задала Windows 3.1. Багато людей використовують Windows будинку, а потім переносять її в бізнес. Windows NT дозволяла запускати ті ж самі програми, під тим же призначеним для користувача інтерфейсом, так що було цілком логічно йти далі - на робочі станції і згодом на сервери. Для мене це стало одним з поворотних рішень, тому що до цього я працював з юніксовимі системами, але після зосередився на Windows.
Приказка «Розумні люди приходять до схожих висновків, коли вирішують складні проблеми» застосовна і до операційних систем. Тому перебудуватися, в общем-то, виявилося досить просто. Я займався розробкою низькорівневих частин UNIX, а ОС багато в чому перетинаються між собою. Я написав кілька статей і презентацій на тему порівняння UNIX та Windows NT, наприклад в чому різниця і схожість в їх роботі з пам'яттю. Різниця є, але в основі цих ОС лежать одні й ті ж концепції.
Одним з аспектів, який дуже сподобався мені в Windows NT, була система введення-виведення. Ця система робить ОС дуже гнучкою. Одна з моїх перших популярних утиліт, FileMon, базувалася на гнучкості роботи з файловою системою: можна було просто підключити драйвер і моніторити всю активність I / O-стека. В UNIX таке було неможливо. В принципі, до сих пір складно написати щось подібне під Linux. Що дивно - було зроблено чимало таких спроб (наприклад, FUSE), але вони не увінчалися успіхом.
UNIX тоді не вистачало гнучкості. Насправді я написав версію FileMon під Linux ще в 1998-му. Я зробив це, пропатчити ОС так, щоб можна було перехоплювати системні виклики (я робив таке ще в своїй докторській).
На жаль, одночасно з цим в Linux були внесені зміни, які заважали видачі системних викликів ядра коду, що не ліцензованого під GPL. Оскільки мені не хотілося викладати вихідні FileMon під цією ліцензією, роботу довелося зупинити.
Проте моя робота над UNIX вплинула на розвиток ядра Linux. Зокрема, мої виступи про недоліки ядра призвели до появи таких речей, як Big Kernel Lock (механізм, що дозволяє синхронізувати одночасне виконання декількох процесів, особливо важливий для роботи з багатопроцесорними системами), Zero Copy (переміщення інформації між декількома областями пам'яті без використання ресурсів процесора ) і багато інших.
Зародження Sysinternals і бізнесу
Я написав FileMon, RegMon, NTFS DOS, і це були перші три програми з Sysinternals. Я опублікував їх на сайті одного. Цього одного деякі з вас можуть пам'ятати - Ендрю Шульман, він написав такі книги, як «недокументовані DOS» і «Неофіційна Windows 95».
Ці три програми хостів на його сайті, щоб люди могли завантажувати вихідний код і виконувані файли. Але Ендрю виявився недостатньо відповідальний. Коли у мене з'являлися фікси і я просив: «Ендрю, повісь цей фікс», він витрачав на це занадто багато часу. Тоді я і Брайс Когсвелл (з яким ми познайомилися в університеті) вирішили запустити ntinternals.com.
Ми створили власний сайт і стали викладати програми там. І незабаром стався ще один поворотний момент в моєму житті, коли Брайс сказав: «У мене є ідея програми, на якій ми зможемо робити гроші».
NTFS DOS тоді була дуже популярна, тому що давала людям можливість відновлювати файли з убитої NT-системи, яку не можна було завантажити. Але що, якщо дати людям можливість ще й лагодити системи - копіювати оновлені файли, які б усували неполадки, або запускати перевірку диска? У той час в Windows ще не було ніяких засобів відновлення системи.
Так ми написали програму під назвою NT Recover, за допомогою якої можна було монтувати диски зі зламаною NT-системою віддалено, використовуючи додаток під DOS-програму, завантажене з дискети. Інший системний диск Windows NT довантажувати як віртуальний, і можна було запускати Explorer, копіювати файли і ініціювати перевірку диска.
І ми вирішили, що можемо отримувати за цей продукт гроші. Ми організували Winternals.com і почали продавали його там. У свою чергу, на ntinternals ми помістили невеликий банер з текстом «спонсорують Winternals», виклали безкоштовну версію NT Recover (вона дозволяла тільки зчитувати інформацію, але не давала нічого модифікувати) і направляли людей на Winternals, де можна було купити повну версію.
З 1997 року ми почали приймати до оплати кредитні карти. Спершу це приносило лише кілька сотень доларів на місяць, але дуже швидко дійшло до кількох тисяч доларів на місяць, а потім до десятків тисяч і так далі ...
Коли я влаштувався в IBM і працював в IBM Research, Брайс все ще вкладався в комерціалізацію нашої продукції, яка приносила великий дохід. Він тільки тим і займався, що копіював інформацію з дискет. Тобто він йшов додому, копіював файли з дискет, відносив їх на пошту і відповідав на дзвінки по підтримці.
Скоро справлятися самотужки стало занадто важко, і Брайс сказав, що нам потрібно найняти нових людей. Так ми найняли людину для технічної підтримки і ще виконавчого директора. Я навіть спеціально прилетів (Брайс довелося переїхати жити в Остін), коли ми його наймали.
Незабаром ми брали на роботу все більше і більше людей. Спочатку у нас працювало п'ять чоловік, потім десять, потім двадцять і тридцять. У 2006 році ми представили нові лінійки продуктів, і до 2006 року, коли нас купила Microsoft, у нас було вже вісімдесят п'ять чоловік!
Марк Руссинович на автограф-сесії
Однак до Microsoft приєдналися тільки ми з Брайсом. Microsoft придбала у нас деякі технології. Microsoft Diagnostic and Recovery Toolkit (який, по суті, є аварійним завантажувальним диском, що дозволяє оновлювати, запускати антивірус, аналізувати системні збої) побудований на основі технології, купленої у нас. Так що ми з Брайсом переїхали в Редмонд до Microsoft.
Microsoft: любить / не любить
Взагалі-то колись я примудрився зіпсувати відносини з Microsoft, але продовжував розробляти свої додатки і навіть налагодив відносини досить для того, щоб написати в співавторстві книгу про внутрішній устрій Windows. Я також виступав з доповідями за внутрішньою будовою.
Каменем спотикання з Microsoft став NT Workstation. У Редмонді стверджували, що дана версія технічно непридатна для того, щоб працювати в якості веб-сервера, і програмно обмежувала роботу як IIS, так і будь-якого стороннього сервера. Веб-сервер під NTW міг приймати запити не більше ніж від десяти унікальних IP кожні десять хвилин. За задумом розробників, для такого сюжету було необхідно придбати значно дорожчу Windows NT 4.0.
Однак насправді між двома редакціями NT майже не було технічних відмінностей, що виправдовують такий маркетинг. З'ясувалося це в результаті проведеного мною реверс-інжинірингу обох версій. У свою чергу, це викликало шквал критики на адресу Microsoft з боку преси і ринку в цілому.
Моя продукція стала дуже популярна серед техпідтримки Microsoft. Найчастіше вони використовували FileMon і RegMon. Я став помічати, що все більше і більше листів приходить від співробітників Microsoft. Вони писали: «Нам дуже подобається FileMon, ми його кожен день використовуємо». Потім в базі знань Microsoft почали з'являтися статті, говорить: «Якщо ви думаєте, що у вас якась проблема, запустіть FileMon або RegMon з Sysinternals». Мені дуже лестило, що мої програми з'явилися в документації Microsoft.
Потім я дізнався, що моїми програмами користуються і розробники Microsoft. Одним з моїх перших контактів із співробітниками Microsoft стало спілкування зі старшим розробником Office, який ні з того ні з сього надіслав мені e-mail: «Який у тебе поштову адресу? Я б хотів вислати тобі дещо, тому що ми постійно використовуємо RegMon для підвищення продуктивності Office і діагностики проблем при розробці ». Він надіслав мені дуже добре лист, де йшлося: «Дорогий Марк, ми часто користуємося твоїми засобами при розробці Office, вони відмінні». До листа додавалися джойстик і кілька програм.
Чи важко було перейти на роботу в Microsoft? Microsoft зробила так, щоб прийняти це рішення було дуже легко [Марк сміється, явно натякаючи на щедрість свого нинішнього роботодавця].
Я приєднався до команди Windows. Насправді моя позиція там була практично унікальна - у мене не було ніякої посадової інструкції. Довелося самотужки міркувати, що потрібно зробити. Це був свого роду виклик - зрозуміти, як працювати всередині Microsoft. Як впливати на людей, які ініціативи просувати, які технології висувати на перший план.
Я не можу виділити якісь окремі додатки і продукти і сказати: «Це зробив я». Доречніше буде сказати: «Я зіграв ключову роль в просуванні такої ідеї». Було складно, але цікаво.
Мені дозволяли зосередитися на речах, які я вважав цікавими і / або важливими для Microsoft і продукції, над якою я працював. Наприклад, я працював над MinWin (поняття, яке використовується Microsoft для опису ядра і операційної системи, основні компоненти яких почали розроблятися одночасно з Windows Vista). І тепер Windows Phone 8 побудована на основі того ж ядра, що і Windows. Я зіграв величезну роль в просуванні ідеї розбиття Windows на компоненти, щоб можна було використовувати їх для всіх наших програмних продуктів.
Тобто у нас була Windows CE - ОС для мобільних пристроїв. Дуже примітивна ОС, розроблена в середині-кінці дев'яностих років, коли пристрої були набагато простіше. У неї поганий захист, слабка багатозадачність, недостатньо адресного простору ... словом, майже немає всієї тієї функціональності, яка потрібна сучасній ОС для роботи, безпеки і надійності.
Стало ясно, що не можна розвивати таку ОС. Телефони зараз - це ті ж комп'ютери, так що логічно поставити на них справжню ОС. Той же підхід застосувала Apple, коли вони взяли серце OS X і зробили iOS для телефонів. Логічно, що ми зробили те ж саме.
Але повернемося до того, що у нас були ще й безкоштовні Sysinternals, а також комерційні Winternals, про які я говорив вище. Microsoft використовувала наш дефрагментатор при створенні движка дефрагментації для Windows NT. Також у нас була утиліта під назвою Protection manager, яка могла блокувати рекламу, що, в свою чергу, призвело до самостійного продукту по блокуванню реклами.
Утиліти Sysinternals не стали частиною ОС з кількох причин. Перша: я оновлюю їх досить часто і постійно додаю нові можливості. Якби вони були частиною ОС, вони оновлювалися б тільки з регулярними релізами ОС - раз на рік (раніше взагалі раз в два-три роки, просто зараз справа пішла швидше). Тобто я б не зміг оновлювати їх так часто. Друга: якщо програма - частина ОС, потрібно бути гранично обережним з якістю коду. Це вкрай важливо.
Мені вдавалося робити багато на льоту, буквально відразу. Припустимо, на який-небудь конференції я почув, що непогано б зробити таку-то фичу. І роблю її прямо в літаку, на шляху додому, а на наступному тижні вже завантажую на Sysinternals. Таке неможливо, якщо це частина ОС.
Є і ще одна причина - мої програми націлені на досвідчених професіоналів, розробників в області ІБ і на просунутих користувачів, тоді як Windows користується величезна кількість людей, яким не цікава моя продукція, вона тільки поставить їх у глухий кут.
Моя цільова аудиторія знайшла мене сама, так що, якщо б я помістив Sysinternals в ОС, це навряд чи збільшило б кількість користувачів моїх програм.
Але деякі мої утиліти все ж частково перейшли в Windows. Припустимо, диспетчер задач або моніторинг ресурсів. Так що вони все-таки вплинули на вбудовані засоби Windows.
Доторкнувся до хмар
А останні два з половиною роки я працюю над Windows Azure - платформою хмарних сервісів. Я працюю в хмарному напрямку, тому що зрозумів: інформаційний світ зараз проходить через третю трансформацію. Саме в хмарної технології відбувається основний розвиток, це абсолютно нова парадигма. Ще два роки тому на конференціях ніхто не знав, що таке хмара. А зараз говориш «хмара» і все розуміють, що ти маєш на увазі.
До команди я приєднався, коли проект Windows Azure вже був в розробці. Тоді це був свого роду прототип. Якраз коли я почав роботу над ним, його вперше випустили як комерційний продукт, але це була зовсім нова платформа. Її потрібно було розвивати і покращувати.
Я працював над ідеєю «інфраструктура як сервіс» - функціонал, випущений минулого літа. Я був провідним архітектором цього функціоналу, визначав, як ця модель (IaaS) буде працювати зсередини, як ми будемо використовувати сховище Windows Azure, які вимоги по продуктивності, яка надійність.
Працював я і над іншими напрямками, які мене цікавили, наприклад управління ресурсами дата-центрів. Я розбирався, як правильно задеплоіть його на віртуальних машинах, щоб домогтися максимальної ефективності використання ресурсів. Як балансувати навантаження, які потужності виділяти під віртуальні машини - все це цікаві проблеми в області Computer Science, якими я зараз займаюся в Microsoft Research.
Проте сліди моїх напрацювань помітні і в інших продуктах Microsoft. Наприклад, новий диспетчер задач в Windows 8 явно несе на собі слід Process Monitor і інших подібних утиліт.
Книга нульового дня
Свого часу слову «хакер» намагалися надати негативне забарвлення, але спочатку вважалося, що хакер - людина, яка добре розбирається в комп'ютерах. І тільки потім це слово почало асоціюватися з чимось шкідливим. Для мене воно містить обидва ці поняття, в залежності від контексту. Можна сказати: «Вас хтось хакнул». Мережеві фахівці і фахівці з безпеки використовують слово «хакер» саме в цьому сенсі. Однак хакер також означає і людини, майстерно володіє комп'ютером.
Не знаю, чи можу я називати себе хакером. Ніколи не думав про себе як про хакера. Швидше як про програміста. Думаю, хакерство для мене значить, що необов'язково розуміти всі, що ти робиш, але потрібно розуміти досить, щоб досягати результатів. А я скоріше намагаюся пізнати науку досконально і лише потім прикласти ці знання до програмування. Так що не впевнений, що готовий назвати себе хакером в повному розумінні цього слова.
Я завжди хотів написати книгу. У дитинстві я читав наукову фантастику і технотріллер, і мене завжди захоплювало переплетення технології і хорошого сюжету. Це був цікавий виклик для мене - зрозуміти, чи зможу я це зробити.
Ідея книги Zero Day виникла у мене ще в 2004 році, коли я усвідомив ризик кібертероризму і небезпека хакерів, які могли завдати реальної шкоди. Це дуже нагальна загроза. Виявилося, що Євген Касперський згоден зі мною і останнім часом теж багато говорить про це.
Я хотів підкреслити пов'язані з цим ризики, донести до людей реальність загрози. У той же час було дуже цікаво написати історію, в якій технології і світ кібербезпеки були б описані реалістично. Існує не так багато книг (мабуть, я не знаю жодної), в яких автори спробували б розповісти людям, як і життя людини, що працює в області кібербезпеки. А я хотів, щоб моя книга стала саме такою. Плюс я хотів розповісти гарну історію і окреслити ризики. Так що книга близька до реальності.
Було продано велику кількість примірників, достатню для того, щоб видавництво запросило продовження, яке вийшло кілька місяців тому. І вони підписали мене на ще дві книги.
Поради Марка
Щоб стати успішним в IT, потрібно знайти область, яка тобі цікава. Область, в якій працює не так багато людей. Зазвичай це означає, що вона досить складна, - адже люди намагаються триматися подалі від труднощів. Я знайшов саме таку.
У такій області буде куди менше конкуренції, і твоя цінність буде дуже висока. Потрібно знайти максимум інформації по темі, вивчити її якомога глибше. Якщо робота не збігається з твоїм істинним захопленням, то, швидше за все, ти вибрав не ту професію. І це може бути застосовано не тільки до IT.
І останнє - отримуйте освіту. По-моєму, це дуже важливо. Зараз багато людей обходяться без освіти, але, мені здається, освіта дає структуру, виробляє підхід до навчання, а це корисно - допомагає легше схоплювати принципи. У моєму випадку це було дуже цінно.
По суті, мені дали таке завдання: «Поки ми працюємо над наступною ідеєю, чому б тобі не попрацювати над SoftICE?Але що, якщо дати людям можливість ще й лагодити системи - копіювати оновлені файли, які б усували неполадки, або запускати перевірку диска?
Одним з моїх перших контактів із співробітниками Microsoft стало спілкування зі старшим розробником Office, який ні з того ні з сього надіслав мені e-mail: «Який у тебе поштову адресу?
Чи важко було перейти на роботу в Microsoft?