Информация о книге

978-5-9775-0082-1

Главная  » Научно-техническая литература » Информационные технологии. Компьютеры » Управление и проектирование информационных систем » Информационная безопасность » Искусство дизассемблирования (+ CD-ROM)

Касперски К., Рокко Е., Искусство дизассемблирования (+ CD-ROM)


серия: В подлиннике
БХВ-Петербург, 2008 г., 896 стр., 978-5-9775-0082-1 , 240*175*40 мм., тираж: 2000


Описание книги

Книга посвящена вопросам и методам дизассемблирования, знание которых позволит эффективно защитить свои программы и создать более оптимизированные программные коды. Объяснены способы идентификации конструкций языков высокого уровня таких, как C/C++ и Pascal, показаны различные подходы к реконструкции алгоритмов. Приводится обзор популярных хакерских инструментов для Windows, Unix и Linux - отладчиков, дизассемблеров, шестнадцатеричных редакторов, API- и RPC-шпионов, эмуляторов. Рассматривается исследование дампов памяти, защитных механизмов, вредоносного программного кода- вирусов и деплоитов. Уделено внимание противодействию антиотладочным приемам. К книге прилагается компакт-диск с полноцветными иллюстрациями и кодами рассматриваемых примеров.

Скачать, но не бесплатно эту книгу можно в интернет-магазинах

  Литрес - 423 руб.

Читать онлайн


Доступен для чтения фрагмент книги

Ключевые слова

Поделиться ссылкой на книгу



Содержание книги

Введение
ЧАСТЬ I. ОБЗОР ХАКЕРСКИХ ПРОГРАММ
Глава 1. Инструментарий хакера
Отладчики
Дизассемблеры
Декомпиляторы
Шестнадцатеричные редакторы
Распаковщики
Дамперы
Редакторы ресурсов
Шпионы
Мониторы
Модификаторы
Копировщики защищенных дисков
Глава 2. Эмулирующие отладчики и эмуляторы
Вводная информация об эмуляторах
Исторический обзор
Области применения эмуляторов
Аппаратная виртуализация
Обзор популярных эмуляторов
DOSBox
Bochs и QEMU
VMware
Microsoft Virtual PC
Xen
Ближайшие конкуренты
Выбор подходящего эмулятора
Защищенность
Расширяемость
Доступность исходных текстов
Качество эмуляции
Встроенный отладчик
Сводная таблица характеристик эмуляторов
Глава 3. Хакерский инструментарий для UNIX и
Linux
Отладчики
Дизассемблеры
Шпионы
Шестнадцатеричные редакторы
Дамперы
Скрытый потенциал ручных сборок
Философская подготовка
Пошаговая инструкция
Приступаем к сборке
Инсталляция
Заключение
Глава 4. Ассемблеры
Философия ассемблера
Объяснение ассемблера на примерах C
Ассемблерные вставки как тестовый стенд
Необходимый инструментарий
Сравнение ассемблерных трансляторов
Основополагающие критерии
MASM
TASM
FASM
NASM
YASM
Программирование на ассемблере для UNIX и Linux
Заключение
Ссылки на упомянутые продукты
ЧАСТЬ II. БАЗОВЫЕ ТЕХНИКИ ХАКЕРСТВА
Глава 5. Введение в защитные механизмы
Классификация защит по роду секретного ключа
Надежность защиты
Недостатки готовых "коробочных" решений
Распространенные ошибки реализации защитных
механизмов
Защита от несанкционированного копирования и
распространения серийных номеров
Защита испытательным сроком и ее слабые места
Реконструкция алгоритма
Общие рекомендации
Защита от модификации на диске и в памяти
Противодействие дизассемблеру
Антиотладочные приемы
Антимониторы
Противодействие дамперам
Мелкие промахи, ведущие к серьезным
последствиям
Глава 6. Разминка
Создаем защиту и пытаемся ее взломать
Знакомство с дизассемблером
Пакетные дизассемблеры и интерактивные
дизассемблеры
Использование пакетных дизассемблеров
От EXE до CRK
Практический пример взлома
Подавление NAG-screen
Принудительная регистрация
Чистый взлом или укрощение окна About
Заключение
Глава 7. Знакомство с отладкой
Введение в отладку
Дизассемблер и отладчик в одной упряжке
Точки останова на функции API
Точки останова на сообщения
Точки останова на данные
Раскрутка стека
Отладка DLL
Заключение
Глава 8. Особенности отладки в UNIX и Linux
Ptrace - фундамент для GDB
Библиотека Ptrace и ее команды
Поддержка многопоточности в GDB
Краткое руководство по GDB
Трассировка системных вызовов
Отладка двоичных файлов в GDB
Подготовка к отладке
Приступаем к трассировке
Погружение в технику и философию GDB
Заключение
Глава 9. Особенности термоядерной отладки с
Linice
Системные требования
Компиляция и конфигурирование Linice
Загрузка системы и запуск отладчика
Основы работы с Linice
Заключение
Глава 10. Расширенное обсуждение вопросов
отладки
Использование SoftICE в качестве логгера
Легкая разминка
Более сложные фильтры
Анимированная трассировка в SoftICE
Отладчик WinDbg как API- и RPC-шпион
Первое знакомство с WinDbg
Техника API-шпионажа
Техника RPC-шпионажа
Хакерские трюки с произвольными точками
останова
Секреты пошаговой трассировки
Взлом через покрытие
Руководящая идея
Выбор инструментария
Алгоритмы определения покрытия
Выбор подхода
Пример взлома
Заключение
ЧАСТЬ III. ИДЕНТИФИКАЦИЯ КЛЮЧЕВЫХ СТРУКТУР
ЯЗЫКОВ ВЫСОКОГО УРОВНЯ
Глава 11. Идентификация функций
Методы распознавания функций
Перекрестные ссылки
Автоматическая идентификация функций
посредством IDA Pro
Пролог
Эпилог
"Голые" (naked) функции
Идентификация встраиваемых (inline) функций
Модели памяти и 16-разрядные компиляторы
Глава 12. Идентификация стартовых функций
Идентификация функции WinMain
Идентификация функции DllMain
Идентификация функции main консольных
Windows-приложений
Глава 13. Идентификация виртуальных функций
Идентификация чистой виртуальной функции
Совместное использование виртуальной таблицы
несколькими экземплярами объекта
Копии виртуальных таблиц
Связный список
Вызов через шлюз
Сложный пример, когда невиртуальные функции
попадают в виртуальные таблицы
Cтатическое связывание
Идентификация производных функций
Идентификация виртуальных таблиц
Глава 14. Идентификация конструктора и
деструктора
Объекты в автоматической памяти - ситуация,
когда конструктор/деструктор идентифицировать
невозможно
Идентификация конструктора/деструктора в
глобальных объектах
Виртуальный деструктор
Виртуальный конструктор
Конструктор раз, конструктор два…
Пустой конструктор
Глава 15. Идентификация объектов, структур и
массивов
Идентификация структур
Идентификация объектов
Объекты и экземпляры
Мой адрес - не дом и не улица
Глава 16. Идентификация this
Глава 17. Идентификация new и delete
Идентификация new
Идентификация delete
Подходы к реализации кучи
Глава 18. Идентификация библиотечных функций
Глава 19. Идентификация аргументов функций
Соглашения о передаче параметров
Цели и задачи
Определение количества и типа передачи
аргументов
Адресация аргументов в стеке
Стандартное соглашение - stdcall
Соглашение cdecl
Соглашение Pascal
Соглашения о быстрых вызовах - fastcall
Соглашения о вызовах thiscall и соглашения о
вызове по умолчанию
Аргументы по умолчанию
Техника исследования механизма передачи
аргументов неизвестным компилятором
Глава 20. Идентификация значения,
возвращаемого функцией
Возврат значения оператором return
Возврат вещественных значений
Возвращение значений встроенными ассемблерными
функциями
Возврат значений через аргументы, переданные по
ссылке
Возврат значений через динамическую память
(кучу)
Возврат значений через глобальные переменные
Возврат значений через флаги процессора
Глава 21. Идентификация локальных стековых
переменных
Адресация локальных переменных
Детали технической реализации
Идентификация механизма выделения памяти
Инициализация локальных переменных
Размещение массивов и структур
Выравнивание в стеке
Как IDA Pro идентифицирует локальные
переменные
Исключение указателя на фрейм
Глава 22. Идентификация регистровых и
временных переменных
Регистровые переменные
Временные переменные
Создание временных переменных при пересылках
данных и вычислении выражений
Создание временных переменных для сохранения
значения, возращенного функцией, и результатов
вычисления выражений
Область видимости временных переменных
Глава 23. Идентификация глобальных переменных
Техника восстановления перекрестных ссылок
Отслеживание обращений к глобальным
переменным контекстным поиском их смещения в
сегменте кода [данных]
Отличия констант от указателей
Косвенная адресация глобальных переменных
Статические переменные
Глава 24. Идентификация констант и смещений
Определение типа непосредственного операнда
Сложные случаи адресации или математические
операции с указателями
Порядок индексов и указателей
Использование LEA для сложения констант
"Визуальная" идентификация констант и
указателей
Глава 25. Идентификация литералов и строк
Типы строк
C-строки
DOS-строки
Pascal-строки
Комбинированные типы
Определение типа строк
Turbo-инициализация строковых переменных
Глава 26. Идентификация конструкций IF - THEN -
ELSE
Типы условий
Наглядное представление сложных условий в виде
дерева
Исследование конкретных реализаций
Сравнение целочисленных значений
Сравнение вещественных чисел
Условные команды булевой установки
Прочие условные команды
Булевские сравнения
Идентификация условного оператора
"(условие)?do_it:continue"
Особенности команд условного перехода в
16-разрядном режиме
Практические примеры
Оптимизация ветвлений
Глава 27. Идентификация конструкций SWITCH -
CASE - BREAK
Идентификация операторов множественного
выбора
Отличия switch от оператора case языка Pascal
Обрезка (балансировка) длинных деревьев
Сложные случаи балансировки или
оптимизирующая балансировка
Ветвления в case-обработчиках
Глава 28. Идентификация циклов
Циклы с предусловием
Циклы с постусловием
Циклы со счетчиком
Циклы с условием в середине
Циклы с множественными условиями выхода
Циклы с несколькими счетчиками
Идентификация continue
Сложные условия
Вложенные циклы
Дизассемблерные листинги примеров
Глава 29. Идентификация математических
операторов
Идентификация оператора +
Идентификация оператора -
Идентификация оператора /
Идентификация оператора %
Идентификация оператора *
Комплексные операторы
ЧАСТЬ IV. ПРОДВИНУТЫЕ МЕТОДЫ
ДИЗАССЕМБЛИРОВАНИЯ
Глава 30. Дизассемблирование 32-разрядных
PE-файлов
Особенности структуры PE-файлов в конкретных
реализациях
Общие концепции и требования, предъявляемые к
PE-файлам
Структура PE-файла
Техника внедрения и удаления кода из PE-файлов
Понятие X-кода и другие условные обозначения
Цели и задачи X-кода
Требования, предъявляемые к X-коду
Внедрение X-кода
Предотвращение повторного внедрения
Классификация механизмов внедрения
Категория A: внедрение в свободное пространство
файла
Категория A: внедрение путем сжатия части файла
Категория A: создание нового NTFS-потока внутри
файла
Категория B: раздвижка заголовка
Категория B: сброс части секции в оверлей
Категория B: создание собственного оверлея
Категория C: расширение последней секции файла
Категория C: создание собственной секции
Категория C: расширение серединных секций
файла
Категория Z: внедрение через автозагружаемые dll
Глава 31. Дизассемблирование ELF-файлов под
Linux и BSD
Необходимый инструментарий
Структура ELF-файлов
Внедрение чужеродного кода в ELF-файл
Заражение посредством поглощения файла
Заражение посредством расширения последней
секции файла
Сжатие части оригинального файла
Заражение посредством расширения кодовой
секции файла
Сдвиг кодовой секции вниз
Создание собственной секции
Внедрение между файлом и заголовком
Практический пример внедрения чужеродного кода
в ELF-файл
Особенности дизассемблирования под Linux на
примере tiny-crackme
Исследование головоломки tiny-crackme
Заключение
Глава 32. Архитектура x86-64 под скальпелем
ассемблерщика
Введение
Необходимый инструментарий
Обзор архитектуры x86-64
Переход в 64-разрядный режим
Программа "Hello, world" для x86-64
Глава 33. Исследования ядра Linux
Вне ядра
Штурм ядра
Внутри ядра
Где гнездятся ошибки
Секреты кернел-хакинга
Меняем логотип Linux
Глава 34. Современные методы патчинга
Секреты онлайнового патчинга
Простейший on-line patcher
Гонки на опережение
Перехват API-функций как сигнальная система
Аппаратные точки останова
Малоизвестные способы взлома клиентских
программ
Обзор способов взлома
Модификация без изменения байт
Хак ядра Windows NT/2000/XP
Структура ядра
Типы ядер
Методы модификации ядра
Модификация загрузочного логотипа
Есть ли жизнь после BSOD?
Преодоление BSOD с помощью SoftICE
Автоматическое восстановление
Насколько безопасна утилита Anti-BSOD?
Заключение
Глава 35. Дизассемблирование файлов других
форматов
Дизассемблирование файлов PDF
Что Adobe Acrobat обещает нонконформистам
Модификация Adobe Acrobat
Взлом с помощью PrintScreen
Становитесь полиглотами
Структура файла PDF
Генерация ключа шифрования
Атака на U-пароль
Практический взлом паролей PDF
Интересные ресурсы
ЧАСТЬ V. ПРАКТИЧЕСКОЕ КОДОКОПАТЕЛЬСТВО
Глава 36. Антиотладочные приемы и игра в прятки
под Windows и Linux
Старые антиотладочные приемы под Windows на
новый лад
Самотрассирующаяся программа
Антиотладочные примеры, основанные на доступе
к физической памяти
Как работает Win2K/XP SDT Restore
Stealth-технологии в мире Windows
Синяя пилюля и красная пилюля - Windows вязнет в
Матрице
Синяя пилюля
Красная пилюля
Stealth-технологии в мире Linux
Модуль раз, модуль два
Исключение процесса из списка задач
Перехват системных вызовов
Перехват запросов к файловой системе
Когда модули недоступны
Прочие методы борьбы
Интересные ссылки по теме стелсирования
Захватываем ring 0 в Linux
Честные способы взлома
Дырка в голубом зубе или Linux Kernel Bluetooth
Local Root Exploit
Эльфы падают в дамп
Проблемы многопоточности
Получаем root на многопроцессорных машинах
Глава 37. Переполнение буфера в системах с
неисполняемым стеком
Конфигурирование DEP
Проблемы совместимости
Атака на DEP
В лагере UNIX
BufferShield или PaX на Windows
Интересные ресурсы
Глава 38. Борьба с паковщиками
Предварительный анализ
Распаковка и ее альтернативы
Алгоритм распаковки
В поисках OEP
Дамп живой программы
Поиск стартового кода по сигнатурам в памяти
Пара популярных, но неудачных способов:
GetModuleHandleA и gs:0
Побочные эффекты упаковщиков или почему не
работает VirtualProtect
Универсальный метод поиска OEP, основанный на
балансе стека
Техника снятия дампа с защищенных приложений
Простые случаи снятия дампа
В поисках самого себя
Дамп извне
Механизмы динамической расшифровки
Дамп изнутри
Грязные трюки
Полезные ссылки
Упаковщики исполняемых файлов в LINUX/BSD и
борьба с ними
Упаковщики и производительность
ELF-Crypt
UPX
Burneye
Shiva
Сравнение упаковщиков
Глава 39. Обфускация и ее преодоление
Как работает обфускатор
Как это ломается
Распутывание кода
Черный ящик
Застенки виртуальной машины
Будущее обфускации
Глава 40. Обнаружение, отладка и
дизассемблирование зловредных программ
Время тоже оставляет отпечатки
Дерево процессов
Допрос потоков
Восстановление SST
Аудит и дизассемблирование эксплоитов
Как препарируют эксплоиты
Анализ эксплоита на практическом примере
Как запустить shell-код под отладчиком
Заключение
Интересные ссылки
Глава 41. Атака на эмуляторы
Атака через виртуальную сеть
Атака через folder.htt
Атака через backdoor-интерфейс
Новейшие эксплоиты для виртуальных машин
VMware: удаленное исполнение произвольного кода
I
VMware: удаленное исполнение произвольного кода
II
VMware: перезапись произвольного файла
Подрыв виртуальных машин изнутри
Описание компакт-диска
Предметный указатель


