Сложная модульная структура Технологическое разнообразие Native и Managed модули Mixed code Особенности современного ПО.

Презентация:



Advertisements
Похожие презентации
Введение в исследование программ Автор: Ханов А.Р. СПбГУ, 2012.
Advertisements

Разработка программного обеспечения для сигнальных процессоров TMS320C64xx в IDE Code Composer Studio Часть I. Основные возможности среды разработки CCS.
1 Умение мыслить объектно (проектирование архитектуры) Культура кодирования Знание языка и технологий Знание языка и технологий Понимание процесса Задача.
ПРЕЗЕНТАЦИЯ НА ТЕМУ: ПРЕЗЕНТАЦИЯ НА ТЕМУ: ВИДЫ ТРАНСЛЯЦИИ Составил: Ревнивцев М.В Преподаватель: Кленина В.И.
Основы современных операционных систем Лекция 7. (C) В.О. Сафонов,
Архитектура операционных систем. Архитектура ОС Состав модулей (компонент) ОС Структура связей между отдельными модулями ОС Принципы взаимодействия модулей.
Архитектура операционных систем Семестр 2, Лекция 1.
1. Описание профессии 2. Виды деятельности 3. Места работы 4. Профессиональные навыки 5. Дополнительные особенности.
Исследование кодов программ Макаренков Д.Е. Лекция по дисциплине «Компьютерная разведка»
операционные системы операционные оболочки – интерфейсные системы, драйверы (программы, управляющие работой внешних устройств) утилиты (служебные программы)
Презентация "Профессия программист"
- - Реальный режим работы (Real mode) – это режим в котором работал базовый 16-и разрядный МП i8086. Это однозадачный режим, который реализовывался операционной.
СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ. Системное программное обеспечение - это комплекс программ, которые обеспечивают эффективное управление компонентами.
Объектно-ориентированное программирование Карпов В.Э. Смолток. Лекция 4. Байт-код.
Microsoft Visual Studio 2008 Первый запуск. Исходный код Компилятор Объектный код Компоновщик Исполняемый код Код начальной загрузки Библиотечный код.
Работу выполнил : Ученик 9 в класса Удашев Иван МБОУ « СОШ 7» г. Нижнекамска РТ.
Архитектура операционной системы. Ядро и вспомогательные модули операционной системы При функциональной декомпозиции ОС модули разделяются на две группы:
Software Cloud Services Аудит безопасности кода Докладчик: Денис Гундорин Дата: 10 ноября 2011 г. г. Москва.
Microsoft.NET Первая лекция. COM Доступ к компонентам только через интерфейсы Назначение уникальных идентификаторов компонентам и интерфейсам Регистрация.
ТЕСТИРОВАНИЕ МЕТОД «ЧЕРНОГО ЯЩИКА» ВЫПОЛНИЛ СТУДЕНТ ГР. ИВТ-51 з БАННИКОВА Н.Р.
Транксрипт:

Сложная модульная структура Технологическое разнообразие Native и Managed модули Mixed code Особенности современного ПО

Внедрение Managed кода в современные ОС Microsoft Windows:.NET Framework Java Linux Java Mono Мобильные платформы Java.NET Framework Mono

Важность анализа ПО без исходного кода Доступ к исходным кодам часто ограничен Влияние настроек и особенностей компилятора на фактически исполняемый на процессоре код

Средства реверс-инжиниринга Hex Rays IDA Pro (Managed и Native) Red Gate.NET Reflector (Managed) JetBrains dotPeek (Managed) WinDBG Многое другое

Современные подходы к анализу ПО Метод белого ящика Метод черного ящика Метод серого ящика

Классический подход к анализу ПО методом серого ящика. Дизассемблеры. Дизассемблеры Hex Rays IDA Pro – Managed и Native код dumpbin (Microsoft Windows SDK) – Native код Ildasm – Native код Другие

Декомпиляторы Red Gate.NET Reflector – Managed код JetBrains dotPeek – Managed код Другие Полная декомпиляция Native кода в высокоуровневый программный код на данный момент не реализована. Имеются лишь механизмы частичного восстановления структуры алгоритмов. Классический подход к анализу ПО методом серого ящика. Декомпиляторы.

WinDBG – Managed и Native OllyDBG - Native Другие WinDBG с применением расширения SOS. Отладка производится в режиме ассемблера..NET Reflector предоставляет возможность отладки в Visual Studio. Классический подход к анализу ПО методом серого ящика. Отладчики.

SusinternalsSuite Procexp Procmon Portmon Другие Классический подход к анализу ПО методом серого ящика. Средства мониторинга.

Пример дизассемблированного Native кода

Пример дизассемблированного Manged кода

Пример декомпилированного Managed кода

Сравнение Дизассемблированные листинги в общем случае менее удобны для анализа Дизассемблированные листинги дают большую полноту понимания процесса выполнения ПО

Mixed код! Дизассемблирование.

Современное ПО Native модули Managed модули Mixed код

Некоторые особенности Managed кода Генерируемый JIT-компилятором код так же является динамически создаваемым объектом и располагается в куче.

Страницы памяти Managed кучи имеют RWX атрибуты

В режиме Run-Time код и данные могут размещаться по адресам, выбранным JIT компилятором Код CIL функции можно обнаружить по базовому адресу загрузки модуля + смещение функции

IL код функции main в Ida Pro (сверху) и снятый с дампа в WinDBG (внизу)

Заключение Современное ПО: Native код Managed код Mixed код (компилятор Microsoft Visual C++) #include #pragma managed #pragma unmanaged

Заключение JIT компилятор выбирает адреса размещения компилированных функций самостоятельно Управляемая куча имеет атрибуты RWX IL код модуля можно найти по базовому адресу загрузки + смещение функции

Заключение Различия в интерпретации результатов работы дизассемблеров и декомпиляторов Смешивание Native и Managed модулей в рамках даже одного проекта Mixed код в некоторых модулях Важно развитие средств анализа программного обеспечения, способных обрабатывать не только Native или Managed, но и Mixed сборки. Результаты интерпретации должны иметь гомогенную структуру.