Добрый день.
Итак предыстория проблемы.
Необходимо, каким-то образом, сделать снимок экрана вместе с overlay поверхность(ями).
Потратил очень много времени на посик информации по данной теме — вообще ничего не нашёл.
Путём тщательного изучения программы, которая умеет "фотографировать" overlay и дизассемблирования её DLL удалось выяснить, что она ставит глобальных хук на клавиатуру, тем самым отслеживая нажатие клавиши Print Screen, и одновременно внедряясь в адресное пространство процесса, который имеет фокус в данный момент...
Далее библиотека производит какие-то монимуляции (уже в адресном пространстве жертвы) (какие точно — не знаю, ну не силён я в чтении ассемблерных команд и в конце концов каким-то образом получает интерфейс IDirectDraw, т.к. далее идёт вызовы EnumSurfaces. Или же вызывается самописная EnumSurfaces... не знаю.
К слову этой программе удаётся перехватить оверлей только если "приложение-жертва" активно, т.е. в нём срабатывает хук на Print Screen, так что это только подтверждает "теорию внедрения".
А теперь проблема — как добраться до таблицы интерфейсов какого-либо процесс, с целью обнаружения там интерфейсов на IDirectDraw?
Если у кого есть советы, или же кто сталкивался с такой проблемой — пишите.