|
ПРОЕКТЫ ДАННОЙ КАТЕГОРИИ Брут для подключения к сети Wifi Доработать прошивку Dlink DSM-520 Написать несложный десктопный парсер Все проекты данной категории - 6 TOP 10 ФРИЛАНСЕРОВ Разработка системного ПО
|
CreateActCtx From MemoryРазработка системного ПО, Прочее
[Отредактировано: 13.10.2008 в 21:39] Если кратко, то задача состоит в том, чтобы написать функцию HANDLE CreateActCtx(LPCVOID pManifest, DWORD dwSize), которая бы не обращалась к csrss.exe, но, тем не менее, отдавала корректный HANDLE, который бы нормально обрабатывался прочими функциями, работающими с activation context. Дело в том, что создание activation context вовлекает в себя вызов csrss.exe, а это неудобно, когда хочется создать контекст непосредственно из памяти. Например, хочется создавать контекст динамически, не используя временные файлы. Сейчас это невыполнимо. Хорошая новость состоит в том, что HANDLE, который возвращает стандартный CreateActCtx(ACTCTX) - это указатель на некий буфер, который создается / заполняется частично в csrss.exe. Все прочие функции, вроде ActicateActCtx, используют только этот буфер. Таким образом, для решения задачи необходимо выделить ту часть работы, которую делает csrss.exe, и делать ее в контексте вызывающего процесса. Выяснилось, что csrss.exe вызывает недокументированную функцию sxs.dll!SxsGenerateActivationContext, которая выполняет значительную часть работы. Вероятно, решение должно использовать эту функцию. От исполнителя требуется любовь к дизассемблированию, радость от копания во внутренностях windows. Предполагается, что будет найден момент, когда процесс вызывает CsrClientCallServer, будут разобраны параметры, далее исследовано, как эти параметры обрабатывает csrss.exe, как именно вызывает sxs.dll!SxsGenerateActivationContext. Кроме того, известно, что VMWare ThinApp (aka thinstall) умеет создавать контексты прямо из памяти.
Предложения отсутствуют. |