Об авторе

Касперски К.
Настоящее имя Николай Лихачев[1], родился, село Успенское, Краснодарский край) — российский хакер. В своё время во избежание путаницы с создателем антивируса Евгением Касперским, удалил последнюю букву из своего авторского псевдонима. Также известен под псевдонимами мыщъх, nezumi n2k, elraton, souriz, tikus, muss, farah, jardon, KPNC.


Последние поступления в рубрике "Информационная безопасность"



Информационная безопасность и защита информации: словарь терминов и понятий. Словарь терминов и понятий Информационная безопасность и защита информации: словарь терминов и понятий. Словарь терминов и понятий Ищейнов В.Я.

Словарь является учебным пособием по информационной безопасности и защите информации. Содержит 1423 терминов и понятий. Предназначен для студентов высших учебных заведений и среднего профессионального образования, обучающихся по специальности 10.02.01......

Параллельные алгоритмы для решения задач защиты информации Параллельные алгоритмы для решения задач защиты информации Бабенко Л.Г.

Кратко представлены основные составляющие современных криптографических систем: симметричные алгоритмы шифрования, асимметричные алгоритмы шифрования, функции хэширования. Основной упор сделан на рассмотрение практической возможности применения......

Кибероружие и кибербезопасность. О сложных вещах простыми словами Кибероружие и кибербезопасность. О сложных вещах простыми словами Белоусов А.А.

Книга по широте охвата проблемы, новизне и практической значимости является фактически энциклопедией по кибербезопасности. Здесь вы найдете многочисленные примеры применения информационных атак, а также наиболее эффективные методы защиты от их......

Если Вы задавались вопросами "где найти книгу в интернете?", "где купить книгу?" и "в каком книжном интернет-магазине нужная книга стоит дешевле?", то наш сайт именно для Вас. На сайте книжной поисковой системы Книгопоиск Вы можете узнать наличие книги Касперски К., Рокко Е., Искусство дизассемблирования (+ CD-ROM) в интернет-магазинах. Также Вы можете перейти на страницу понравившегося интернет-магазина и купить книгу на сайте магазина. Учтите, что стоимость товара и его наличие в нашей поисковой системе и на сайте интернет-магазина книг может отличаться, в виду задержки обновления информации.