Нужна помощь по следующеу вопросу. Необходимо написать код в kernel-mode, который будет узнавать подписан ли исполняемый файл. Под подписан имеется ввиду есть ли у него подписка Microsoft (Authenticode). Все способы, что я нашел в основном используют эзермодную библиотеку Wintrust.dll. А как сделать это в кернел моде?
Вот и отлично, формат открытый, осталось все это дело теперь реализовать в ядре. Думается все-таки сделать это в r3, т.к. кода там немерянно и дублировать его в r0 ИМХО не имеет смысла.
Forever Для ядра не знаю, а для user mode можно взать пример кода отсюда http://roceun.tistory.com/38
Данный документ я уже видел и прочитал его. ТАм содержится общая информация о подписке исполняемых файлов. Есть конечно и словестное описание алгоритма проверки целостности файла. Однако если при реализации данного алгоритма придется мимоходом написать алгоритм хеш функций SHA1 и MD5, и возможно еще много чего(я даже не говорю о разборе PE). Так что сами понимаете реализация будет не очень простая, особенно если учесть, что это все нужно написать в ядре. Фактически это дублирование кода Wintrust.dll. Есть возможность взять исходники wintrust.dll для WINE. Однако там кода немеряно, и притом большая часть лишняя для меня. Здесь еще нужно учесть, что проект для которого все это нужно написать пишется для Vista SP1 и Server 2008. Все что версией ниже поддерживаться не будет (включая Vista без сервиспака). Возникала идея заюзать CI.dll - библиотека ядра, которую загрузчик ОС использует для проверки целостности модулей ядра, однако она не документирована, и даже не понятно подойдет ли это мне. Так что лучший на сегодня вариант - это доверить проверку юзермодному приложению.
Этот исходник имеется в наличии в MSDN. Именно его я использовал как отправную точку для поиска. Но все, к чему это привело - описано выше.