Введение
Глава 1 Основы программирования на Ассемблере IBM PC
1.1. Архитектура IBM PC
1.2. Основы программирования
1.3. Система прерываний IBM PC
Глава 2 Программирование алгоритмов защиты информации
2.1. Классификация методов защиты информации
2.2. Стохастические методы защиты информации
2.3. Алгоритмы генерации псевдослучайных последовательностей (ПСП)
2.4. Конечные поля
2.5. CRC-коды
2.6. Стохастическое преобразование информации
2.7. Поточный шифр RC4
2.8. Стандарт криптографической защиты ХХI века - Advanced Encryption Standard (AES)
2.9. Блочный шифр GATE
2.10. Особенности программной реализации алгоритмов защиты информации
Глава 3 Программные средства защиты информации
3.1. Защита программ от исследования
3.2. Антивирус из вируса
Глава 4 Ассемблер в операционной системе Linux
4.1. Синтаксис
4.2. Системные вызовы
4.3. Как это делают хакеры
4.4. Реализация эксплойта
4.5. Chroot shell-code
4.6. Advanced execve() shell-code
4.7. Нестандартное использование функции execve()
4.8. Использование бита s
4.9. Использование symlink()
4.10. Написание shell-кода с использованием системных вызовов socket()
4.11. Защита от remote exploit
4.12. ELF-инфекторы
4.13. Использование Inline-ассемблерных вставок
4.14. Отладка. Основы работы с GDB
Глава 5
Программирование на Ассемблере под Windows
5.1. Выбор инструментария
5.2. Начало работы
5.3. Программа "Hello World"
5.4. Динамически загружаемые библиотеки
5.5. Разработка приложения вычисления контрольных сумм
Глава 6 Оптимизация для процессоров семейства Pentium
6.1. Введение
6.2. Дополнительные источники
6.3. Вызов ассемблерных функций из языков высокого уровня
6.4. Отладка
6.5. Модель памяти
6.6. Выравнивание
6.7. Кэш
6.8. Исполнение кода "в первый раз"
6.9. Задержка генерации адреса
6.10. Спаривание целочисленных инструкций (P1 и PMMX)
6.11. Разбивка сложных инструкций на простые (P1 и PMMX)
6.12. Префиксы (P1 и PMMX)
6.13. Обзор конвейеров PPro, P2 и P3
6.14. Раскодировка инструкций (PPro, P2 и P3)
6.15. Доставка инструкций (PPro, P2 и P3)
6.16. Переименование регистров (PPro, P2 и P3)
6.17. Изменение порядка выполнения инструкций (PPro, P2 и P3)
6.18. Вывод из обращения (PPro, P2 и P3)
6.19. Частичные задержки (PPro, P2 и P3)
6.20. Цепочечные зависимости (PPro, P2 и P3)
6.21. Поиск узких мест (PPro, P2 и P3)
6.22. Команды передачи управления
6.23. Уменьшение размера кода
6.24. Работа с числами с плавающей запятой (P1 и PMMX)
6.25. Оптимизация циклов (все процессоры)
6.26. Проблемные инструкции
6.27. Специальные темы
6.28. Список периодов выполнения инструкций для P1 и PMMX
6.29. Список периодов выполнения инструкций и задержек микроопераций для PPro, P2 и P3
6.30. Тестирование скорости
6.31. Сравнение различных микропроцессоров
Литература
Приложение 1 Вариант реализации одного из первых советских вирусов
Приложение 2 Резидентный блокировщик доступа к директории
Приложение 3 Реализация алгоритма шифрования RC4
Приложение 4 Реализация алгоритма шифрования Rijndael