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





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
Наверное я не так явно указал, что работаю в режиме... 01.09.06 13:33  Число просмотров: 2171
Автор: 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) или я что-то путаю?
<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-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach