Оглавление Введение 1
Для кого предназначена эта книга 3
Организация книги 4
Совместимость программных средств разработки 5
ЧАСТЬ I. ОСНОВНЫЕ КОНЦЕПЦИИ ТЕХНОЛОГИИ BIOS 7
Глава 1. Технология PC BIOS 9
Введение 9
1.1. BIOS материнской платы 9
1.2. BIOS плат расширения 15
1.3. Микропрограммное обеспечение BIOS прочих компонентов PC 16
1.4. Основные принципы работы шинных протоколов 17
1.4.1. Общесистемная схема адресации 17
1.4.2. Протокол шины PCI 20
1.4.3. Фирменные шины для соединения между чипсетами 29
1.4.4. Протокол шины PCI Express 30
1.4.5. Протокол шины HyperTransport 32
Глава 2. Введение в дизассемблирование 34
Введение 34
2.1. Сканирование двоичного файла 35
2.2. Знакомство с дизассемблером IDA Pro 36
2.3. Создание сценариев и назначение горячих клавиш 43
2.4. Модули IDA Pro (Необязательный материал) 54
Глава 3. Подготовка к разработке прикладного программного обеспечения BIOS 76
Введение 76
3.1. Разработка приложений BIOS на "чистом" ассемблере 76
3.2. Разработка приложений BIOS с помощью GCC 82
ЧАСТЬ II. ОБРАТНАЯ РАЗРАБОТКА BIOS МАТЕРИНСКОЙ ПЛАТЫ 93
Глава 4. Знакомимся с системой 95
Введение 95
4.1. Особенности аппаратного обеспечения 95
4.1.1. Отображение системных адресов и адресация чипа BIOS 95
4.1.2. Малоизвестные аппаратные порты 114
4.1.3. Перемещаемые аппаратные порты 118
4.1.4. Обработка BIOS плат расширения 119
4.2. Структура двоичного кода BIOS 120
4.3. Особенности программного обеспечения 121
4.3.1. Инструкция call 121
4.3.2. Инструкция retn 122
4.3.3. Использование кэша как RAM 128
4.4. Дизассемблирование BIOS с помощью IDA Pro 132
Глава 5. Реализация BIOS материнской платы 133
Введение 133
5.1. Award BIOS 133
5.1.1. Структура файла Award BIOS 133
5.1.2. Дизассемблирование блока начальной загрузки Award BIOS 139
5.1.3. Дизассемблирование системной BIOS Award 185
5.2. AMI BIOS 206
5.2.1. Структура файла AMI BIOS 206
5.2.2. Инструменты для дизассемблирования AMI BIOS 207
5.2.3. Дизассемблирование области начальной загрузки AMI BIOS 208
5.2.4. Дизассемблирование системной AMI BIOS 257
Глава 6. Модифицирование BIOS 262
Введение 262
6.1. Необходимые инструменты 262
6.2. Вставка кода 269
6.2.1. Определение местонахождения таблицы переходов POST 271
6.2.2. Отыскание фиктивной процедуры в таблице переходов POST 272
6.2.3. Ассемблирование внедряемого кода 273
6.2.4. Извлечение оригинальной системной BIOS 276
6.2.5. Отыскание байтов-заполнителей 277
6.2.6. Вставка кода 277
6.2.7. Модифицирование таблицы переходов POST 278
6.2.8. Перекомпоновка двоичного файла BIOS 280
6.2.9. Прошивка модифицированной BIOS 280
6.3. Другие модификации 281
ЧАСТЬ III. BIOS ПЛАТ РАСШИРЕНИЯ PCI 287
Глава 7. Разработка BIOS плат расширения PCI 289
Введение 289
7.1. Архитектура Plug-and-Play BIOS и BIOS плат расширения 289
7.1.1. Архитектура Plug-and-Play BIOS 290
7.1.2. Использование Plug-and-Play BIOS для разработки BIOS платы расширения 301
7.1.3. Процедура POST и инициализация BIOS плат расширения PCI 302
7.1.4. Регистр XROMBAR BIOS платы расширения PCI 303
7.1.5. BIOS плат расширения PCI 304
7.1.6. Структура Plug-and-Play BIOS платы расширения PCI 312
7.2. Особенности BIOS плат расширения PCI 313
7.3. Пример реализации 314
7.3.1. Аппаратные средства испытательной платформы 315
7.3.2. Инструменты разработки 315
7.3.3. Исходный код BIOS расширения 316
7.3.4. Создание образца BIOS расширения 337
7.3.5. Тестирование примера 340
7.3.6. Возможные проблемы и их устранение 340
Глава 8. Дизассемблирование BIOS расширения PCI 342
Введение 342
8.1. Архитектура двоичного файла 342
8.2. Дизассемблирование основного кода 344
8.2.1. Дизассемблирование BIOS расширения платы Realtek 8139 344
8.2.2. Дизассемблирование BIOS расширения Gigabyte GV-NX76T256D-RH GeForce 7600 GT 353
8.2.3. Замечание о возможности вставки кода в BIOS расширения 356
Часть IV. ВНЕСЕНИЕ ИЗМЕНЕНИЙ В КОД BIOS 357
Глава 9. Обращение к BIOS из операционной системы 359
Введение 359
9.1. Общий способ доступа 359
9.2. Доступ к содержимому BIOS материнской платы из Linux 361
9.2.1. Знакомство с утилитой flash_n_burn 363
9.2.2. Внутреннее устройство утилиты flash_n_burn 369
9.3. Доступ к содержимому BIOS материнской платы из Windows 375
9.3.1. Драйвер устройства режима ядра утилиты bios_probe 378
9.3.2. Приложение пользовательского режима утилиты bios_probe 416
9.4. Обращение к содержимому чипа ROM BIOS плат расширения PCI 456
9.5. Обращение к содержимому чипа ROM BIOS плат расширения PCI в Windows 460
9.5.1. Обращение к чипу RTL8139 460
9.5.2. Обращение к чипу Atmel AT29C512 465
9.5.3. Исходный код программного обеспечения для обращения к чипу флэш-ROM 465
9.5.4. Проверяем утилиту 491
Глава 10. Низкоуровневое управление удаленным сервером 495
Введение 495
10.1. Интерфейсы DMI и SMBIOS 495
10.2. Реализация кода для удаленного управления сервером 512
Глава 11. Меры безопасности BIOS 528
Введение 528
11.1. Защита с помощью паролей 528
11.1.1. Нарушение контрольной суммы CMOS 530
11.1.2. Считывание пароля BIOS из области BDA 536
11.1.3. Недостатки методов программной атаки на пароли BIOS с точки зрения злоумышленника 545
11.2. Проверка целостности компонентов BIOS 545
11.2.1. Проверка целостности компонентов Award BIOS 546
11.2.2. Проверка целостности компонентов AMI BIOS 550
11.3. Меры безопасности по удаленному управлению сервером 552
11.4. Аппаратные меры безопасности 553
Глава 12. Разработка руткитов BIOS 565
12.1. История взломов BIOS 565
12.2. Захват системной BIOS 622
12.2.1. Захват обработчиков прерываний Award BIOS 4.51PG 627
12.2.2. Захват обработчиков прерываний Award BIOS 6.00PG 652
12.2.3. Работа с BIOS других поставщиков 661
12.3. Подход к разработке руткита для BIOS платы расширения PCI 662
12.3.1. Наложение заплатки обхода на BIOS расширения PCI 664
12.3.2. BIOS плат расширения PCI с несколькими образами 671
12.3.3. Особенности BIOS расширения PCI сетевых плат 673
Глава 13. Методы защиты BIOS 674
Введение 674
13.1. Методы предотвращения атак на BIOS 674
13.1.1. Аппаратные меры безопасности 674
13.1.2. Защита с помощью виртуальной машины 680
13.1.3. Безопасность WBEM и руткит BIOS 680
13.1.4. Защита от руткита BIOS плат расширения PCI 683
13.1.5. Прочие методы защиты BIOS 684
13.2. Распознавание систем с нарушенной безопасностью 695
13.2.1. Распознавание BIOS материнской платы с нарушенной безопасностью 696
13.2.2. Распознавание инфицированной BIOS платы расширения PCI 698
13.3. Восстановление нарушенной безопасности 699
ЧАСТЬ V. НОВЫЕ ПРИМЕНЕНИЯ ТЕХНОЛОГИЙ BIOS 705
Глава 14. Технология BIOS встроенных систем х86 705
Введение 705
14.1. Архитектура BIOS встроенных систем х86 705
14.2. Примеры реализации BIOS встроенных систем х86 709
14.2.1. Компьютерная приставка к телевизору 709
14.2.2. Сетевое устройство 724
14.2.3. Киоск 729
14.3. Взлом BIOS встроенных систем х86 731
Глава 15. Дальнейшие перспективы 734
Введение 734
15.1. Будущее технологии BIOS 734
15.1.1. Унифицированный интерфейс расширяемого микропрограммного обеспечения 735
15.1.2. Обзорная информация о поставщиках BIOS 741
15.2. Универсальная компьютеризация и разработки BIOS 747
15.3. Будущие угрозы безопасности BIOS 748
Список литературы 751
Описание компакт-диска 753
Предметный указатель 755
VIII Оглавление IX Оглавление