- •Системное программирование на макроассемблере masm32
- •«Системное программирование» (часть 1)
- •Вступление
- •1Организация среды исполнения для масм
- •1.1Цель работы
- •1.2 Теоретические сведения
- •If errorlevel 0 команда2
- •If errorlevel 0 goto метка
- •1.3Выполнение работы
- •1.4Состав отчета по работе
- •1.5Контрольные вопросы
- •2.2.2Состав пакета масм
- •2.2.3Центр масм – редактор Quick Editor
- •2.3Выполнение работы
- •2.4Состав отчета по работе
- •2.5Контрольные вопросы
- •3Высокоуровневый интерфейс языка масм
- •3.1Цель работы
- •3.2 Теоретические сведения
- •3.2.1Процедуры и макросы в ассемблере
- •3.2.2Синтаксис высокого уровня масм
- •3.2.3Макрос invoke
- •3.3Выполнение работы
- •4.2.2Потоки вывода и ввода
- •4.2.3Вывод и ввод в консольных приложениях
- •4.3Выполнение работы
- •4.4Состав отчета по работе
- •4.5Контрольные вопросы
- •5Ввод и вывод в ассемблерных приложениях с графическим интерфейсом
- •5.1Цель работы
- •5.2Теоретические сведения
- •5.3Выполнение работы
- •6.3.1Фрейм кода (области 1-5)
- •6.3.2Фрейм дампа памяти (области 9,10 и 11)
- •6.3.3Фрейм регистров процессора (области 6, 7 и 8)
- •6.3.4Фрейм стека (области 12, 13 и 14)
- •6.4Выполнение работы
- •6.5Состав отчета по работе
- •6.6Контрольные вопросы
- •Приложение а Префиксы «венгерской» нотации типов данных WinApi
- •Рекомендованная литература
5.3Выполнение работы
Изучить примеры программ с GUI, в которых производится ввод и вывод информации по списку, приведенному ниже. Для каждой программы проделать следующее:
Открыть ехе-файл и испытать работу всех кнопок и полей ввода;
Сделать скриншот главного окна программы для отчета.
Кратко словами описать, для чего предназначена программа и в чем особенности ее работы.
Список примеров, которые вы должны рассмотреть обязательно:
- examples\dialogs\test;
- examples\dialogs\pbddemo;
- examples\dialogs\nested;
- examples\dialogs_later\check;
- examples\dialogs_later\radio.
Просматривая папки с этими примерами, зафиксируйте для отчета, какие повторяющиеся типы файлов вы находите в этих папках. Сформулируйте для отчета обобщение о назначении этих файлов.
Можете просмотреть и другие примеры без занесения в отчет, просто для ознакомления.
Откройте пример examples\dialogs_later\gettext.
Проделайте с ним ту же работу, что и с примерами из п. а).
Скопируйте asm-файл этого примера в свою рабочую папку, чтобы при последующем редактировании не портить исходник примера.
Составьте таблицу вызовов процедур и макросов для gettext.asm до уровня процедур из MSDN. Как это делать, описано в теоретических сведениях.
Подробно (пооператорно) прокомментируйте копию исходника gettext.asm, которую вы в п. 2) скпировали в свою рабочую папку.
Сделать вывод по работе, в котором описать на основании проделанной здесь работы, что, по-вашему, должно быть сделано в GUI-программе для ввода в программу текстовой строки с клавиатуры и вывода текстовой строки на экран.
5.4Состав отчета по работе
Название и номер работы, фамилия и группа студента.
Цель работы.
Протокол выполнения работы с текстами ответов на все вопросы в заданиях пункта «Выполнение работы».
Ответы на контрольные вопросы.
Личная подпись автора отчета.
5.5Контрольные вопросы
Что означает понятие «GUI»?
Зачем бывает нужен файл manifest.xml?
В OS Windows кто исполняет вызовы процедур, описанных в MSDN?
6ВЫПОЛНЕНИЕ АССЕМБЛЕРНЫХ ПРОГРАММ ПОД ОТЛАДЧИКОМ OLLYDBG
6.1Цель работы
Изучить основные возможности дизассемблера-отладчика OllyDbg, ознакомиться с простейшими приемами отладки готового exe-модуля средствами OllyDbg.
6.2Необходимое программное обеспечение
Кроме пакета MASM32 для выполнения данной лабораторной работы понадобится отладчик OllyDbg стабильной версии 1.1 с установленным плагином CommandBar.
6.3Теоретические сведения
Договоримся о сокращениях в приводимом ниже тексте. Щелчок левой кнопкой мыши будем обозначать ЛКМ, двойной щелчок левой кнопкой мыши – 2КМ, щелчок правой кнопкой мыши – ПКМ.
OllyDbg – достаточно хороший отладчик уровня пользователя, т.е. он ориентирован на программы, выполняемые в ОС Windows в «кольце защиты уровня 3». Как известно из документации по процессорам с Intel-архитектурой, в защищенном режиме для программ разного назначения установлены разные уровни приоритетов, почему-то названных «кольца защиты». Всего их четыре, с номерами от 0 (наивысший приоритет) до 3 (самый низкий приоритет). Уровень 0 выделен для процессов ядра ОС, уровни 1 и 2 – для драйверов устройств и приложений, а уровень 3 – пользовательский.
Практически это означает, что при работе с OllyDbg отладить, предположим, драйвер, работающий в кольце 0, невозможно, но в практической работе это отнюдь не умаляет его полезности и удобства. К его достоинствам можно отнести простоту использования, наличие в сети достаточно большого количества плагинов и отличную функциональность. В 2012 году стабильной версией OllyDbg была версия 1.1, в которую нормально устанавливались и успешно работали все необходимые плагины, в частности, CommandBar, который обеспечивает интерфейс командной строки внутри отладчика, что весьма удобно. В его отсутствие все отладочные действия приходится выполнять с помощью меню и мыши, что часто и дольше, и менее наглядно.
Итак, рассмотрим наш отладчик более детально. При его запуске перед нами появляется рабочее окно, в котором мы в дальнейшем сможем наблюдать и анализировать работу интересующего нас вычислительного процесса (что, в общем, и составляет суть понятия «отладка»). Исследуемый процесс может быть выбран как в виде исполняемого файла формата PE (ОС Windows) (команда меню File – Open, либо F3), так и в виде уже запущенного процесса (File - Attach). В последнем случае следует отметить, что при завершении работы с отлаживаемым процессом закрытие отладчика закрывает и сам этот процесс. Поэтому следует быть осмотрительным при отладке программ типа Csrss.EXE, Winlogon.EXE или Explorer.EXE, имеющих отношение к функционированию операционной системы.
Внешне отладчик с запущенным под ним процессом выглядит как на рис. 6.1.
Рисунок 6.1 – Интерфейс запущенного отладчика OllyDbg с открытой в нем программой hello.exe.
На рис. 6.1 пронумерованы и названы все рабочие области отладчика. Дополнительно поясним, что области 1, 2, 3, 4 и 5 в совокупности образуют фрейм (окно) кода, области 6, 7 и 8 – фрейм регистров и флагов, области 9, 10 и 11 – фрейм дампа памяти, а области 12, 13 и 14 – это фрейм стека. О каждом из этих фреймов ниже рассказывается подробнее.