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

внутри сети

ДРОЗДОВ АНДРЕЙ AKA SULVERUS

Спецвыпуск: Хакер, номер #072, стр. 072-044-1


OFFBIT SECURITY TEAM(SULVERUS@MAIL.RU)

АРХИТЕКТУРА СИСТЕМЫ ВЫПОЛНЕНИЯ ПРОГРАММ В WINDOWS VISTA

УЖЕ ОЧЕНЬ СКОРО НАСУПИТ ЯНВАРЬ, А ЭТО ЗНАЧИТ, ЧТО WINDOWS VISTA ВЫЙДЕТ В МАССЫ. МНОГИЕ ХАКЕРЫ УЖЕ ВЗЯЛИ НА ВООРУЖЕНИЕ ПЛАТФОРМУ .NET ДЛЯ РАЗРАБОТКИ ВИРУСОВ, АНТИВИРУСНЫЕ КОМПАНИИ ТОЖЕ ВСЯЧЕСКИ ИЗУЧАЮТ ДАННУЮ ПЛАТФОРМУ НА ПРЕДМЕТ КРИТИЧЕСКИХ УЯЗВИМОСТЕЙ, ДАБЫ ОБЕСПЕЧИТЬ БЕЗОПАСНОСТЬ ПОЛЬЗОВАТЕЛЯМ

Специалисты из Майкрософт постарались закрыть все лазейки для хакеров и предотвратить всевозможные атаки. Держа этот номер спеца в руках, ты, наверное, тоже жаждешь найти какую-то новую дырку в Windows Vist'e, однако нельзя найти брешь в системе, не имея понятия о том, как она работает. Поскольку система выполнения программ в .NET и Windows Vista напрямую связаны, понимание архитектуры .NET крайне важно.

Приступим к ее изучению.

[хорошо забытое старое.]

Попытки создать подобную систему предпринимались довольно давно: еще в 1978 году был некий проект, отдаленно напоминающий .NET. Его целью являлось создание некой виртуальной машины, позволяющей запускать приложения как на мощных компьютерах в Калифорнийском университете, так и на обычных компьютерах студентов. В основе этой системы лежал некий язык p-code, подобный Common Intermediate Language в современном .NET'e. Однако она была несовершенна из-за системы выполнения программ.

Далее, в начале 90-х появилась еще одна технология, подобная .NET. На этот раз она была более похожа на .NET своей системой выполнения программ. Благодаря этой технологии появлялась возможность запускать приложения на разных типах процессоров, то есть во время установки софта в систему происходила «доводка» программы к конкретной платформе. После выхода этой технологии компьютерная индустрия стала развиваться намного быстрее, и в 1995 году появилась широко известная технология Java.

Основным отличием системы выполнения java-программ является то, что они независимы от операционной системы пользователя и его аппаратной платформы.

[архитектура .NET.]

Главными составляющими платформы .NET являются система базовых классов Class Library и система выполнения программного кода - CLR(Common Language Runtime). Библиотека классов используется программистами при написании кода, разработки приложений. Удобство этой библиотеки в том, что она может использоваться в любых языках, поддерживаемых платформой .NET. В библиотеке классов есть некая основа, на которой все строится, в некоторых документах она называется ядром системы типов. Давай рассмотрим его подробнее.

[в недрах ядра.]

Устройство ядра довольно замысловатое. Все типы делятся на две группы данных, а именно: value types и reference types. Такое хитрое разделение обосновывается стремлением разработчиков платформы к оптимизации кода. Value types являются встроенными типами, они подобны ключевым словам в C++, например: int, bool, char, float. В .NET четко разделяются 32- и 64-битные типы, например, для целых чисел и для чисел с плавающей точкой типы называются int32,int64,float32,float64. Структуры тоже относятся к value types. Динамически созданные объекты хранятся в динамической (управляемой) памяти, она же managed heap. Ссылки на объекты хранятся в ячейках, к которым обращаются Reference types. В этом случае можно провести аналогию с Win32/C, когда глобальные переменные хранились в статической памяти, а локальные - в стеке.

Содержание  Вперед на стр. 072-044-2