Страница 133 из 133
[299] Т.е. лицом, разместившим стороннюю программу на своем сервере
[300] Где ‘x’ режим доступа равный ‘»’ или ‘«’.
[301] А синтаксически манипулятор ничем не отличается от имени файла
[302] Карточка может быть такой же виртуальной, как и сам магазин
[303] Измененные строки выделены жирным шрифтом.
[304] Браузер Internet Exploder поддерживает протокол ресурсов resource protocol, который позволяет загружать ресурсы из файла. Например: res://C:WINNTsystem32shdoclc.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] Разумеется, оптимизированный по скорости, в ущерб размеру