
Рассмотрены нестандартные приемы программирования, а также примеры использования недокументированных функций и возможностей языка C++ при разработке шуточных программ и серьезных сетевых приложений для диагностики сетей, управления различными сетевыми устройствами и просто при повседневном использовании интернет-приложений. Во втором издании содержатся новые и переработаны старые примеры, а в качестве среды разработки используется Visual Studio 2008, хотя большинство описываемых примеров работоспособны в более старых версиях и в CodeGear C++ Builder.
ЗАКАЗАТЬ КНИГУ СОДЕРЖАНИЕ ВВЕДЕНИЕ
| Оглавление Введение | 7 |
| О книге | 8 |
| Кто такой хакер? Как им стать? | 9 |
| Благодарности | 18 |
Глава 1. Оптимизация | 19 |
| 1.1. Сжатие исполняемых файлов | 19 |
| 1.2. Без окон, без дверей... | 21 |
| 1.3. Оптимизация программ | 30 |
| Закон № 1 | 31 |
| Закон № 2 | 31 |
| Закон № 3 | 33 |
| Закон № 4 | 35 |
| Закон № 5 | 36 |
| Закон № 6 | 38 |
| Закон № 7 | 38 |
| Закон № 8 | 39 |
| Закон № 9 | 39 |
| Итог | 40 |
| 1.4. Безопасность кода | 41 |
| 1.4.1. Планирование безопасности | 41 |
| 1.4.2. Уровень защиты | 43 |
| 1.4.3. Исправление ошибок | 44 |
| 1.4.4. Шифрование | 44 |
| 1.4.5. Тестирование | 45 |
| 1.4.6. Возможности системы | 46 |
| 1.4.7. Установка программы | 46 |
| 1.5. Распространенные уязвимости | 47 |
| 1.5.1. Контроль данных | 47 |
| 1.5.2. Переполнения | 47 |
| 1.5.3. Ошибки логики | 54 |
Глава 2. Простые шутки | 56 |
| 2.1. Летающий Пуск | 57 |
| 2.2. Начните работу с кнопки Пуск | 66 |
| 2.3. Светомузыка над кнопкой Пуск | 69 |
| 2.4. Продолжаем шутить над Панелью задач | 72 |
| 2.5. Маленькие шутки | 80 |
| 2.5.1. Как программно потушить монитор | 80 |
| 2.5.2. Запуск системных CPL-файлов | 80 |
| 2.5.3. Программное управление CD-ROM | 81 |
| 2.5.4. Удаление часов из Панели задач | 83 |
| 2.5.5. Исчезновение чужой программы | 84 |
| 2.5.6. Установка на Рабочий стол собственных обоев | 85 |
| 2.6. Шутки с мышкой | 86 |
| 2.6.1. Безумная мышка | 86 |
| 2.6.2. Летающие объекты | 86 |
| 2.6.3. Мышка в клетке | 88 |
| 2.6.4. Изменчивый указатель | 89 |
| 2.6.5. Скоростной режим | 90 |
| 2.7. Найти и уничтожить | 90 |
| 2.8. Блокировка Рабочего стола | 92 |
| 2.9. Сетевая бомба | 92 |
Глава 3. Система | 95 |
| 3.1. Работа с чужыми окнами | 96 |
| 3.2. Дрожь в ногах | 101 |
| 3.3. Переключение экранов | 103 |
| 3.4. Нестандартные окна | 108 |
| 3.5. Безбашенные окна | 115 |
| 3.6. Перемещение окна за любую область | 123 |
| 3.7. Подсматриваем пароли | 126 |
| 3.7.1. Динамическая библиотека для расшифровки паролей | 126 |
| 3.7.2. Программа расшифровки пароля | 132 |
| 3.7.3. От пользы к шутке | 134 |
| 3.8. Мониторинг исполняемых файлов | 136 |
| 3.9. Управление ярлыками на Рабочем столе | 138 |
| 3.9.1. Анимация текста | 140 |
| 3.9.2. Обновление иконки | 141 |
| 3.10. Использование буфера обмена | 141 |
Глава 4. Работа с сетью | 145 |
| 4.1. Теория сетей и сетевых протоколов | 145 |
| 4.1.1. Сетевые протоколы | 148 |
| 4.1.2. Транспортные протоколы | 150 |
| 4.1.3. Прикладные протоколы — загадочный NetBIOS | 152 |
| 4.1.4. NetBEUI | 153 |
| 4.1.5. Сокеты Windows | 154 |
| 4.1.6. Протоколы IPX/SPX | 154 |
| 4.1.7. Сетевые порты | 155 |
| 4.2. Работа с ресурсами сетевого окружения | 155 |
| 4.3. Структура сети | 158 |
| 4.4. Работа с сетью с помощью объектов Visual C++ | 166 |
| 4.5. Передача данных по сети с помощью CSocket | 175 |
| 4.6. Работа напрямую с WinSock | 183 |
| 4.6.1. Обработка ошибок | 184 |
| 4.6.2. Запуск библиотеки | 185 |
| 4.6.3. Создание сокета | 189 |
| 4.6.4. Серверные функции | 190 |
| 4.6.5. Клиентские функции | 194 |
| 4.6.6. Обмен данными | 197 |
| 4.6.7. Завершение соединения | 203 |
| 4.6.8. Принцип работы протоколов без установки соединения | 203 |
| 4.7. Примеры работы с сетью по протоколу TCP | 205 |
| 4.7.1. Пример работы TCP-сервера | 206 |
| 4.7.2. Пример работы TCP-клиента | 212 |
| 4.7.3. Анализ примера | 215 |
| 4.8. Примеры работы по протоколу UDP | 218 |
| 4.8.1. Пример работы UDP-сервера | 218 |
| 4.8.2. Пример работы UDP-клиента | 220 |
| 4.9. Обработка принимаемых данных | 221 |
| 4.10. Прием и передача данных | 223 |
| 4.10.1. Функция select | 225 |
| 4.10.2. Простой пример использования функции select | 226 |
| 4.10.3. Использование сокетов через события Windows | 229 |
| 4.10.4. Асинхронная работа через объект события | 236 |
Глава 5. Работа с железом | 239 |
| 5.1. Параметры сети | 239 |
| 5.2. Изменение IP-адреса | 246 |
| 5.3. Работа с COM-портом | 252 |
| 5.4. Подвисшие файлы | 258 |
Глава 6. Полезные примеры | 260 |
| 6.1. Алгоритм приема/передачи данных | 260 |
| 6.2. Самый быстрый сканер портов | 264 |
| 6.3. Состояние локального компьютера | 272 |
| 6.4. DHCP-сервер | 278 |
| 6.5. Протокол ICMP | 282 |
| 6.6. Определение пути пакета | 290 |
| 6.7. ARP-протокол | 297 |
Глава 7. Система безопасности | 307 |
| 7.1. Пользователи ОС Windows | 307 |
| 7.1.1. Получение списка пользователей/групп | 307 |
| 7.1.2. Управление пользователями | 315 |
| 7.2. Права доступа к объектам | 317 |
| 7.2.1. Дескриптор безопасности | 318 |
| 7.2.2. Дескриптор безопасности | 325 |
| 7.2.3. Изменение дескриптора безопасности | 332 |
| Заключение | 341 |
| Приложение. Описание компакт-диска | 343 |
| Список литературы и ресурсы Интернета | 344 |
| Предметный указатель | 345 |
| 6 Оглавление 5 Оглавление |