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

       

реакция Irfan Viewer'а на wmf-эксплоит, shell-код получает управление!!!


Но даже при "ручной" работе с GDI необходимо очень сильно постараться, чтобы выполнить код внутри wmf-файла. Возьмем exploit.wmf, прилагаемый к статье, и выдранный из wmf-checker'а от Ильфака и попробуем вывести его на экран функцией PlayMetaFile, как показано в листинге 1. Под W2K SP4 (другие системы не проверял) "честные" wmf-файлы проигрываются нормально выводятся, подтверждая, что программа написана правильно, но shell-код, внедренный в exploit.wmf,

не получает управления,! shell-код не выполняется, а ведь должен… Но стоит заменить контекст окна, контекстом специально созданного метафайла, как на экран выпрыгивает диалоговое окно, вызываемое shell-кодом:

DC = CreateEnhMetaFile(0, 0, 0, "demo"); // проигрываем метафайл в другой метафайл

h_meta = GetMetaFile("exploit.wmf"); PlayMetaFile(DC, h_meta);



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