Метафизика wmf файлов

команды поддерживают функции обратного вызова


Внимательное чтение SDK (для тех, да только кто ж его читает!) показывает, что некоторые GDI- команды поддерживают функции обратного вызова (они же далее по тексту call-back'и), принимающие в качестве одного из аргументов указатель на пользовательскую процедуру, делающую что-то полезное (например, обрабатывающую ошибки или другие внештатные ситуации). В том же самом SDK говоритсянаписано, что последовательность GDI-команд может быть сохранена в метафайле (Windows Meta-File или, сокращенно, wmf), а затем "воспроизведена" на любом устройстве, например, мониторе или принтере. По отдельности оба этих факта хорошо известны, но долгое время никому не удавалась объединить их в одну картину. Все привыкли считать wmf графическим форматом, содержащим набор данных.,
Возможность внедрения машинного кода как-то упускалось из виду и никакие защитные меры безопасности не предпринимались. Между тем, если записать в метафайл GDI-команду, ожидающую указателя на callback-функцию, размещенную в там же, то при "проигрывании" метафайла она получит управление и выполнит все, что задумано!


Содержание раздела