[face-to-face]Мастер взлома фотографирует бабочек
08 04 2010 | Рубрика: Аналитика |
|
Сегодня мы пообщаемся с одним широко известным в узких кругах человеком. Много хакеров воспитано на его знаменитом цикле статей «Теоретические основы крэкинга», причем не только тех хакеров, которые ломают ПО, но и тех, которые его защищают от взлома. Многие повседневно используют такие его программные продукты, как: Sign 0f Misery, Neo Sign 0f Misery и Window Scanner. Встречаем, сегодня у нас в гостях тот самый CyberManiac собственной персоной!
BarMentaLisk: Итак, давайте знакомиться, молодой человек! Или не молодой? Расскажи о себе немного: как зовут, сколько лет исследуешь этот мир, где родился, кем работаешь, дай ключи от своих электронных кошельков… Хотя, последнее наверно не обязательно. Короче, рассказывай по своему усмотрению все то, что не засекречено.
CyberManiac: Начнём с того, что мой день рождения, 12 июня, в России — государственный праздник. Правда, когда твой день рождения выпадает то на выпускные экзамены, то на сессию, то на диплом, радости в этом мало. Родился несколько больше 30 лет назад и с тех самых пор провёл большую часть жизни в Сибири, под Красноярском — угол довольно-таки медвежий, причём в самом прямом смысле слова: по окраинам города медведей замечают каждый год и не по одному разу. Мне, правда, ни разу не доводилось, но оно и к лучшему — не всем, кто с ними встречался, эту встречу удалось пережить. В детстве посчастливилось изрядно поездить по всей стране — Ташкент, Андижан, Фергана, Сарапул, Геленджик, Сочи — это из того, что сразу вспомнилось. Да и сейчас при случае не прочь куда-нибудь съездить, но по России уже как-то неинтересно: летом — смысла нет, летом и у нас неплохо, а зимой меня ничего прохладнее тропиков не устраивает в принципе. Работаю, как ни странно, по дипломной специальности — инженером-программистом, пишу на вечные темы: автоматизация документооборота и учёт материальных ценностей. В общем, немножко Си, немножко Оракула и много-много нудных форм да отчётов, от которых в комнате даже мухи уже передохли. Иногда, правда, попадаются задачи, когда приходится заниматься исследовательской деятельностью, а то даже и браться за отладчик. Но, в основном, работа — занятие скучное, хоть и оплачиваемое. Да и компьютеры с некоторых пор уже не «Электронно-Вычислительные Машины», а только лишь «бытовая электроника», как телевизор или видеокамера. Если бы Гибсон взялся писать своего «Нейроманта» сегодня, нынешние компьютеры вряд ли смогли бы его вдохновить.
B: Чем занимаешься в свободное от работы время?
C: Это очень сильно зависит от времени года и даже погоды на улице. Постоянно я только изучаю японский язык, с тайной целью сдать на второй кю Норёку сикэн и перебраться в Японию. Когда более-менее тепло, стараюсь выбраться пофотографировать бабочек, птичек, жучков и прочую живность. Ну и на пляж сходить, поплавать — без этого тоже никак. Иногда, правда, удаётся и зимой заниматься тем же самым, когда выбираюсь в тёплые края. Но, в основном, лето «съедают» бабочки — чтобы заснять некоторых из них, уходит два-три года, а есть и такие, которых я до сих пор не смог сфотографировать. Когда я только-только взялся за фотоохоту, даже не представлял, сколько осторожности, терпения и усилий это занятие может потребовать — и это несмотря на то, что снимаю всего лишь бабочек на окраинах города, а не амурских тигров в глухой тайге. А вот когда ложится снег, разгребаю то, что наснимал за лето, программирую помаленьку для себя или просто бездельничаю. Последнее занятие, честно говоря, отнимает больше всего времени — трудно заставить себя что-то делать, когда ночь кончается в 9 утра и начинается снова в 5 вечера. Так что валяюсь на кровати, смотрю японское кино и очень жду лета.
B: Компьютерами рано заинтересовался? Как началось знакомство с электронно-вычислительными друзьями?
C: Я, скорее, заинтересовался калькуляторами, компьютеры в те времена можно было увидеть разве что по телевизору. Хотя во втором или третьем классе у нас была экскурсия в вычислительный центр, но те компьютеры больше походили на шкафы и тумбочки, и даже если бы такое можно было поставить дома, то совершенно непонятно, зачем. Вот калькулятор — совсем другое дело, на нём можно считать домашнее задание по математике. Так что в 8 лет мне на Новый год подарили калькулятор. Простенький МК-60, зато в металлическом корпусе, в «корочках» а-ля блокнот, и на солнечных батареях. Что интересно, до сих пор отлично работает, а вот те, что поновее и понавороченнее, таким долгожительством похвастать не смогли — все давно уже сломались. Несколько позже я узнал о существовании программируемых калькуляторов, на которых есть синусы-косинусы, а главное — можно играть в игры. В пятом классе записался в кружок программирования, и вот там уже были компьютеры – «Ямахи» с чёрно-зелёными мониторами, Бейсиком, катушечным магнитофоном и некоторым количеством игр. Желающих, правда, всегда было больше, чем компьютеров, так что приходить приходилось заранее. Примерно в то же время в семье появился и программируемый калькулятор MK-61. Калькулятором я завладел практически безраздельно, раздобыл старых журналов с текстами игр и программ и оттянулся по полной. Калькулятор, правда, через некоторое время сгорел от статики, что подвигло меня написать свой собственный интерпретатор программ для того самого калькулятора. Интерпретатор получился, конечно, кривой и совсем не полный, но зато работающий. Потом, уже году этак в 90-м, мне подарили «Дубну-48К». Кому довелось ей попользоваться, дубновскую клавиатуру не забудет никогда. Давить на кнопки приходилось изо всех сил, ни о какой «беглой» печати и речи быть не могло — после четырёх часов за этой клавиатурой пальцы только что судорогой не сводило. Зато она была совместима со «Спектрумом», и к ней можно было раздобыть игры, программы и даже распечатки документации по этим программам, причём документация для одной программы запросто могла стоить дороже, чем кассета с этой программой и ещё десятком других. А ещё была культовая книга «ZX Spectrum для пользователей и программистов» самая главная ценность которой заключалась в описании команд ассемблера и инструкции к ассемблеру GENS и отладчику MONS. Книжка эта у местных барыг стоила совсем безумных денег (тогда это называлось «договорная цена»). Стоила бы она подешевле, ассемблер для Z80 я бы изучил на год-полтора раньше. Потом я на стипендию купил «Кворум-128» с огромной кучей памяти (целых 128 килобайт), нормальной клавиатурой и прочими радостями, и даже сделал наброски многозадачной ОС, способной выгружать работающие программы в дополнительную память и возвращать их оттуда по требованию. Довести до конца, впрочем, поленился — в моду начали входить PC. Свой первый Pentium 166MMX пришлось собирать по частям — собранный компьютер тогда стоил дороже, чем все части по отдельности, к тому же это позволяло растянуть расходы. Так что в момент первого включения мой компьютер не имел жёсткого диска и даже мыши, не говоря уже о CD-ROM. Зато памяти я набил аж 16 мегабайт «быстрой» SDRAM (тогда обычными были 8 мегов, причём памяти более дешёвой и медленной), сделал загрузочную дискету, развёртывавшую систему на RAM-диск, и таким образом прожил полгода до винчестера, программируя на Турбо-Паскале, играя в Doom и Master of magic и набирая тексты в «Слове и деле». Ну а дальше, наверное, всё как у всех — за исключением, может быть, того, что все последующие домашние десктопы я тоже собирал самостоятельно.
B: Сколько языков ты знаешь? Какими из них постоянно пользуешься, какой самый любимый?
C: Бейсик, разумеется, Паскаль/Delphi, ассемблеры для Z80 и x86, Форт, Си с плюсами и без, ну и SQL с PL/SQL. Си и SQL нужны по работе, но вообще-то не нравится ни тот, ни другой. На «Ямахе» и «Дубне» много программировал на Бейсике — весьма практичный язык для небольших вычислительных задач, единственное, чего в нём не хватало, это динамических массивов и локальных переменных в подпрограммах. Позже, конечно, Микрософт добавил и то, и другое, но главное достоинство языка — простоту — они угробили, хотя их же реализация Бейсика для «Ямахи» была, наверное, одной из лучших. На «Спектруме» писал и на Форте, даже написал нормальный экранный редактор для этого языка, но реализация была жутко кривая, и я не столько писал собственный код, сколько выяснял в каком ещё месте глючит интерпретатор и как это можно обойти. Вообще Форт — язык совершенно фантастический по возможностям, но вот народ его почему-то не приемлет — то ли с реализациями не везёт, то ли сама идея программирования «задом наперёд» оказалась слишком сложной для большинства. Однако этот язык на меня повлиял, наверное, сильнее всех прочих; Neo Sign 0f Misery, в принципе, и построен по принципам, схожим с Форт-интерпретаторами. На ассемблере для Z80 я программировал довольно много, хотя поначалу применял его только для вставок в Бейсик-программы. Однако, когда я переписал ПЗУшную процедуру вывода символов, выкинув из неё все лишнее, и она от этого заработала в сотню раз быстрее — вот тут-то я и осознал истинные возможности этого языка, после чего написал редактор растровых шрифтов с управлением от джойстика, десятком шрифтовых эффектов, возможностью поиска готовых шрифтов в памяти и т.п., уместив всё это чуть больше, чем в 3 килобайта исполняемого кода. Для себя же в основном пишу на Delphi, потому как там проще сосредоточиться на решаемой задаче, не отвлекаясь на тонкости и особенности используемого языка. Ну и потому что в нём сравнительно легко создать для программы интерфейс, ибо прикладная программа без графического интерфейса сейчас мало интересна домашнему пользователю.
B: Некоторые считают, что элитные хакеры работают только под собственноручно-написанной ОСью, и юзают исключительно самописные антивири и фаерволы для максимальной безопасности. Развеешь этот миф?
C: Элитным хакером мне определённо стать не судьба, и операционка, и антивирус, и фаервол у меня «от известных производителей». ОС — обычная Win7, поначалу думал, поиграюсь пару недель, как с Вистой, а потом форматну раздел, но оказалось, что под ней Фотошоп работает на удивление стабильно, так что понемногу поставил под неё и весь остальной софт и оставил старую XP только для программирования и на всякий пожарный случай. Есть ещё Мандрива 2009, но в ней необходимость возникает не так часто, как раньше. Антивирус, естественно, поставил, ибо иногда приходится втыкать чужие флэшки, на которых чего только нет. Фаервол тоже нужен, правда не для защиты от вторжений извне, а потому что в последнее время развелось слишком много софта, лезущего в инет без разрешения. Хотя, по моему глубокому убеждению, читалкам PDF и графическим редакторам делать там совершенно нечего. И если рабочий фаервол, в принципе, может быть написан силами одного человека, то антивирус или ОС, созданные одним человеком, вряд ли смогут превзойти уровень первых версий Linux и Aidstest, которые в нынешних условиях выглядят совсем уж скромно.
B: Назови три самые необходимые программы из тех, которыми часто пользуешься.
C: Самые необходимые — видимо, такие же, как и у 99% пользователей компьютеров. Браузер — Опера (которой я пользуюсь аж с третьей-с-чем-то версии, если память мне не изменяет), медиаплеер — JetAudio и офисный набор — OpenOffice.
B: Расскажи, как родилась идея написания s0m, в чем писал, на кого из предшественников равнялся? Много ли встретил подводных камней?
C: Там всё было просто: тогда я активно ломал программы, и чтобы красиво оформлять результаты своей деятельности, мне требовался генератор патчей. То есть программа, которая генерировала бы другие, небольшие по размеру программки, вносящие изменения в указанные файлы. Вот её-то я и хотел сначала написать, а до тех пор — пользовался чужими. Только вот все они были не без недостатков: одни — создавали «некрасивые» патчи, без иконок и логотипов, другие — не позволяли патчить больше 255 байт, третьи — генерировали слишком «жирные» EXE. Ещё большую проблему составляли memоry patcher’ы — тогда на дворе был 2000 год, уже было, из чего выбирать, но практически все патчеры работали по принципу «запустить — подождать несколько секунд — пропатчить», и лишь один из найденных мной умел обнаруживать факт полной загрузки программы по появлению окна с нужным заголовком. А ещё в те времена было модно блокировать управляющие элементы. Есть у тебя серийник к программе — значит, кнопка «Сохранить» будет работать, нет серийника — кнопка остаётся серой и ненажимаемой. Разумеется, умные люди быстро догадались, что если кнопка блокирована стандартными средствами WinAPI, то теми же стандартными средствами можно её и разблокировать. Однако каждый раз делать это вручную было неудобно, а единственная программа, автоматизировавшая этот процесс, мне показалась чрезмерно сложной, да ещё и требовала своего постоянного присутствия в памяти, которую я к тому времени нарастил до 48 мегабайт, но всё равно предпочитал почём зря не расходовать. Примерно тогда же появились первые инструменты для бесконечного продления триального срока программ изменением системной даты на время запуска программы, а также сброса триалов удалением ключей реестра. В общем, человечество активно изыскивало пути бесплатного использования платного ПО, и я просто не мог оставаться в стороне. В итоге я пришёл к мысли, что если уж собираюсь писать супермегапатчер, так пускай он предоставляет полный комплекс услуг по обходу защит в программах, а не только правит байтики в файликах. Также было очевидно, что лучше всего сразу создавать собственный, специализированный язык сценариев, из элементов которого можно, как из кубиков, собрать противоядие от очередной защиты и изготовить миниатюрный исполняемый файл, которым можно было бы поделиться со всеми желающими. Главных направлений изначально было выбрано пять: изменение системного времени, манипуляции с окнами, операции с реестром, модификация исполняемых файлов и, наконец, патчинг программ в памяти. Всего этого набора должно было хватить для победы над абсолютным большинством тогдашних защит. Поскольку в те времена каждый мегабайт ОЗУ был на счету, а частота процессоров редко переваливала за 200 мегагерц, в качестве наиболее подходящего языка для реализации интерпретатора сприптов был выбран ассемблер (MASM32) — во-первых, из-за размеров исполняемого файла, а во-вторых, потому что мне было интересно написать на ассемблере что-то «от и до», а не ограничиваться одними лишь вставками. Для оболочки единственным вариантом был Delphi – Билдер и сейчас-то скоростью работы не блещет, а на оборудовании тех времён сборка сколь-нибудь объёмного проекта требовала просто ангельского терпения. После долгих раздумий что, да как, да стоит ли вообще, и, согласно официальной мифологии (потому что вести летопись проекта мне тогда и в голову не приходило) в начале зимы 2001-го года я засел за программирование и месяца через три соорудил первый пре-релиз, который, увы, даже у меня не сохранился. Правда, в нём тогда было слишком мало возможностей, чтобы воспринимать его всерьёз. Однако третий пре-релиз мог уже довольно многое, а когда программа доросла до версии 1.2, она содержала практически всё, что я запланировал изначально. После выхода версии 1.0 я озаботился распространением программы в интернете (до того момента она выкладывалась только на городской сервер с бесплатным доступом), и вот тут через некоторое время начались первые сложности. То некоторые антивирусы вдруг взъелись на ядро (эта проблема и до сей поры всплывает, несмотря на то, что исходники ядра NeoS0M общедоступны), то вдруг на chat.ru мой самый первый сайт забанили, и пришлось несколько месяцев перебирать разные бесплатные хостинги, то вдруг выяснилось, что один из компонентов, использованных в оболочке, не на всех машинах работает стабильно. После того, как я добавил в ядро механизм подмены жёстко заданных параметров значениями переменных, у меня возникло чувство, что программа развивается куда-то не туда, превращаясь из набора простых «кубиков» для построения скриптов в самостоятельный язык программирования с довольно странным синтаксисом. При этом такие простые, в общем-то, вещи, как разбор командной строки на параметры или построение полного списка окон и его вывод в файл порождали скрипты гигантских размеров и не меньшей сложности. Да и сам код ядра стал зрелищем не для слабонервных — в погоне за минимальным размером я запутал его настолько, что совершенно безобидное изменение приводило к трудноуловимым ошибкам в совершенно неожиданных местах. Последней каплей было то, что когда я попытался снять внутреннее ограничение на длину считываемого текста окна в очередном пре-релизе версии 2.7, «сломалась» команда поиска окон, которая до того в течение четырёх лет не доставляла ни малейшего беспокойства. Да и резерв команд начал подходить к концу — изначально я сделал коды команд однобайтными, и к последней версии израсходовал примерно 220 кодов из 256 возможных. Поэтому в конце лета 2005 года я решил начать новый проект с чистого листа и засел за NeoS0M. Заодно и перепозиционировал новую программу из «инструмента для обхода защит» в «средство автоматизации» – и не только для того, чтобы не нервировать софт-каталоги, но и потому что сущность программы действительно подверглась изменениям: к примеру, в составе программы есть готовый скрипт, складывающий сообщения, приходящие по локальной сети, в текстовый файл — изначально я его писал не в качестве примера, а для собственного использования.
B: Функционал Neo s0m намного превышает возможности s0m, однако, если в s0m большинство команд были интуитивно понятны даже новичкам за счет так полюбившихся всем диалогов добавления команд, то синтаксис Neo требует достаточно серьезного изучения, и предполагает наличие опыта программирования. Есть ли надежды, что наследник когда-нибудь станет таким же привлекательным для начинающих хотя бы в базовых командах?
C: Насчёт сложности синтаксиса в NeoS0M я не согласен, синтаксис там предельно прост. Первое слово — имя команды, всё остальное — параметры этой команды через пробел и, по желанию, комментарий. Единственное, чего в Sign 0f Misery действительно не было — это обязательного выделения нужного количества глобальных переменных в самом начале скрипта. В s0m их число было ограничено, сначала было 16 переменных, потом стало 48. Проектируя NeoS0M я решил, что пользователь сам способен решить, сколько переменных ему надо, но за это пришлось заплатить одной дополнительной командой. NeoS0M стал сложнее в другом: во-первых, он более завязан на работу с переменными. В Sign 0f Misery можно было написать скрипт, совершенно не представляя, что такое переменная; в первых версиях там никаких переменных не было вообще! То есть на самом деле внутренняя переменная «список найденных окон» вполне себе существовала, но начинающему пользователю о ней знать было не обязательно. Теперь же я эту механику вытащил на поверхность, и даже простейший скрипт уровня «Закрой мне все окна Блокнота» без переменной обойтись не может. В результате простые скрипты стали более громоздкими, но вот сложные — упростились даже не в разы — на порядки. Во-вторых, оболочка Sign 0f Misery определённо была одной из основ успеха программы. Выбрать параметры в диалоговом окне, разумеется, не в пример проще, чем вводить набор чисел, смысл которых невозможно понять, не заглянув предварительно в документацию. Однако набивание скриптов в текстовом редакторе я предполагал лишь как первый, но не единственный способ создания скриптов. Чтобы новая программа была не хуже старой, сначала нужно было написать ядро и дать пользователю набор команд для решения насущных задач (да и мне надо было в чём-то писать скрипты для отладки и тестирования уже сразу после того, как ядро научилось исполнять команду «Завершить скрипт»), вот так и появилась компиляция скриптов из исходных текстов. И только после этого я планировал выстраивать вокруг уже работающей системы подходящую оболочку, которая, я надеюсь, к выходу версии 1.0 будет в полностью рабочем состоянии.
B: Софт, представленный на сайте kickme.to/inqsoft – это ведь не все, чем ты интернет-сообщество можешь порадовать? Наверняка есть и другой креатив, поделись-ка с читателями ссылочками на свое творчество!
C: Как махровый приверженец браузера Opera, я не мог пойти мимо ресурса MyOpera.com и года три назад завёл там учётную запись – очень уж мне понравилось устройство и дизайн тамошнего фотоальбома. А чуть позже к фотоальбому добавился и мой «двоичный журнал». В основном я там пишу на темы, далёкие от компьютерных технологий: очерки про олд-фэшн ретро-стайл фотографическую оптику и как мне с её помощью удалось (или не удалось) запечатлеть нашу местную живность, да понемногу излагаю впечатления от своего прошлого отпуска. А ещё, в честь выпуска «юбилейной» версии 0.5 я изложил там историю проекта Sign 0f Misery, насколько мне удалось её вспомнить через 9 лет после тех событий. А находится всё здесь: http://my.opera.com/_CyberManiac_ Впрочем, попасть туда можно и другим, более весёлым способом: для этого нужно направить гуглю запрос про «фото натуриста», и одна из записей моего блога окажется на первой же странице. Однако тех, кто надеется увидеть там моё фото в голом виде с гигантским объективом наперевес, ожидает глубочайшее разочарование: провозгласив себя фотографом-натуристом, я подразумевал всего лишь пристрастие к фотосъёмке всякой живности, а не то, что из всей одежды надеваю один лишь фотоаппарат.
B: Как относишься к интернету в целом?
C: Трудно как-то относиться к «интернету в целом». Есть сайты, которые я посещаю ежедневно, а есть такие, на которые даже случайно заходить не собираюсь. Но, в общем для меня интернет — прежде всего место, где можно что-нибудь скачать. Раньше качал софт гигабайтами, но с некоторых времён обнаружил, что успеваю попробовать от силы четверть из всего скачанного и поостыл к этому делу. Зато, перебравшись на безлимит, обновил всю свою аудиотеку так, что там теперь царствует сплошной lossless и получил неоценимую возможность посмотреть множество фильмов, которые сейчас иными путями уже и не раздобыть.
B: Назови навскидку пару толковых сайтов.
C: Если по программированию вообще и крэкингу в частности, то wasm.ru, sources.ru и cracklab.ru. А ещё есть mjulia.org.ua – может и не слишком толковый, но тоже, в каком-то смысле, про новинки информационных технологий. По крайней мере, настроение мне поднимает регулярно.
B: Спасибо тебе за уделенное время! Будем с нетерпением ждать твоего нового творчества и новых версий ПО. Успехов тебе и вдохновения!
Тэги: face-to-face, интервью, общение
Возник вопрос после прочтения? Или автор не описал важный момент?
Есть что сказать на эту тему, а комментарий - это не твое?
Тогда Go на наш форум.
Общайся на темы ИТ свободно, развивайся и рассказывай новое другим! Мы будем рады принять тебя в нашу компанию














3 Комментария (ев)
Kerny
09 Апр 2010
интересно было прочесть))))
eihwaz07
31 Июл 2010
Да-да. Даже пожалел что не застал времена спектрумов)))
NAGRIS
01 Авг 2010
Интересно
Оставьте комментарий