Об отладчике SoftICE - из первых рук

Мы уже писали о самом мощном и функциональном дизассемблере (смотрите интервью с создателем IDA Pro, Ильфаком Гильфановым), теперь дошла очередь до лучшего в своем роде отладчика. Честно говоря, к разработчикам SoftICE накопилось очень много вопросов, начиная от функциональности самого отладчика и заканчивая моральными аспектами использования SoftICE для взлома shareware-программ. В этой статье вы узнаете о совершенно новом продукте - Visual SoftICE, его разработала и выпустила на рынок все та же фирма NuMega Compuware. Особое внимание мы уделим также вопросу о переносе SoftICE под Unix/Linux. Хотя никто этого делать не собирается, лично мне было очень интересно узнать, почему...
Нам удалось пробиться к человеку, который день ото дня работает над SoftICE и собственными руками пишет его код. На наши вопросы отвечает Крис Плекайда (Chris Plakyda).


TanaT: Расскажите немного о компании NuMega? Какую роль вы в ней играете?

Крис Плекайда: NuMega Lab, разработчик SoftICE и BoundsChecker, была куплена корпорацией Compuware в декабре 1997 года. Compuware - это компания, специализирующаяся на решении всех технических проблем, которые только могут возникнуть у разработчиков. Сама NuMega Lab была основана двумя работниками Wang Laboratories, Inc.
Я - Крис Плекайда, главный разработчик и технический инженер SoftICE. Я работаю в NuMega и Compuware уже пять лет, все это время занимаюсь только SoftICE. Я начинал простым разработчиком, несколько лет назад стал главным разработчиком, а недавно и главным техническим инженером. Я отвечаю за ежедневную работу и все технические решения, касающиеся SoftICE.



Крис Плекайда отвечает на наши вопросы


TanaT: Как создавался SoftICE?

Крис Плекайда: SoftICE изначально предполагался быть лишь расширением для отладчика Codeview. После появления режима V86 в 386 процессорах, мы долго думали и пришли к выводу, что можно создать полноценный отладчик. Так, собственно, и родился SoftICE. За время существования SoftICE было выпущено огромное число его версий. Некоторые из них широко известны. Например, для DOS, Win3.1, Win9x и WinNT. Также популярны версии для операционный систем Netware. В дополнение к этому мы поддерживаем 8-, 16-, 32- и 64-битные операционные системы.


TanaT: Какие задачи может решать SoftICE и для каких планировался изначально?

Крис Плекайда: Вся прелесть SoftICE в том, что он может отлаживать абсолютно все, что было загружено файловой системой. Наш продукт создавался и проектировался, как полностью системный отладчик, работающий с 3 кольцом (пространство приложений), 0 кольцом (драйверы) и кодом BIOS. Его единственным недостатком является то, что SoftICE не имеет собственной файловой системы или менеджера загрузки. Поэтому есть маленький короткий промежуток времени, когда ОС уже работает, а SoftICE еще нет. Важным преимуществом SoftICE является то, что когда выскакивает отладочное окошко, вся система полностью останавливается. Вы снимаете слепок "замороженной" системы, срез в определенной точке времени. Это дает возможность изучить каждый уголок системы, включая память, структуры и внутренности самой операционной системы. Такое может очень пригодится, когда приходится отлаживать что-нибудь действительно мощное. Разработчики приложений для 3 кольца также найдут много полезного в SoftICE, так как тот показывает всю систему полностью, включая каждый кусочек только что проработавшего кода. Например, если вы отлаживаете одно приложение, то можете также легко изучать и отлаживать другое. Даже если приложение вызывает что-то из недр операционной системы, вы сможете отладить и это.


TanaT: На кого рассчитан SoftICE? На какой сегмент рынка?

Крис Плекайда: Я бы сказал, что основными пользователями SoftICE является высококомпетентные программисты и разработчики драйверов. Создание драйверов устройств - задача довольно сложная. Программисту требуется отладчик, который может добраться до аппаратного обеспечения и показать все, что есть в памяти. SoftICE также часто бывает полезен разработчикам приложений для 3 кольца, особенно тем, кто создает компиляторы.


TanaT: SoftICE не имеет себе равных на сегодняшнем рынке. Он - самый лучший. Как вы думаете, почему так сложилось?

Крис Плекайда: Я уже частично ответил на этот вопрос. Для меня, например, причинами, почему SoftICE "самый лучший" являются его функциональность, скорость, простота в использовании, надежность и стабильность. К этому могу добавить, что люди, работающие над этим отладчиком, действительно заботятся о нем. Мое личное мнение также еще и в том, что разработчикам SoftICE действительно интересно совершенствовать свой продукт. Думаю, это - немаловажный факт. Перед тем, как стать членом команды, занимающейся SoftICE, я очень долгое время был его пользователем. Каждый раз, когда у меня возникала какая-то проблема, я разговаривал напрямую с разработчиками, которые и ставили все точки над "i". Сейчас, когда я представляю уже другую сторону такого диалога, мне нравится общаться с пользователями лично. SoftICE - технический продукт, для которого мнения пользователей очень и очень важны. Мы и дальше пойдем тем же курсом - пользователи должны общаться с разработчиками напрямую.


