Читаем Защита от хакеров корпоративных сетей полностью

Программа поиска точек перехода Findjmp. На рисунке 8.23 представлена небольшая программа, которая сканирует двоичный код динамически подключаемой библиотеки. Входными параметрами программы являются имя динамически подключаемой библиотеки и название регистра из командной строки. Программа ищет характерные для поддерживаемых способов комбинации шестнадцатеричных цифр в размещенном в памяти двоичном коде заданной динамически подключаемой библиотеки. Она поддерживает способы передачи управления по только что записанному в стек адресу (push return), по содержимому регистра (call register) и явный переход по содержимому регистра (jump register).

Рис. 8.23. Исходный текст программы Findjmp.c

Программа ищет в динамически подключаемой библиотеке команды перехода, которые можно использовать в своих целях. Вполне вероятно, что для экспериментов с переполнением буфера потребуется подходящее место для передачи управления специальному коду, адрес которого загружен в какой-либо регистр. Программа подскажет потенциальное место загрузки в регистр EIP адреса нужной программы.

Программа легко адаптируется для поиска других способов перехода или образцов программного кода в динамически подключаемой библиотеке DLL. В настоящее время программа поддерживает поиск следующих команд:

1) jmp reg;

2) call reg;

3) push reg / ret.

Всех их объединяет общий результат: в регистр EIP загружается содержимое регистра reg. Программа также распознает следующие регистры:

• EAX;

• EBX;

• ECX;

• EDX;

• ESI;

• EDI;

• ESP;

• EBP.

Программа компилируется как консольное приложение на любой платформе, поддерживающей интерфейс 32-разрядных Windows-приложений. Приложение может быть найдено в разделе сайта издательства www.syngress.com/solutions, посвященном книге.

Подпрограмма usage выводит в стандартное устройство вывода (консоль или принтер) краткую инструкцию по использованию программы.

Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже