информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Атака на InternetПортрет посетителяЗа кого нас держат?
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 На GitHub пугают ложными предупреждениями... 
 Атака на пользователей больших... 
 Notepad++ полгода раздавал зараженные... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
SDT, а что дальше? 01.09.06 12:17  
Автор: LuckyDevil Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Всем доброго!
Изменяю во второй таблице сервисов(win32k), адрес на свою функцию (MyNtUserGetClipboardData), так вот вопрос собственно в следующем, как мне получить доступ к содержимому буфера в режиме ядра?

Заранее спасибо!
А в чем собственно проблема? 01.09.06 12:41  
Автор: Killer{R} <Dmitry> Статус: Elderman
<"чистая" ссылка>
> Всем доброго!
> Изменяю во второй таблице сервисов(win32k), адрес на свою
> функцию (MyNtUserGetClipboardData), так вот вопрос
> собственно в следующем, как мне получить доступ к
> содержимому буфера в режиме ядра?

Вызвать оригинальную NtUserGetClipboardData, она все вернет :)
Так вот проблема заключается в том, что после вызова... 01.09.06 13:13  
Автор: LuckyDevil Статус: Незарегистрированный пользователь
Отредактировано 01.09.06 13:28  Количество правок: 1
<"чистая" ссылка>
>
> Вызвать оригинальную NtUserGetClipboardData, она все вернет
> :)
Так вот проблема заключается в том, что после вызова оригинальной функции NtUserGetClipboardData, я получаю Handle по которой и стоит искать требуемые данные, а как это сделать в режиме ядра, не имею представление, потому как GlobalLock(), которая и возвращает указатель на буфер с содержимым, в ядре соотвественно отсутсвует.
Что можно сделать чтобы попасть к содержимому буфера?

Вот что возвращает оригинальная функция
hLocale: F297FD34; uFmtRet: 13; fGlobalHandle: 1
hData: 00BA0010 <- это и есть хэндл который возвращает NtUserGetClipboardData
::OpenClipboard(NULL); 01.09.06 13:24  
Автор: Killer{R} <Dmitry> Статус: Elderman
<"чистая" ссылка>
::OpenClipboard(NULL);
HANDLE clp = ::GetClipboardData(CF_TEXT);
printf("clp= '%s'\n",clp);
::CloseClipboard();

Прекрасно работает без GlobalLock ;)
Правда могут быть оказии, например с CF_BITMAP
Наверное я не так явно указал, что работаю в режиме... 01.09.06 13:33  
Автор: LuckyDevil Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> ::OpenClipboard(NULL);
> HANDLE clp = ::GetClipboardData(CF_TEXT);
> printf("clp= '%s'\n",clp);
> ::CloseClipboard();
>
> Прекрасно работает без GlobalLock ;)
> Правда могут быть оказии, например с CF_BITMAP

Наверное я не так явно указал, что работаю в режиме ядра(Kernel Mode).
То что возвращает HANDLE clp = ::GetClipboardData(CF_TEXT);, это адрес относящийся к к контексту текущего приложения(User Mode) или я что-то путаю?
Да нет вполне явно 01.09.06 14:22  
Автор: Killer{R} <Dmitry> Статус: Elderman
<"чистая" ссылка>
> Наверное я не так явно указал, что работаю в режиме
> ядра(Kernel Mode).
> То что возвращает HANDLE clp =
> ::GetClipboardData(CF_TEXT);, это адрес относящийся к к
> контексту текущего приложения(User Mode) или я что-то
> путаю?
очень похоже на то. Соответственно ты его можешь и прочитать/записать, не забывая про ProbeForRead/Write ессесно.
Не могу, на ProbeForRead/Write получаю исключение :( 02.09.06 14:37  
Автор: LuckyDevil Статус: Незарегистрированный пользователь
<"чистая" ссылка>
1




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


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