Ассемблер для Windows

Структура исполняемых модулей

Отладка анализ кода программ драйверы
Структура исполняемых модулей
Структура ЕХЕпрограммы для MS DOS
Общая структура РЕмодуля
Общая структура РЕзаголовка
Фрагмент РЕзаголовка
Описание заголовка РЕ

Секция экспорта ( edata) Общая структура
Вызов импортируемой функции
Таблица директория импорта
Формат входа в каталог импорта



Локальная область данных цепочек (потоков)
Таблица разделов потоков
Секция ресурсов ( rdata)
Каталог ресурсов (Resource Directory Table)
Вход в таблицу ресурсов (Resource Entry Item)
Таблица настроек адресов
Структура элемента массива настроек
Отладочная информация ( debug$S debug$T)
Отладочный каталог
Глава Обзор отладчиков и дизассемблеров

EDITBIN EXE
DUMPBIN EXE
Часть дизассемблированиого
DUMPPE EXE
HIEW EXE
Внешний вид программы HIEW EXE
Дизассемблированный код программы на Рисунок
DEWIN EXE
IDA PRO

Пример дизассемблирования программы с помощью самого мощного дизассемблера IDA PRO (под Windows)
Часть программы содержащей данные дизассемблированная при помощи IDA PRO
Пример командного файла IDA PRO
Отладчик фирмы Borland
Запуск отлаживаемого приложения
Выполнить программу до строки где находится курсор
Выполнить единичную команду
Выполнение команды с переходом через процедуру
Выполнить процедуру
Выполнение с задержкой

Текст программы можно увидеть на экране
Если отладочную информацию в исполняемом модуле
Окно CPU отладчика Turbo Debugger
Окно слежения за переменными
Окно стека
Окно точек останова
Окно регистрации (Log)
Окно переменных
Окно файлов
Окно отображения памяти

Окно сопроцессора
Окно истории выполнения (Execution History)
Окно иерархии (Hierarchy)
Пример окна Turbo Debugger отображающего иерархию классов
Окно потоков
Окно сообщений
Окно буфера обмена
Поговорим теперь об отладке программ
Программа расположенная на Рисунок в окне отладчика
Пример простой консольной программы

Основной целью отладчика Turbo Debugger является отладка программы
Глава Описание работы с дизассемблером WDasm и отладчиком ICE
Программа WDasm
Начало работы
Внешний вид программы WDasm
Фрагмент дизассемблированного текста Передвижение по дизассемблированному тексту
Данные
Окно ссылок на строки
Импортированные и экспортированные функции
Ресурсы

Операции с текстом
Загрузка программ для отладки
Фрагмент списка импортированных модулей и функций
Первое информационное окно отладчика
Работа с динамическими библиотеками
Точки останова
Второе управляющее окно отладчика
Модификация кода данных и регистров
Окно модификации отлаживаемого кода
Поиск нужного места в программе

Окно модификации регистров и ячеек памяти Дополнительные возможности для работы с API
Отладчик SoftIce
Начальная установка
Загрузка программы для отладки
Вид загрузчика SoftIce (LOADER EXE) Окно настройки запуска модуля в отладчике Softice
Обзор команд отладчика
Основы анализа кода программ
Переменные и константы

Функция main консольного приложения
Окончательный вариант программы
Классические структуры языка Си
Условные конструкции
Оператор switch или оператор выбора
Циклы
Локальные переменные
Пример задания двух локальных массивов Взят из отладчика IDA PRO
Как выглядит фрагмент программы представленный на Рисунок в окне дизассемблера WDasm
Функции и процедуры

Оптимизация кода
Вот как выглядит ассемблерный код
Дизассемблированный текст программы (Рисунок ) Транслятор Borland C++
Скорость или объем
Оптимизация условных переходов
Оптимизация вызовов процедур
Объектное программирование
Программа на Си++ использующая объекты
Дизассемблированный код функции main с Рисунок Дизассемблер IDA PRO

Дизассемблированный код функции
Исправление исполняемых модулей
Allscreen программа
Окно появляющееся при запуске
Сообщение об истечении времени работы программы
Фрагмент кода осуществляющего в частности задержку
Фрагмент кода проверки количества запусков
Поиск процедуры окна
Будем искать функцию последнего
Начало функции окна

Структура и написание драйверов VXD
VxDдрайвер
Начнем с содержимого DEFфайла
Файл VXD DEF используемый для
Содержимое файла VXD MAP
Динамические виртуальные драйверы
Программа загружающая использующая и выгружающая динамический драйвер

Пример динамического драйвера
Структура содержащая значения
Содержание раздела