Глава 1. Введение 1
Для кого предназначена эта книга 1
Благодарности 2
Кто такой хакер и как им стать 2
Кто такой крекер и как им стать 3
Что понадобится для работы с книгой 5
Глава 2. Особенности ассемблера для исследования работы программ 7
Структурная схема компьютера 7
Архитектура микропроцессора 9
Организация памяти 12
Представление данных 15
Целые числа 15
Двоично-десятичные числа 16
Числа с плавающей точкой 17
Символьные данные 19
Представление данных сопроцессора 19
Регистры микропроцессора 20
Регистры общего назначения 20
Регистровые указатели и индексные регистры 22
Сегментные регистры 22
Регистры состояния и управления 23
Способы адресации 29
Работа со стеком 34
Логика и организация программы 35
Безусловный переход 35
Команды условного перехода 37
Команды сравнения 38
Команды цикла 39
Логические операции и команды сдвига 41
Организация циклов 44
Вызов подпрограмм 45
Структура COM- и EXE-программ. Размещение программы в памяти 51
Ввод и вывод данных 53
Определение данных 53
Директивы определения данных 54
Команды пересылки и строковые операции 56
Прерывания 63
Система прерываний 64
Обработка прерывания 64
Собственные программы обработки прерываний 65
Установка и чтение адреса обработчика прерывания с помощью функций DOS 68
Прерывания для ввода/вывода символов 69
Арифметические операции 75
Сложение и вычитание 75
Увеличение и уменьшение 75
Умножение и деление 76
Команды lea и xlat 78
Загрузка исполнительного адреса (команда lea) 78
Кодирование по таблице (команда xlat) 78
Глава 3. Основные способы ввода/вывода 81
Ввод данных с клавиатуры 81
Преобразование и вывод данных на экран 83
Глава 4. Отладчики 87
Отладчик DEBUG 87
Отладчик Turbo Debugger 88
Отладчик SoftICE 96
Особенности 96
Установка 97
Настройка 99
Окно регистров 101
Окно данных 101
Окно кода 102
Окно команд 102
Точки останова 103
Горячие клавиши 107
Наиболее важные точки останова 108
Интерактивный дизассемблер IDA 109
Отладчик OllyDbg 119
Главное окно программы 120
Горячие клавиши 131
Плагины для отладчика OllyDbg 134
Глава 5. Как именно взламывают программы 145
Первые шаги в реверсинге или "С чего начать?" 145
Инструменты — главные орудия крекера 148
Типовая защита программ "Запрос пароля" 154
Без шифрования сообщений 154
С шифрованием сообщений 164
Улучшенная защита программ с шифрованием сообщений 171
Программы с динамической проверкой ввода пароля 178
Глава 6. Основные способы защиты программ 187
Проверка даты и времени 187
Практический пример 187
Инструмент InqSoft Sign Of Misery 191
Фиксированное количество запусков программы 192
Программы, защищенные CRC 201
Более сложный алгоритм проверки CRC 210
Классические алгоритмы нахождения CRC и методика их применения в защите ПО 214
Некоторые менее распространенные способы защиты программ 217
Шифрование всей программы или ее части 217
"Отлов" пошаговой отладки программы 219
Проверка на основе динамически изменяющихся параметров 219
Регистрация он-лайн 220
Глава 7. Методы противодействия и способы защиты программ от взлома 221
Как не надо проектировать защиту программ 222
Как "обмануть" отладчики и дизассемблеры 226
Функция IsDebuggerPresent 227
Функция CreateFileА 229
Обман дизассемблера 230
Усложнение листинга 231
Заключение 233
Приложение. Описание компакт-диска 235
Список литературы 237
Предметный указатель 239
IV Оглавление V Оглавление