Table Of ContentМосква · Санкт(cid:11)Петербург · Нижний Новгород · Воронеж
Ростов(cid:11)на(cid:11)Дону · Екатеринбург · Самара · Новосибирск
Киев · Харьков · Минск
2006
ББК 32.973.23-018-07
УДК 004.491.22
К28
Касперски К.
К28 Компьютерные вирусы изнутри и снаружи. — СПб.: Питер, 2006. — 527 с.: ил.
ISBN 5-469-00982-3
Что находится внутри вируса? Какие шестеренки приводят его в движение? Как происходит
внедрение чужеродного кода в исполняемый файл и по каким признакам его можно распознать?
Насколько надежны антивирусы и можно ли их обхитрить? Как хакеры ломают программное
обеспечение и как их остановить? Изыскания, начатые в предыдущей книге Криса Касперски
«Записки исследователя компьютерных вирусов», продолжаются, и новая книга содержит массу
свежего материала, ориентированного на творческих людей, дизассемблирующих машинные
коды, изучающих исходные тексты, презирающих мышь и свободно говорящих на Си. В общем,
она для хакеров всех мастей…
ББК 32.973.23-018-07
УДК 004.491.22
Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было
форме без письменного разрешения владельцев авторских прав.
Информация, содержащаяся в данной книге, получена из источников, рассматриваемых издательством как
надежные. Тем не менее, имея в виду возможные человеческие или технические ошибки, издательство не
может гарантировать абсолютную точность и полноту приводимых сведений и не несет ответственности за
возможные ошибки, связанные с использованием книги.
ISBN5-469-00982-3 © ЗАО Издательский дом «Питер», 2006
КРАТКОЕ СОДЕРЖАНИЕ
введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17
ЧАСТЬ I. О ДЕНЬГАХ, ВИРУСАХ, ПРОГРАММИРОВАНИИ И СМЫСЛЕ ЖИЗНИ 20
глава 1. программирование денег лопатой . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22
глава 2. на чем писать, как писать, скем писать . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34
глава 3. неуловимые мстители возвращаются . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .49
ЧАСТЬ II. ЛОКАЛЬНЫЕ ВИРУСЫ 54
глава4. техника выживания в мутной воде, или как обхитрить антивирус . . . . . . . .57
глава5. формат PE(cid:30)файлов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71
глава6. техника внедрения иудаления кода из PE(cid:30)файлов . . . . . . . . . . . . . . . . . . . . . .112
глава7. вирусы вмире UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .152
глава8. основы самомодификации . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .165
глава9. найти иуничтожить, или пособие по борьбе свирусами итроянами . . . .181
ЧАСТЬ III. ВОЙНЫ ЮРСКОГО ПЕРИОДА II — ЧЕРВИ ВОЗВРАЩАЮТСЯ 204
глава10. внутри пищеварительного тракта червя . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .206
глава 11. переполнение буферов как средство борьбы смегакорпорациями . . . . . . .216
глава12. ultimate adventure, или поиск дыр вдвоичном коде . . . . . . . . . . . . . . . . . . . . .236
глава13. спецификаторы под арестом, или дерни printf за хвост . . . . . . . . . . . . . . . . . .251
глава14. SEH на службе контрреволюции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .262
глава15. техника написания переносимого shell(cid:30)кода . . . . . . . . . . . . . . . . . . . . . . . . . . . .270
глава16. секс сIFRAME, или как размножаются черви вInternet Explorer'e . . . . . .282
глава17. обход брандмауэров снаружи иизнутри . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .291
глава18. honeypot'ы, или хакеры любят мед . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .304
глава19. рыбная ловля влокальной сети— sniffering . . . . . . . . . . . . . . . . . . . . . . . . . . . .312
глава20. даза банных под прицелом . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .328
ЧАСТЬ IV. ЗИККУРАТ ЗАЩИТНЫХ СООРУЖЕНИЙ, ИЛИ КАК ПРОТИВОСТОЯТЬ
ВИРУСАМ, ХАКЕРАМ ИДРУГИМ ПОРОЖДЕНИЯМ ТЬМЫ 346
глава21. как защищают программное обеспечение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .348
глава22. методология защиты вмире UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .356
глава23. особенности национальной отладки вUNIX . . . . . . . . . . . . . . . . . . . . . . . . . . . .371
глава24. брачные игры лазерных дисков . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .384
глава25. тестирование программного обеспечения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .397
ЧАСТЬ V. ОПЕРАЦИОННЫЕ СИСТЕМЫ, ЭМУЛЯТОРЫ ИКОМПИЛЯТОРЫ 412
глава26. эмулирующие отладчики иэмуляторы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .414
глава 27. обзор эмуляторов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .421
глава 28. области применения эмуляторов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .428
глава29. ядерно(cid:30)нуклонная смесь, или чем отличается XP от 9х . . . . . . . . . . . . . . . . .435
глава30. разгон иторможение WindowsNT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .442
глава31. win32 завоевывает UNIX, или портили, портили испортили . . . . . . . . . . . .469
глава32. гонки на вымирание, девяносто пятые выживают . . . . . . . . . . . . . . . . . . . . . . .483
глава33. техника оптимизации под Линукс . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .494
СОДЕРЖАНИЕ
ВВЕДЕНИЕ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
об авторе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
условные обозначения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
благодарности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
от издательства . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
ЧАСТЬ I. О ДЕНЬГАХ, ВИРУСАХ, ПРОГРАММИРОВАНИИ
И СМЫСЛЕ ЖИЗНИ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
ГЛАВА 1. ПРОГРАММИРОВАНИЕ ДЕНЕГ ЛОПАТОЙ . . . . . . . . . . . . . . . . . . . . . . . . . . 22
куда податься . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
чем заняться . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
коммерческая природа некоммерческого Open Source . . . . . . . . . . . . . . . . . . . . . 31
ГЛАВА 2. НА ЧЕМ ПИСАТЬ, КАК ПИСАТЬ, СКЕМ ПИСАТЬ . . . . . . . . . . . . . . . . . . . 34
на чем писать . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
как писать . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
слой сопряжения со средой . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
вычислительная часть . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
пользовательский интерфейс . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
с кем писать . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
ГЛАВА 3. НЕУЛОВИМЫЕ МСТИТЕЛИ ВОЗВРАЩАЮТСЯ . . . . . . . . . . . . . . . . . . . . . . 49
7
Cодержание
ЧАСТЬ II. ЛОКАЛЬНЫЕ ВИРУСЫ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
о формате PE(cid:30)файла, способах внедрения внего инемного
обо всем остальном . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
ГЛАВА 4. ТЕХНИКА ВЫЖИВАНИЯ В МУТНОЙ ВОДЕ,
ИЛИ КАК ОБХИТРИТЬ АНТИВИРУС . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
наши герои . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
немного теории, или под капотом антивируса . . . . . . . . . . . . . . . . . . . . . . . . . . 59
плохие идеи, или чего не надо делать . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
генеральный план наступления, или как мы будем действовать . . . . . . . . . 61
криптография на пеньке . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
ГЛАВА 5. ФОРМАТ PE-ФАЙЛОВ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
общие концепции и требования, предъявляемые к PE(cid:30)файлам . . . . . . . . . . . . 73
структура PE(cid:30)файла . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
что можно и чего нельзя делать с PE(cid:30)файлом . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
описание основных полей PE(cid:30)файла . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
[old(cid:30)exe] e_magic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
[old(cid:30)exe] e_cparhdr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
[old(cid:30)exe] e_lfanew . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
[IMAGE_FILE_HEADER] Machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
[IMAGE_FILE_HEADER] NumberOfSections . . . . . . . . . . . . . . . . . . . . . . . . . 82
[image_file_header] PointerToSymbolTable/NumberOfSymbols . . . . . . . . . . 83
[image_file_header] SizeOfOptionalHeader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
[image_file_header] Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
[image_optional_header] Magic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
[image_optional_header] SizeOfCode/SizeOfInitializedData/
SizeOfUninitializedData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
[image_optional_header] BaseOfCode/BaseOfData . . . . . . . . . . . . . . . . . . . . . . 86
[image_optional_header] AddressOfEntryPoint . . . . . . . . . . . . . . . . . . . . . . . . . . 86
[image_optional_header] Image Base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
[image_optional_header] FileAlignment/SectionAlignment . . . . . . . . . . . . . . 87
[image_optional_header] SizeOfImage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
[image_optional_header] SizeOfHeaders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
[image_optional_header] CheckSum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
[image_optional_header] Subsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
[image_optional_header] DllCharacteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
8
Cодержание
[image_optional_header] SizeOfStackReserve/SizeOfStackCommit,
SizeOfHeapReserve/SizeOfHeapCommit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
[image_optional_header] NumberOfRvaAndSizes . . . . . . . . . . . . . . . . . . . . . . . . 91
DATA DIRECTORY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
таблица секций . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
экспорт . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
импорт . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .101
перемещаемые элементы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .108
ГЛАВА 6. ТЕХНИКА ВНЕДРЕНИЯ ИУДАЛЕНИЯ
КОДА ИЗ PE-ФАЙЛОВ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .112
цели изадачи Х(cid:30)кода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .113
требования, предъявляемые кX(cid:30)коду . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .116
техника внедрения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .117
ГЛАВА 7. ВИРУСЫ ВМИРЕ UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .152
язык разработки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .154
средства анализа, отладки иплагиата . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .155
кривое зеркало, или как антивирусы стали плохой идеей . . . . . . . . . . . . . . . . .156
структура ELF(cid:30)файлов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .157
методы заражения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .159
общая структура истратегия вируса . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .161
перехват управления путем модификации таблицы импорта . . . . . . . . . .163
ссылки по теме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .163
глас народа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .164
ГЛАВА 8. ОСНОВЫ САМОМОДИФИКАЦИИ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .165
знакомство ссамомодифицирующимся кодом . . . . . . . . . . . . . . . . . . . . . . . . . . .165
принципы построения самомодифицирующегося кода . . . . . . . . . . . . . . . . . . .168
матрица . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .175
проблемы обновления кода через интернет . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .178
глас народа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .180
ГЛАВА 9. НАЙТИ ИУНИЧТОЖИТЬ, ИЛИ ПОСОБИЕ ПО БОРЬБЕ
СВИРУСАМИ ИТРОЯНАМИ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .181
если вдруг открылся люк… . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .182
новые процессы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .182
9
Cодержание
потоки ипамять . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .184
контроль целостности файлов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .185
ненормальная сетевая активность . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .187
сокрытие файлов, процессов исетевых соединений вLINUX . . . . . . . . . . . . .188
модуль раз, модуль два… . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .189
исключение процесса из списка задач . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .192
перехват системных вызовов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .196
перехват запросов кфайловой системе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .198
когда модули недоступны… . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .199
прочие методы борьбы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .202
глас народа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .202
что читать . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .203
ЧАСТЬ III. ВОЙНЫ ЮРСКОГО ПЕРИОДА II —
ЧЕРВИ ВОЗВРАЩАЮТСЯ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .204
ГЛАВА 10. ВНУТРИ ПИЩЕВАРИТЕЛЬНОГО ТРАКТА ЧЕРВЯ . . . . . . . . . . . . . . . . .206
явление червя народу . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .207
конструктивные особенности червя . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .208
долг перед видом, или рожденный, чтобы умереть . . . . . . . . . . . . . . . . . . . . .211
тактика истратегия инфицирования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .212
ГЛАВА 11. ПЕРЕПОЛНЕНИЕ БУФЕРОВ КАК СРЕДСТВО
БОРЬБЫ СМЕГАКОРПОРАЦИЯМИ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .216
что такое переполняющиеся буфера . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .216
что нам потребуется . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .218
зоопарк переполняющихся буферов— переулок монстров . . . . . . . . . . . . . . .220
три континента: стек, данные икуча . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .225
о технике поиска замолвите слово . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .227
практический пример переполнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .229
пара общих соображений напоследок . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .235
ГЛАВА 12. ULTIMATE ADVENTURE, ИЛИ ПОИСК ДЫР
ВДВОИЧНОМ КОДЕ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .236
прежде чем начать . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .238
необходимый инструментарий . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .239
10
Cодержание
ошибки переполнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .242
глас народа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .249
ГЛАВА 13. СПЕЦИФИКАТОРЫ ПОД АРЕСТОМ,
ИЛИ ДЕРНИ PRINTF ЗА ХВОСТ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .251
функции, поддерживающие форматированный вывод . . . . . . . . . . . . . . . . . . . .252
патч cfingerd’a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .253
источники угрозы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .254
навязывание собственных спецификаторов . . . . . . . . . . . . . . . . . . . . . . . . . . .254
дисбаланс спецификаторов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .260
переполнение буфера(cid:30)приемника . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .260
ГЛАВА 14. SEH НА СЛУЖБЕ КОНТРРЕВОЛЮЦИИ . . . . . . . . . . . . . . . . . . . . . . . . . .262
кратко оструктурных исключениях . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .263
перехват управления . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .267
подавление аварийного завершения приложения . . . . . . . . . . . . . . . . . . . . . . . .269
ГЛАВА 15. ТЕХНИКА НАПИСАНИЯ
ПЕРЕНОСИМОГО SHELL-КОДА . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .270
требования, предъявляемые кпереносимому shell(cid:30)коду . . . . . . . . . . . . . . . . . .271
пути достижения мобильности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .271
саксь имаст дай жесткой привязки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .272
артобстрел прямого поиска впамяти . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .274
огонь прямой наводкой— PEB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .276
раскрутка стека структурных исключений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .277
native API, или портрет встиле «ню» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .278
системные вызовы UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .279
ГЛАВА 16. СЕКС СIFRAME, ИЛИ КАК РАЗМНОЖАЮТСЯ
ЧЕРВИ ВINTERNET EXPLORER’E . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .282
технические подробности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .283
эксплоит . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .284
реанимация эксплоита . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .287
составление собственного shell(cid:30)кода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .288
с презервативом или без . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .288
убить Билла . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .290