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





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

Вызвать оригинальную NtUserGetClipboardData, она все вернет :)
<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-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach