информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Где водятся OGRыАтака на Internet
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / operating systems
Имя Пароль
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Вызов сервисов Win32k.sys из Kernel-mode драйвера 11.02.03 14:34  Число просмотров: 1837
Автор: cb <cb> Статус: Member
<"чистая" ссылка>
> Что интересно - компоненты ядра системы сами пытаются
> вызывать сервисы из диапазона номеров win32k, но поскольку
> дескриптора в основной таблице нет - благополучно
> обламываются,

любопытно...
А какие именно сервисы вызываются? пример можешь привести?

> В результате выяснилось, что в большинстве случаев вызов, как
> ему и положенно, обламывался (ЕАХ=0), но иногда
> благополучно возвращал virtual-key code.
> Это и есть обещаная нестабильность? Если у кого-то есть
> объяснение этому - просьба меня просветить... :) Есть
> мысль, что можно не мудрить с SDT, а просто стабилизировать
> единично возникающий ненулевой результат... :)

может быть вызов завершался успешно когда он был сделан в контексте нужного процесса? если да томножно попробовать использовать KeAttachProcess....

> Проблема на данный момент - найти нужное окно по заголовку,
> и ввести в него определённый текст с учётом текущей
> раскладки клавиатуры.
> Понятно, что на уровне приложения такое делается просто, но
> вот надо чтоб всё было сделано в коде драйвера.

логин/пароль что-ли? ;)))

можно попробовать такой путь:
переключиться в контекст нужного процесса (KeAttachProcess), выделить память в пользовательской области (NtAllocateVirtualMemory), скопировать в выделенный кусок заранее подготовленный код, найти UserMode поток в этом процессе - переключить его на исполнение скопированного кода, после чего вырнуть поток в исходное состояние (вместо нахождения существующего потока можно попробовать создать свой)... ну а какой код ты положишь в эту память - тебе видней...

выглядит все это дико и я не уверен в "реализуемости" некоторых шагов, плюс видимо потребуется знание недокументированных структур описывающих поток, но попробовать можно... мне кажется я где-то встречал реализацию подобной вещи....

cb.
<operating systems> Поиск 






Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach