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





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Все совершенно не так. Хендл - ни с какой стороны не... 14.08.09 08:21  Число просмотров: 2830
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Щаз, попробую вспомнить... Короче, любая функция (1),
> возвращающая указатель на объект ядра, получающая хендл как
Все совершенно не так. Хендл - ни с какой стороны не является указателем. Это в первом приближении - индекс в per-process таблице хендлов (строго говоря там не чистая таблица, а дерево, но чисто семантически это именно просто ассоциативный массив: handle->object pointer). Причем при попытке сделать ObReferenceObjectByHandle на невалидный хендл (для которого отсутствует запись в таблице) просто приведет к тому, что тебе вернут STATUS_INVALID_HANDLE и всего делов.

> Если сильно насядешь, попробую вытащить это из известных
> сырцов и выложить здесь. Счас, в силу изложенного в
> заголовке, я не помню названий ф-ций, а в сырцах их не
> искал - всю цепочку бредовых вызовов вскрыл САйсом в
> процессе отладки своего фильтра.
:-)
Я тебе и сам могу "всю цепочку бредовых вызовов" расписать. Получение указателя на объект по хэндлу багчекнуться не может. Кроме случаев, когда ты передашь невалидные УКАЗАТЕЛИ (конкретно ObReferenceObjectByHandle принимает указатели на ObjectType - ты должен знать, какой же собственно объект ты пытаешься референснуть, на Object - двойной указатель, через который возвращается собственно указатель на объект, и HandleInformation - в нем по желанию возвращается дополнительная инфа о референснутом объекте). Повторюсь, передачей невалидного хендла завалить винду нельзя. Совсем.

> При таком обилии 3д парти кода в ядре и легкостиего
> подключения, следовало бы предусмотреть такую возможность,
Ходють слухи, что NT сначала планировали делать микроядром. Микроядро это стабильность и ТОРМОЗА. Сделали гибридное: архитектуру модуляризовали (и выделили таки это самое микроядро - Ke*), но засунули все в общее адресное пространство чтоб не тормозило. Если бы не требование кроссплатформенности, на IA в принципе можно было бы запихнуть все third party в 1-е кольцо, но в большинстве архитектур есть только два режима: юзер и суперюзер.

> хотя бы для фильтров и, уж точно, предусмотреть запоминание
> каждой ф-цией ядра, способной породить или получить кривой
> указатель, вместо идиотских проверок распечатку адреса
> вызвавшего ее кода и списка аргументов (а не вершины стека,
> чтобы кодеру не напрягать голову ее расшифровкой с риском
> породить дополнительные ошибки).
Мдя. Разобрался бы для начала перед тем как нести чепуху. Любой багчек создает крешдамп. В крешдампе не только полный стек упавшего потока, но еще и содержимое регистров на момент падения, содержимое стеков всех других потоков, содержимое всех структур ядра и т.д..
<humor> Поиск 






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


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