информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Все любят медSpanning Tree Protocol: недокументированное применениеСетевые кракеры и правда о деле Левина
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Линуксовый ботнет, распространяющийся... 
 Конец поддержки Internet Explorer 
 Рекордное число уязвимостей в 2021 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
::OpenClipboard(NULL); 01.09.06 13:24  Число просмотров: 2189
Автор: Killer{R} <Dmitry> Статус: Elderman
<"чистая" ссылка>
::OpenClipboard(NULL);
HANDLE clp = ::GetClipboardData(CF_TEXT);
printf("clp= '%s'\n",clp);
::CloseClipboard();

Прекрасно работает без GlobalLock ;)
Правда могут быть оказии, например с CF_BITMAP
<programming>
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-2022 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach