Ассемблер и дизассемблирование
Пирогов В.Ю.
Рассмотрены вопросы исследования кода Windows-приложений. Подробно описаны формат исполняемых модулей и структура инструкций микропроцессора Intel. Дан полный обзор инструментария по исследованию исполняемого кода: отладчики, дизассемблеры, редакторы ресурсов, HEX-редакторы и др. Большое внимание уделено работе с популярными программами по дизассемблированию и отладке SoftICE и IDA Pro
Приведены примеры исследования исполняемого кода и описаны основные принципы подобного исследования: идентификация программных структур, поиск данных и др. Прилагаемый компакт-диск содержит тексты всех листингов, описанных в книге, а также учебные программы.
СПб.: БХВ-Петербург, 2006.
ISBN 5-94157-677-3, 5-94157-677-7
Количество страниц: 464.
Содержание книги «Ассемблер и дизассемблирование»:
- 1 Введение
- 2 Для кого эта книга
- 3 Благодарности
- 5 Глава 1. Введение в дизассемблирование
- 5 1.1. Представление информации в памяти компьютера
- 5 1.1.1. Заглянем в память
- 7 1.1.2. Системы счисления
- 7 Десятичная система счисления
- 8 Двоичная система счисления
- 10 Шестнадцатеричная система счисления
- 11 1.1.3. Представление чисел в компьютере
- 11 Беззнаковые целые числа
- 13 Числа со знаком
- 15 Вещественные числа
- 17 Двоично-десятичные числа
- 18 1.2. Обзор команд и регистров микропроцессора Intel Pentium
- 18 1.2.1. Регистры микропроцессора Pentium
- 18 Регистры общего назначения
- 19 Регистр флагов
- 20 Сегментные регистры
- 20 Управляющие регистры
- 22 Системные адресные регистры
- 22 Регистры отладки
- 23 1.2.2. Основной набор команд
- 38 1.2.3. Команды математического сопроцессора
- 38 Функционирование и структура
- 41 Команды сопроцессора
- 48 1.2.4. Расширение MMX
- 48 Архитектура MMX
- 49 Инструкции MMX
- 52 Новые инструкции MMX
- 18 1.2.1. Регистры микропроцессора Pentium
- 54 1.3. Особенности программирования в операционной системе Windows
- 54 1.3.1. Общие положения
- 56 1.3.2. Консольные приложения
- 66 1.3.3. Оконные приложения
- 72 1.3.4. Приложения на основе диалоговых окон
- 78 1.4. Формат команд микропроцессора Intel
- 78 1.4.1. Общие соображения
- 81 1.4.2. Код команды
- 85 1.4.3. Байт MOD R/M
- 89 1.4.4. Байт SIB
- 91 1.4.5. Маленький пример ручного дизассемблирования
- 92 1.4.6. О некоторых проблемах дизассемблирования
- 95 1.4.7. О командах арифметического сопроцессора
- 97 1.5. Описание структуры исполняемого модуля (PE-модуль)
- 97 1.5.1. Общий подход
- 103 1.5.2. Заголовок PE
- 107 1.5.3. Секции
- 111 1.5.4. Таблица импорта
- 114 1.5.5. Таблица экспорта
- 116 1.5.6. Ресурсы
- 117 Первый уровень
- 118 Второй уровень
- 119 Третий уровень
- 119 Четвертый уровень
- 119 1.5.7. Об отладочной информации
- 119 Таблица символов
- 120 Отладочная информация
- 121 1.6. Об отладке и дизассемблировании программ, написанных на языке ассемблера
- 121 1.6.1. Примеры дизассемблирования
- 121 Пример поиска импортируемой функции
- 125 Некоторые сложности в распознавании исполняемого кода
- 130 "Тайные переходы" и тайны переходов
- 133 Использование отладочной информации
- 134 1.6.2. О динамическом изменении исполняемого кода
- 134 Исполнение кода в стеке
- 140 Используем функцию WriteProcessMemory
- 143 Используем функцию VirtualProtectEx
- 121 1.6.1. Примеры дизассемблирования
- 5 1.1. Представление информации в памяти компьютера
- 147 Глава 2. Инструментарий исследователя машинного кода
- 147 2.1. Краткий обзор инструментов
- 147 2.1.1. Дизассемблеры
- 147 Программа dumpbin.exe
- 150 Знаменитый дизассемблер IDA Pro
- 150 Дизассемблер W32Dasm
- 151 Специализированные дизассемблеры
- 152 2.1.2. Отладчики
- 152 Turbo Debugger
- 153 Debugging Tools for Windows
- 154 Отладчик OllyDbg
- 154 Мощный отладчик SoftICE
- 155 2.1.3. HEX-редакторы
- 155 WinHex
- 155 Hacker Viewer
- 158 Biew.exe
- 159 2.1.4. Другие утилиты
- 159 Исследователи ресурсов
- 160 Мониторы
- 147 2.1.1. Дизассемблеры
- 161 2.2. Дизассемблер и отладчик W32Dasm
- 161 2.2.1. Начало работы
- 161 Интерфейс и настройки программы
- 163 2.2.2. Работа с дизассемблируемым кодом
- 163 Перемещение по дизассемблированному тексту
- 164 Отображение данных
- 165 Вывод импортированных и экспортированных функций
- 165 Отображение ресурсов
- 166 Операции с текстом
- 166 2.2.3. Отладка программ
- 166 Загрузка программ для отладки
- 168 Работа с динамическими библиотеками
- 168 Точки останова
- 168 Модификация кода, данных и регистров
- 170 Дополнительные возможности для работы с API
- 170 Поиск нужного места в программе
- 161 2.2.1. Начало работы
- 171 2.3. Отладчик OllyDbg
- 171 2.3.1. Начало работы с отладчиком
- 171 Окна отладчика
- 173 Отладочное выполнение
- 175 2.3.2. Точки останова
- 175 Обычные точки останова
- 175 Условные точки останова
- 176 Условные точки останова с записью в журнал
- 176 Точка останова на сообщения Windows
- 178 Точка останова на функции импорта
- 178 Точка останова на область памяти
- 178 Точка останова в окне Memory
- 178 Аппаратные точки останова
- 179 2.3.3. Другие возможности
- 179 Окно наблюдения
- 179 Поиск информации
- 180 Исправление исполняемого модуля
- 171 2.3.1. Начало работы с отладчиком
- 180 2.4. Несколько примеров редактирования исполняемых модулей
- 181 2.4.1. Пример 1. Удаление нежелательного сообщения
- 181 Поиск в OllyDbg
- 183 Поиск в W32Dasm
- 184 Поиск в IDA Pro
- 184 2.4.2. Пример 2. Снятие ограничений на использование программы
- 186 Процедура задержки
- 187 Снятие ограничения на количество запусков программы
- 189 2.4.3. Пример 3. Разбираемся с «Evaluation Copy»
- 189 Общие соображения
- 190 Поиски в отладчике
- 191 2.4.4. Пример 4. Снятие защиты
- 191 Стадия 1. Попытка зарегистрироваться
- 193 Стадия 2. Избавляемся от надоедливого окна
- 195 Стадия 3. Доводим регистрацию до логического конца
- 196 Стадия 4. Неожиданная развязка
- 181 2.4.1. Пример 1. Удаление нежелательного сообщения
- 147 2.1. Краткий обзор инструментов
- 199 Глава 3. Основные парадигмы анализа исполняемого кода
- 200 3.1. Идентификация данных
- 201 3.1.1. Глобальные переменные
- 201 Влияния оптимизации
- 205 Указатели на глобальные переменные
- 207 Глобальные переменные и константы
- 209 Размер, расположение и тип переменных
- 215 Сложные типы данных
- 229 3.1.2. Локальные переменные
- 229 Переменные, определенные в стеке
- 236 Временные переменные
- 242 Регистровые переменные
- 201 3.1.1. Глобальные переменные
- 244 3.2. Идентификация программных структур
- 244 3.2.1. Процедуры и функции
- 244 Передача параметров
- 250 Структуры стека
- 258 Идентификация процедур и функций (обобщение)
- 265 Переполнение буфера
- 274 3.2.2. Условные конструкции и операторы выбора
- 275 Простые конструкции
- 282 Вложенные конструкции и логические связки
- 286 Условные конструкции без переходов
- 287 Операторы выбора
- 290 3.2.3. Циклы
- 291 Простые циклы
- 295 Об оптимизации циклов
- 300 Вложенные циклы и циклы со сложными условиями выхода
- 304 3.2.4. Объекты
- 305 Идентификация объекта
- 311 Виртуальные функции
- 320 Конструктор и деструктор
- 325 3.2.5. Еще об исследовании исполняемого кода
- 325 О математических вычислениях
- 327 Другие конструкции
- 244 3.2.1. Процедуры и функции
- 200 3.1. Идентификация данных
- 335 Глава 4. Отладчик SoftICE
- 336 4.1. Основы работы с SoftICE
- 336 4.1.1. Запуск и интерфейс
- 336 Главное окно SoftICE
- 339 Режимы работы отладчика
- 339 4.1.2. Загрузчик (Loader)
- 339 Загрузка исполняемого модуля
- 340 Параметры загрузки
- 342 4.1.3. Некоторые приемы работы с SoftICE
- 342 Начало работы. Процессы
- 343 Точки останова
- 347 Поиск процедуры окна
- 347 Если приложение содержит отладочную информацию
- 336 4.1.1. Запуск и интерфейс
- 348 4.2. Краткий справочник по SoftICE
- 348 4.2.1. Горячие клавиши
- 348 Управление экраном
- 349 Перемещение внутри главного окна
- 349 Перемещение содержимого окон
- 350 Управление командным окном
- 350 Функциональные клавиши
- 351 4.2.2. Команды SoftICE
- 351 Макрокоманды отладчика SoftICE
- 353 Команды управления окнами SoftICE
- 355 Получение и изменения информации в окнах
- 359 Команды управления точками останова
- 363 Команды трассировки
- 364 Основные информационные команды
- 369 Другие команды
- 370 Операторы
- 371 Встроенные функции SoftICE
- 348 4.2.1. Горячие клавиши
- 336 4.1. Основы работы с SoftICE
- 375 Глава 5. Дизассемблер IDA Pro
- 376 5.1. Введение в IDA Pro
- 376 5.1.1. Начало работы
- 376 Общие сведения о виртуальной памяти
- 377 Интерфейс программы
- 390 Ключи запуска программы
- 391 5.1.2. Простые примеры исследования кода
- 391 О возможностях IDA Pro
- 399 Отладка в среде IDA Pro
- 376 5.1.1. Начало работы
- 401 5.2. Встроенный язык IDA Pro
- 402 5.2.1. О встроенном языке IDA Pro
- 402 Общие сведения
- 403 Структура программы и синтаксис языка IDC
- 407 5.2.2. Встроенные функции и примеры программирования на языке IDC
- 407 Доступ к виртуальной памяти
- 411 Структура строки листинга
- 419 Работа с функциями
- 421 Элементы интерфейса с пользователем
- 422 Другие возможности программного анализа листинга в IDA Pro
- 402 5.2.1. О встроенном языке IDA Pro
- 376 5.1. Введение в IDA Pro
- 425 Приложения
- 427 Приложение 1
- 440 Приложение 2. Описание компакт-диска
- 441 Литература
- 442 Предметный указатель
Инструкция как скачать книгу Пирогов В.Ю.: Ассемблер и дизассемблирование в форматах DjVu, PDF, DOC или fb2 совершенно бесплатно.
Рейтинг книги:
0 голосов
9