Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #51, ФЕВРАЛЬ 2005 г.

Профессии эмуляторов

Крис Касперски ака мыщъх

Спецвыпуск: Хакер, номер #051, стр. 051-060-2


Общение виртуальной машины с основной операционной системой и другими виртуальными машинами обычно осуществляется через локальную сеть. Виртуальную, разумеется. При наличии 512–1024 Мб памяти можно создать настоящий корпоративный интранет – с SQL и web-серверами, DMZ-зоной, брандмауэром и несколькими рабочими станциями, свободно умещающимися внутри домашнего компьютера. Лучшего полигона для обучения сетевым премудростям и не придумаешь. Хочешь – атакуй, хочешь – администрируй.

Разработчикам

Больше всего эмуляторы любят разработчики драйверов. Ядро не прощает ошибок и жестоко разрушает жесткий диск, уничтожая все данные, накопленные за многие годы. Перезагрузки и зависания – вообще обычное дело, к которому привыкаешь, как к стуку колес или шороху шин. К тому же большинство отладчиков ядерного уровня требует наличия двух компьютеров, соединенных COM-шнурком или локальной сетью. Для профессионального разработчика это не роскошь, но… куда их ставить? Окружишь себя мониторами, а потом как дурак крутишь во все стороны головой – отвались моя шея!

С эмулятором все намного проще. Ни тебе потери данных, ни перезагрузок, а всю работу по отладке можно выполнять на одном компьютере. Естественно, совсем уж без перезагрузок дело не обходится, но пока перезагружается виртуальная машина, можно делать что-то полезное на основной (например, править исходный код драйвера). К тому же можно заставить эмулятор писать команды в лог и потом подсмотреть, что довело драйвер до смерти (правда, не все эмуляторы это умеют).

В GENETIC-ядре FreeBSD отладчика нет, а отладочное ядро вносит в систему побочные эффекты. Windows-отладчики ведут себя похожим образом и окончательное тестирование драйвера должно проходить в "безлошадной" конфигурации, начисто лишая разработчика всех средств отладки и мониторинга.

А что прикладные программисты? Эмуляторы позволяют держать им под рукой всю линейку операционных систем, подстраивая свои программы под особенности поведения каждой из них. У Windows всего две системы – NT плюс 9x, да и то у них голова кругом идет, а *nix-системы намного более разнообразны!

Все коварство багов в том, что они имеют склонность появляться только в строго определенных конфигурациях. Установка дополнительного программного обеспечения, а уж тем более перекомпиляция ядра может их спугнуть, и тогда ищи-свищи. А это значит, что до тех пор пока баг не будет найден, ничего менять в системе нельзя. На основной машине выполнить это требование затруднительно, зато легко на эмуляторе! Виртуальная машина, отключенная от сети (в том числе и виртуальной), в заплатах не нуждается. Но как же тогда обмениваться данными? К твоим услугам – дискета и CD-R.

Самое главное – эмуляторы позволяют создавать "слепки" состояния системы и возвращаться к ним в любое время неограниченное количество раз. Это значительно упрощает задачу воспроизведения сбоя (то есть определения обстоятельств его возникновения). Чем такой слепок отличается от дампа памяти, сбрасываемого системой при сбое? Как и следует из его названия, дамп включает в себя только память, а "слепок" - все компоненты системы целиком (диск, память, регистры контроллеров и т.д.).

Назад на стр. 051-060-1  Содержание  Вперед на стр. 051-060-3