Название: Ассемблер для Windows Автор: Пирогов В.Ю. Издательство: БХВ-Петербург Год: 2011 Страниц: 886 Формат: pdf + файлы Размер: 28 mb Качество: хорошее
Рассмотрены необходимые сведения для программирования Windows-приложений на ассемблерах MASM и TASM: разработка оконных и консольных приложений; создание динамических библиотек; многозадачное программирование; программирование в локальной сети, в том числе и с использованием сокетов; создание драйверов, работающих в режиме ядра; простые методы исследования программ и др. В новом издании материал существенно переработан в соответствии с новыми возможностями ОС. Значительно шире рассмотрены вопросы управления файлами и API-программирования в Windows. К книге прилагается компакт-диск со всеми примерами, которые приводятся или упоминаются в тексте.
Содержание:
Оглавление Введение 1 Что нового? 2 Соглашения 4 О Windows Vista 5 Структура изложения 5 Введение ко второму изданию книги "Ассемблер для Windows" 11 Введение к третьему изданию книги "Ассемблер для Windows" 15 ЧАСТЬ I. ОСНОВЫ ПРОГРАММИРОВАНИЯ В WINDOWS 17 Глава 1.1. Средства программирования в Windows 19 Первая программа на языке ассемблера и ее трансляция 19 Объектные модули 24 Директива INVOKE 27 Данные в объектном модуле 29 Упрощенный режим сегментации 31 О пакете MASM32 32 Обзор пакета MASM32 33 Трансляторы 35 Редактор QEDITOR 35 Дизассемблеры 37 Глава 1.2. Основы программирования в операционной системе Windows 42 Вызов функций API 44 Структура программы 46 Регистрация класса окон 46 Создание окна 47 Цикл обработки очереди сообщений 47 Процедура главного окна 48 Примеры простых программ для Windows 49 Еще о цикле обработки сообщений 56 Передача параметров через стек 58 Глава 1.3. Примеры простых программ на ассемблере 61 Принципы построения оконных приложений 61 Окно с кнопкой 63 Окно с полем редактирования 68 Окно со списком 76 Дочерние и собственные окна 85 Глава 1.4. Ассемблер MASM 95 Командная строка ML.EXE 95 Командная строка LINK.EXE 98 Включение в исполняемый файл отладочной информации 101 Получение консольных и GUI-приложений 107 Автоматическая компоновка 107 "Самотранслирующаяся" программа 107 Глава 1.5. О кодировании текстовой информации в операционной системе Windows 109 О кодировании текстовой информации 109 OEM и ANSI 110 Кодировка Unicode 111 ЧАСТЬ II. ПРОСТЫЕ ПРОГРАММЫ, КОНСОЛЬНЫЕ ПРИЛОЖЕНИЯ, ОБРАБОТКА ФАЙЛОВ 117 Глава 2.1. Вывод графики и текста в окно. Библиотека GDI 119 Вывод текста в окне 119 Выбор шрифта 135 Графические образы 141 Глава 2.2. Графика: GDI+, DirectX, OpenGL 154 Работаем с функциями GDI+ 154 Библиотека DirectX 165 Программируем на OpenGL 177 Глава 2.3. Консольные приложения 191 Создание консоли 194 Обработка событий от мыши и клавиатуры 200 Событие KEY_EVENT 201 Событие MOUSE_EVENT 202 Событие WINDOW_BUFFER_SIZE_EVENT 203 Таймер в консольном приложении 208 Глава 2.4. Понятие ресурса. Редакторы и трансляторы ресурсов 217 Язык описания ресурсов 217 Пиктограммы 218 Курсоры 219 Битовые изображения 220 Строки 220 Диалоговые окна 220 Меню 226 Акселераторы 232 Немодальные диалоговые окна 235 Глава 2.5. Примеры программ, использующих ресурсы 243 Динамическое меню 243 Горячие клавиши 254 Управление списками 263 Программирование в стиле Windows XP и Windows Vista 270 Глава 2.6. Управление файлами: начало 277 Характеристики файлов 277 Атрибут файла 278 Временные характеристики 279 Длина файла 280 Имя файла 281 Файловая система FAT32 282 Файловая система NTFS 285 Каталоги в NTFS 290 Сжатие файлов в NTFS 290 Точки повторной обработки 291 Поиск файлов 292 Приемы работы с двоичными файлами 310 Пример получения временных характеристик файла 324 Глава 2.7. Директивы и макросредства ассемблера 329 Метки 329 Строки 332 Структуры 332 Объединения 333 Удобный прием работы со структурами 333 Условное ассемблирование 334 Вызов процедур 335 Макроповторения 336 Макроопределения 337 Некоторые другие директивы транслятора ассемблера 339 Конструкции времени исполнения программы 340 Пример программы одинаково транслируемой как в MASM, так и в TASM 342 Глава 2.8. Еще об управлении файлами (CreateFile и другие функции) 344 Полное описание функции CreateFile для работы с файлами 344 Другие возможности функции CreateFile 349 Почтовый ящик или mailslot 350 Каналы передачи информации (pipes) 355 Дисковые устройства 356 Обзор некоторых других функций API, используемых для управления файлами 360 Асинхронный ввод/вывод 361 Запись в файл дополнительной информации 366 ЧАСТЬ III. СЛОЖНЫЕ ПРИМЕРЫ ПРОГРАММИРОВАНИЯ В WINDOWS 369 Глава 3.1. Таймер в оконных приложениях 371 Общие сведения 371 Простейший пример использования таймера 373 Взаимодействие таймеров 378 Всплывающие подсказки 384 Глава 3.2. Многозадачное программирование 397 Процессы и потоки 397 Потоки 412 Взаимодействие потоков 418 Семафоры 420 События 422 Критические секции 422 Взаимоисключения 433 Глава 3.3. Создание динамических библиотек 434 Общие понятия 434 Создание динамических библиотек 437 Неявное связывание 442 Использование общего адресного пространства 443 Совместное использование памяти разными процессами 452 Глава 3.4. Сетевое программирование 456 Сетевые устройства 456 Поиск сетевых устройств и подключение к ним 463 О сетевых протоколах TCP/IP 478 О модели OSI 478 О семействе TCP/IP 479 Об IP-адресации 481 Маскирование адресов 482 Физические адреса и адреса IP 483 О службе DNS 483 Автоматическое назначение IP-адресов 484 Маршрутизация и ее принципы 484 Управление сокетами 485 Пример простейшего клиента и сервера 490 Глава 3.5. Разрешение некоторых проблем программирования в Windows 504 Глава 3.6. Некоторые вопросы системного программирования в Windows 555 Страничная и сегментная адресация 555 Адресное пространство процесса 560 Управление памятью 563 Динамическая память 563 Виртуальная память 571 Фильтры (HOOKS) 572 Глава 3.7. Совместное использование ассемблера с языками высокого уровня 581 Согласование вызовов (исторический экскурс) 581 Согласование имен 582 Согласование параметров 583 Простой пример использования ассемблера с языками высокого уровня 584 Передача параметров через регистры 589 Вызовы API и ресурсы в ассемблерных модулях 591 Развернутый пример использования языков ассемблера и C 597 Встроенный ассемблер 605 Пример использования динамической библиотеки 607 Использование языка C из программ, написанных на языке ассемблера 610 Глава 3.8. Программирование сервисов 615 Основные понятия и функции управления 615 Структура сервисов 618 Пример сервиса 623 ЧАСТЬ IV. ОТЛАДКА, АНАЛИЗ КОДА ПРОГРАММ, ДРАЙВЕРЫ 639 Глава 4.1. Обзор инструментов для отладки и дизассемблирования 641 Утилиты фирмы Microsoft 641 EDITBIN.EXE 641 DUMPBIN.EXE 643 Дизассемблер W32Dasm 646 Отладчик OllyDbg 646 Другие инструменты 647 DUMPPE.EXE 647 Hiew.exe 647 DEWIN.EXE 650 IDA Pro 650 Глава 4.2. Отладчик OllyDbg 656 Начало работы с отладчиком 656 Окна отладчика 656 Отладочное выполнение 659 Точки останова 660 Обычные точки останова 660 Условные точки останова 661 Условные точки останова с записью в журнал 661 Точка останова на сообщения Windows 661 Точка останова на функции импорта 663 Точка останова на область памяти 663 Точка останова в окне Memory 663 Аппаратные точки останова 664 Другие возможности 664 Окно наблюдения 664 Поиск информации 665 Исправление исполняемого модуля 665 Глава 4.3. Описание работы с дизассемблером W32Dasm и отладчиком SoftICE 666 Отладчик W32Dasm 666 Начало работы 666 Передвижение по дизассемблированному тексту 668 Отображение данных 669 Вывод импортированных и экспортированных функций 670 Отображение ресурсов 670 Операции с текстом 671 Загрузка программ для отладки 671 Работа с динамическими библиотеками 673 Точки останова 673 Модификация кода, данных и регистров 673 Поиск нужного места в программе 675 Отладчик SoftICE 676 Основы работы с SoftICE 677 Запуск и интерфейс 677 Краткий справочник по SoftICE 688 Глава 4.4. Основы анализа кода программ 712 Переменные и константы 712 Управляющие структуры языка С 717 Условные конструкции 717 Вложенные условные конструкции 717 Оператор switch или оператор выбора 718 Циклы 719 Локальные переменные 720 Функции и процедуры 722 Оптимизация кода 723 Объектное программирование 727 Глава 4.5. Исправление исполняемых модулей 732 Простой пример исправления исполняемого модуля 732 Пример снятия защиты 736 Стадия 1. Попытка зарегистрироваться 736 Стадия 2. Избавляемся от надоедливого окна 738 Стадия 3. Доводим регистрацию до логического конца 740 Стадия 4. Неожиданная развязка 741 Глава 4.6. Структура и написание драйверов 743 О ядре и структуре памяти 743 Управление драйверами 745 Пример простейшего драйвера, работающего в режиме ядра 747 Драйверы режима ядра и устройства 753 ПРИЛОЖЕНИЯ 667 Приложение 1. Справочник API-функций и сообщений Windows 769 Приложение 2 . Справочник по командам и архитектуре микропроцессора Pentium 787 Регистры микропроцессора Pentium 787 Регистры общего назначения 787 Регистр флагов 788 Сегментные регистры 789 Управляющие регистры 789 Системные адресные регистры 791 Регистры отладки 791 Команды процессора 792 Команды арифметического сопроцессора 806 Расширение MMX 814 О новых инструкциях MMX 817 Приложение 3. Защищенный режим микропроцессора Pentium 819 Об уровнях привилегий 819 Селекторы 820 Дескриптор кода и данных 820 Другие дескрипторы 821 Сегмент TSS 822 О защите и уровнях привилегий 822 Привилегированные команды 822 Переключение задач 823 Страничное управление памятью 823 Приложение 4. Структура исполняемых модулей 825 Общая структура PE-модуля 826 Заголовок PE-модуля 828 Таблица секций 834 Секция экспорта (.edata) 837 Секция импорта (.idata) 839 Локальная область данных потоков 841 Секция ресурсов (.rdata) 842 Таблица настроек адресов 843 Отладочная информация (.debug$S, .debug$T) 845 Приложение 5. Файл kern.inc, используемый в главе 4.6 846 Приложение 6 . Пример консольного приложения с полной обработкой событий 855 Приложение 7. Описание компакт-диска 865 Список литературы 867 Предметный указатель 869 X Оглавление XI Оглавление
|