TanaT: Какие бывают дистрибутивы SoftICE? Где их можно купить в России?

Крис Плекайда: SoftICE входит в состав DriverStudio или SoftICE Driver Suite. В России DriverStudio и SoftICE Driver Suite можно достать в компании SoftLine. К сожалению, подробностей я не знаю.


TanaT: Чем различаются DriverStudio и SoftICE Driver Suite?

Крис Плекайда: SoftICE Driver Suite включает в себя также DriverWorks, DriverNetworks, SoftICE и Visual SoftICE. DriverStudio состоит из тех же продуктов, что и SoftICE Driver Suite, плюс BoundsChecker Driver Edition, TrueTime Driver Edition и TrueCoverage Driver Edition.


TanaT: У SoftICE есть демо- или триал-версии?

Крис Плекайда: К сожалению, нет. Ни тех, ни других.


TanaT: SoftICE - довольно дорогой инструмент. Его стоимость можно сравнить с ценой на Microsoft Visual Studio. Чем объясняется такая высокая цена?

Крис Плекайда: Вы получаете то, за что платите. Это того стоит.


TanaT: Какие системные требования у SoftICE? Какие ОС он поддерживает?

Крис Плекайда: Одна из истин, которую мы осознали, состоит в том, что некоторые операционные системы, по сравнению с другими, являются более удобными платформами для разработки тех или иных приложений. В наш CD входят последние версии SoftICE для DOS, Windows 3.1, Windows 9x (95,98,ME) и NT вариантов (NT4, Win2k, XP, 2003 server). Больше никаких системных требований нет.


TanaT: Любопытный вопрос: а почему нет UNIX-версии SoftICE?

Крис Плекайда: Если я скажу, что мы не хотим создать версию SoftICE для Unix/Linux, то солгу. Вообще, если быть откровенным до конца, то мы не видим никаких коммерческих перспектив для этого. Хотя вокруг Linux все время стоит шум, мы постоянно просматриваем аналитические сводки и технические отчеты: нет никаких признаков того, что в этом сегменте рынка можно делать бизнес. А между тем, разработка такого продукта была бы не дешевым удовольствием. Хотя в последнее время мы заметили, что число инструментов для разработки под Linux необычайно возросло. Поэтому мы начеку.
Вторая причина - техническая. SoftICE работает необычайно близко к аппаратному обеспечению, он просто не может полагаться на сервисы операционной системы и ее возможности. Для того, чтобы обеспечить взаимодействие с устройствами, мы пишем собственное ПО, полагаясь на спецификацию этого устройства. Примерно то же самое и с операционной системой. Нам требуются максимально глубокие знания о внутренностях ОС. С Windows у нас нет исходных текстов, поэтому почти всю информацию приходится добывать с помощью обратной инженерии. То есть у нас есть знания и об аппаратном обеспечении и о системе. Все это легче сделать для Windows, так как мы знаем многое об устройствах x86 и операционная система имеет один исходный код. Проблема же в Linux и Unix такова, что там везде разные ядра и каждый раз новые релизы. Unix к тому же работает не только на компьютерах на основе x86.


TanaT: SoftICE использует какие-нибудь недокументированные функции или возможности ОС или аппаратного обеспечения?

Крис Плекайда: Нет, вовсе нет.


TanaT: Как вы думаете, а почему еще нет мощного отладчика под UNIX?

Крис Плекайда: Честно говоря, ответ на этот вопрос сильно зависит от того, у кого вы спрашиваете. Что касается меня, Криса, то, по-моему, люди просто еще не научились делать деньги, создавая такие продукты. Для многих разработчиков и профессиональных программистов гораздо легче использовать то, что уже представлено на рынке, чем писать свой собственный отладчик.


TanaT: Driver Studio 2.7 имела какие-нибудь проблемы с дозвоном или ожиданием звонка на хост-машине (с использованием SIREMOTE.EXE)?

Крис Плекайда: Если у вас возникла такая проблема, обратитесь в нашу службу поддержки. Код для удаленной работы в предыдущих версиях, ниже 2.5, содержал довольно много багов. Но с версии 2.5 я лично потратил огромное количество времени, чтобы отловить и исправить каждый баг. Честно говоря, я не знаю случаев, чтобы у пользователей версии 2.7 возникали какие-то проблемы с дозвоном и соединением. До версии 2.7 об этом можно было говорить, но сейчас…
Моя личная рекомендация - обновить свое ПО до последней версии DriverStudio, то есть до 3.0. Также следует убедиться в том, что удаленная машина настроена должным образом. Для этого проверьте настройки на странице "Serial Debugging".



Вот так выглядит SoftICE


TanaT: SoftICE подходит для отладки многопоточного кода?

Крис Плекайда: Да, никаких проблем. Мы специально для этого все окна сделали "потоко-зависимыми", то есть содержимое каждого окна зависит от отлаживаемого потока. Например, если вы откроете окна для отображения стека, кода, локальных переменных и потоков, а затем щелкните на другом потоке, все открытые окна автоматически обновятся, они будут показывать информацию о вновь выбранном потоке. Наш отладчик также поддерживает команды, которые показывают семафорные объекты. Это облегчает отладку многопоточного кода.


TanaT: Что было улучшено в последней версии SoftICE?

Крис Плекайда: Мы представили новый продукт линейки SoftICE. Он называется Visual SoftICE. Новинка представляет собой двухмашинный отладчик с графическим интерфейсом пользователя. Этот продукт является совершенно новым, он был спроектирован для того, чтобы мы могли быстрее адаптироваться к новому аппаратному обеспечению и новым операционным системам. Например, недавно мы добавили в Visual SoftICE поддержку семейства процессоров AMD 64. Для этого мы обошлись простым переносом кода. Так сказать, малой кровью. Есть еще несколько заметных нововведений, разработку которых мы еще не закончили. Они войдут в следующий основной релиз. К сожалению, я не могу раскрыть подробностей кроме того, что SoftICE приобретет совершенно новый свежий вид.


TanaT: Что значит "двухмашинный отладчик"?

Крис Плекайда: Visual SoftICE построен на архитектуре "главный-подчиненный". На главной машине используется графический интерфейс пользователя, а на подчиненной низкоуровневый код отладчика и средства для взаимодействия с главной машиной.


TanaT: Довольно интересно. Вы говорите, что Visual SoftICE обладает графическим интерфейсом пользователя. Но разве в обычном SoftICE его нет?

Крис Плекайда: Интерфейс SoftICE можно назвать текстовым GUI. Visual SoftICE имеет Windows GUI, в котором реализованы все нормальные возможности Windows-приложений.



Собственно, вы и сами может полюбоваться новым GUI в Visual SoftICE


TanaT: Когда появилась последняя, 3.0, версия и когда стоит ждать следующей?

Крис Плекайда: DriverStudio 3.0 и SoftICE Driver Suite 3.0 уже доступны с 17 июня 2003 года. Следующий релиз планируется на конец 2003 года или начало 2004.


TanaT: SoftICE - самый мощный инструмент для исследования чужого кода. Он чрезвычайно эффективен для хакеров и крэкеров. Можете прокомментировать этот аспект использования SoftICE?

Крис Плекайда: На этот вопрос очень сложно ответить по нескольким причинам. Хотя мы и понимаем, что некоторые личности находят такое применение нашему продукту, мы просто не в силах этому воспрепятствовать. Мы можем лишить SoftICE части его функциональности и ограничить возможности, но тем самым мы навредим своим легальным клиентам, которые просто нуждаются во всей мощи отладчика. Пиратство - это явление, которое наносит удар по разработчикам программного обеспечения. Для того, чтобы разработать такой продукт, как SoftICE (и любой другой, в принципе), требуются большие капиталовложения. А когда все вокруг кишмя кишит пиратскими версиями вашей программы - очень сложно не вылететь из бизнеса. То есть я хочу сказать вот что: вы можете получать удовольствие, копаясь в чужом коде и взламывая его, но затем, пожалуйста, пойдите и купите легальную версию этого продукта. Если хакер заплатит немного денег, это в итоге выльется в хороший доход для разработчика shareware-программ.


TanaT: Как вы видите будущее SoftICE? Он будет выходить на новые рынки?

Крис Плекайда: Как я уже говорил раньше, будущее SoftICE уже здесь - это новый Visual SoftICE. Что же до самого SoftICE, то пока существуют разработчики драйверов и программисты, SoftICE будет смело смотреть в будущее.


TanaT: Хотите сказать нашим читателям что-нибудь напоследок?

Крис Плекайда: SoftICE - это продукт, развитием которого управляют его пользователи. Поэтому если у вас возникли какие вопросы, пожелания, просьбы или идеи, пожалуйста, обращайтесь напрямую к нам. Нам также интересно знать, что вам нравится, а что не нравится в нашем продукте. Чтобы обеспечить прямую связь с пользователями, мы создали электронный ящик, ведущий прямо ко мне и другим разработчикам, набивших на SoftICE руки. Вы можете связаться с нами по адресу: driverstudioeng@compuware.com. Мы читаем абсолютно все сообщения, приходящие на этот адрес. Правда, не стоит использовать этот адрес, чтобы получить решение какой-то своей проблемы - для этого существует служба поддержки.


TanaT: Большое спасибо за столь интересное интервью. Не каждый день удается поговорить с человеком, частичка труда которого находится в обсуждаемом продукте. Успехов вам и вашему отладчику!