СИСТЕМА ПЕРЕХВАТА ВЫЗОВОВ ФУНКЦИЙ WIN32 API Попов Артём, лицей 1580, 11 класс ЦЕЛЬ РАБОТЫ Разработка программного комплекса для перехвата API-функций и автоматизированного создания библиотек перехвата ЗАДАЧИ РАБОТЫ 1) Изучение методов перехвата API функций 2) Разработка оптимального метода перехвата 3) Написание вспомогательных программ для создания библиотек перехвата 4) Создание библиотек перехвата для основных системных модулей СТРУКТУРА WIN32 ИСПОЛНЯЕМОГО ФАЙЛА ИСПОЛНЯЕМЫЙ ФАЙЛ СЕКЦИЯ ИМПОРТА “Заглушка”(stub) Массив с описанием используемых dllбиблиотек Основной PE заголовок Дополнительный PE заголовок Таблица секций Секция кода .text Секция данных .data Секция данных .bss Секция экспорт. функций .edata Секция импорт. функций .idata Другие секции Массив с адресами импортируемых функций (копия 1) Массив с адресами импортируемых функций (копия 2) Массив с описанием имён импортируемых функций СХЕМА РАБОТЫ БИБЛИОТЕКИ ПЕРЕХВАТА EXE файл APISpy32 … call MessageBoxA … Табл. импорта … USER32.DLL _SER32.DLL MessageBoxA _SER32.DLL … int MessageBoxA (…) Dump (…); … USER32:MessageBoxA(...) USER32.DLL … MessageBoxA … До подключения перехватчика После подключения перехватчика ДИСК АЛГОРИТМ РАБОТЫ ФУНКЦИИ ПЕРЕХВАТА НАЧАЛО Поиск в списке перехватываемых функций Функция найдена Нет Да Диск Сохранение информации о вызванной функции Вызов стандартной функции Возврат управления вызывающей программе КОНЕЦ ПРИМЕР ОТЧЁТА БИБЛИОТЕКИ ПЕРЕХВАТА dT = 110 | USER32 : ShowWindow nCmdShow : 5; ); Таймер Функция (hWnd : 0013029A; Параметры dT = 110 | USER32 : GetSystemMetrics (nIndex : 49; ); dT = 120 | USER32 : GetSystemMetrics (nIndex : 50; ); dT = 140 | USER32 : CharNextW (lpsz : (0002070C) “Hell(o), Wor(l)d!”; ); dT = 150 | GDI32 : SelectObject (param0 : 7E0101C5; param1 : 01900010; ); dT = 170 | USER32 : GetWindowLongW (hWnd : 001E021C; nIndex : -20; ); модуля dT = 170Имя | USER32 : GetSysColor (nIndex : 5; ); СПОСОБЫ ОТОБРАЖЕНИЯ ПАРАМЕТРОВ • Для строковых параметров записывается значение указателя и, по возможности, сама строка • Для любых других указателей записывается значение указателя и сами данные, находящиеся по этому адресу • Для всех остальных типов параметров записывается только значение параметра РЕЗУЛЬТАТЫ РАБОТЫ 1. Разработан программный комплекс для создания библиотек перехвата вызовов функций из модулей OC Windows 2. Созданы библиотеки перехвата для модулей USER32 и GDI32 НАПРАВЛЕНИЯ ДАЛЬНЕЙШИХ РАЗРАБОТОК 1. Доработка алгоритма генерации библиотек перехвата до полностью автоматизированного варианта 2. Создание библиотек перехвата для других системных модулей 3. Создание различных эмуляторов -- эмулятора реестра и эмулятора файловой системы