СИСТЕМА ПЕРЕХВАТА ВЫЗОВОВ ФУНКЦИЙ WIN 32 API Попов Артём, лицей 1580, 11 класс ЦЕЛЬ РАБОТЫ Разработка программного комплекса для перехвата API-функций и автоматизированного создания библиотек перехвата ЗАДАЧИ РАБОТЫ 1) Изучение методов перехвата API функций 2) Разработка оптимального метода перехвата 3) Написание вспомогательных программ для создания библиотек перехвата 4) Создание библиотек перехвата для основных системных модулей
СТРУКТУРА WIN 32 ИСПОЛНЯЕМОГО ФАЙЛА ИСПОЛНЯЕМЫЙ ФАЙЛ СЕКЦИЯ ИМПОРТА “Заглушка”(stub) Массив с описанием используемых dllбиблиотек Основной PE заголовок Дополнительный PE заголовок Таблица секций Секция кода. text Секция данных. data Секция данных. bss Секция экспорт. функций. edata Секция импорт. функций. idata Другие секции Массив с адресами импортируемых функций (копия 1) Массив с адресами импортируемых функций (копия 2) Массив с описанием имён импортируемых функций
СХЕМА РАБОТЫ БИБЛИОТЕКИ ПЕРЕХВАТА APISpy 32 EXE файл … call Message. Box. A … Табл. импорта … USER 32. DLL _SER 32. DLL Message. Box. A _SER 32. DLL … int Message. Box. A (…) Dump (…); … USER 32: Message. Box. A(. . . ) USER 32. DLL … Message. Box. A … До подключения перехватчика После подключения перехватчика ДИСК
АЛГОРИТМ РАБОТЫ ФУНКЦИИ ПЕРЕХВАТА НАЧАЛО Поиск в списке перехватываемых функций Функция найдена Нет Да Диск Сохранение информации о вызванной функции Вызов стандартной функции Возврат управления вызывающей программе КОНЕЦ
ПРИМЕР ОТЧЁТА БИБЛИОТЕКИ ПЕРЕХВАТА d. T = 110 | USER 32 : Show. Window (h. Wnd : 0013029 A; n. Cmd. Show : 5; ); Таймер Функция Параметры d. T = 110 | USER 32 : Get. System. Metrics (n. Index : 49; ); d. T = 120 | USER 32 : Get. System. Metrics (n. Index : 50; ); d. T = 140 | USER 32 : Char. Next. W (lpsz : (0002070 C) “Hell(o), Wor(l)d!”; ); d. T = 150 | GDI 32 : Select. Object (param 0 : 7 E 0101 C 5; param 1 : 01900010; ); d. T = 170 | USER 32 : Get. Window. Long. W (h. Wnd : 001 E 021 C; n. Index : -20; ); Имя модуля d. T = 170 | USER 32 : Get. Sys. Color (n. Index : 5; ); СПОСОБЫ ОТОБРАЖЕНИЯ ПАРАМЕТРОВ • Для строковых параметров записывается значение указателя и, по возможности, сама строка • Для любых других указателей записывается значение указателя и сами данные, находящиеся по этому адресу • Для всех остальных типов параметров записывается только значение параметра
РЕЗУЛЬТАТЫ РАБОТЫ 1. Разработан программный комплекс для создания библиотек перехвата вызовов функций из модулей OC Windows 2. Созданы библиотеки перехвата для модулей USER 32 и GDI 32 3. НАПРАВЛЕНИЯ ДАЛЬНЕЙШИХ РАЗРАБОТОК 4. Доработка алгоритма генерации библиотек перехвата до полностью автоматизированного варианта 5. Создание библиотек перехвата для других системных модулей 6. Создание различных эмуляторов -- эмулятора реестра и эмулятора файловой системы