Литмир - Электронная Библиотека

[299] Т.е. лицом, разместившим стороннюю программу на своем сервере

[300] Где ‘x’ режим доступа равный ‘»’ или ‘«’.

[301] А синтаксически манипулятор ничем не отличается от имени файла

[302] Карточка может быть такой же виртуальной, как и сам магазин

[303] Измененные строки выделены жирным шрифтом.

[304] Браузер Internet Exploder поддерживает протокол ресурсов resource protocol, который позволяет загружать ресурсы из файла. Например: res://C:\WINNT\system32\shdoclc.dll/dnserror.htm

[305] Для жертвы локальным, а для злоумышленника - удаленным.

[306] Т.е. в младших адресах

[307] Порядок расположения буферов в оперативной памяти зависит от характера используемого компилятора. Например, Microsoft Visual C++ 6.0 разместит эти переменные в обратном порядке. Т.е. в данном случае к адресу возврата оказывается ближе user, а не pass.

[308] Автор, набравшись наглости, рекомендует свой собственный трехтомник «Образ мышления IDA», посвященный технике дизассемблирования

[309] На сайте разработчика www.idapro.com находится бета-версия пригодная для экспериментов, описанных в этой главе

[310] Ну, впрочем не обязательно именно на начало

[311] Адрес 0x401018 указывает на первую команду, следующую инструкцией вызова функции Auth. Разумеется, такой выбор не единичен, и можно передать управление любой другой ветке программы.

[312] Только для Windows 2000

[313] Для упрощения листинга из файла buff.psw читается только один пароль, а имя пользователя игнорируется.

[314] Ну разве что перебором паролей

[315] Жирным шрифтом выделены аргументы функции.

[316] С этими словами одна путаница… вообще-то слово не равно 16 битам, а разрядности процессора.

[317] Относительные смещения отсчитываются от верхушки кадра стека (смотри комментарии к дизассемблированному листингу программы printf.bug.c в строке 0x401003)

[318] Во избежание дублирования код, сравнивающий пароли, отстутствует

[319] Кстати, а как себя поведет эта конструкция, встретившись со строкой нулевой длины?

[320] Некоторые компиляторы умеют адресовать локальные переменные посредством регистра ESP и значение регистра EBP не сохраняют.

[321] Так иногда программисты называют область памяти, возникающую между двумя соседними переменными, в результате выравнивая одной из них.

[322] Не считая того, что далеко не каждая программа выделит в распоряжение злоумышленника сотню байт памяти

[323] Шутка

[324] А доступ к исполняющимся в данный момент файлам заблокирован

[325] Хотя такие приложения есть и самое короткое из них состоит всего из одной команды: ret.

[326] Падает производительность? Ну и пусть себе падает. Все равно разобраться, почему она падает, слишком сложная задача для рядового администратора, который просто-напросто перезапустит систему, когда обнаружит что «чего-то стала тормозить».

[327] При условии, что программа запущена под управлением Windows 2000.

[328] Sing Extend

[329] Например, код вызова cmd.exe, приведенный в дополнении «Использование стека для вызова командного интерпретатора под Windows NT» не работает в тех случаях, когда значение регистра EDX окажется иным.

[330] Например, компиляторы, защиты

[331] Поскольку блокирует дальнейшее выполнение программы, т.е. «вешает» ее.

[332] Именно двадцатый (т.е. 0x14 в шестнадцатеричной системе исчисления) по счету байт строки попадает в старший байт сохраненного адреса возврата

[333] Для экономии места пришлось пойти на некоторые сокращения и опустить незначащие фрагменты. Полный протокол содержится в файле “/LOG/buff.demo.log”

[334] Что, впрочем, маловероятно, поскольку завершающий строку ноль обычно записывается в старший байт адреса возврата, который равен нулю, а все данные, расположенные ниже (т.е. в старших адресах) остаются нетронутыми.

[335] «Ошибка? Это не ошибка, это системная функция!»

[336] Подробнее об этом рассказано в главе «Атака на Windows NT»

[337] При условии, что скорости перебора у всех алгоритмов идентичны

[338] Разумеется, оптимизированный по скорости, в ущерб размеру

133
{"b":"837821","o":1}