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





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Выходит, мы одновременно в ядро полезли? 13.08.09 06:11  Число просмотров: 2627
Автор: Zef <Alloo Zef> Статус: Elderman
<"чистая" ссылка>
ХРюшу я не лопатил - дебажил все САйсом под 2К, моя писанина под ней работала - и ладно. Но проверки валидности хендлов в ядре 2К, построенные по принципу "Сепулька - см. сепулькарий, сепулькарий - см. сепуление, сепуление - см. сепулька", при любой ошибке заканчивающиеся "синяком", меня рассмешили в серьез и надолго.

Интересно, в ХРюше и Дристе - по другому? Способны они выключить кривой драйвер, выдать сообщение о том, при вызове какой ф-ции каким драйвером произошла ошибка и избавить от необходимости долго и нудно перезагружаться?
<humor>
Амирул, тока не штрафуй - поржем вместе! 12.08.09 16:13  
Автор: Zef <Alloo Zef> Статус: Elderman
<"чистая" ссылка>
Искал на Форуме материалы по кейлоггерам и вот тут, недавно, сравнительно - 02год:
http://bugtraq.ru/cgi-bin/forum.mcgi?type=sb&b=2&m=66982
Нашел у тя такую фразу: "Кроме того виндовс, конечно, MustDie, и в конце концов помрет, но первой помрет именно линейка 9x - она уже и так почти загнулась "
Штрафовать то не за что. Ни формально, ни как либо еще - я ведь действительно это писал 12.08.09 21:16  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Нашел у тя такую фразу: "Кроме того виндовс, конечно,
> MustDie, и в конце концов помрет, но первой помрет именно
> линейка 9x - она уже и так почти загнулась "
Ошибки молодости, все такое :-). А вообще объяснение довольно простое: пока ничего не знал о винде - основывал свое мнение исключительно на том, что "пацаны во дворе сказали" (а они известно, что говорят).

Декабрь 2002 - как раз то время, когда я начал писать первый драйвер и, соответственно, начал разбираться с устройством винды. По мере понимания внутренностей уважение к ней только росло (и сейчас, наверное, несколько занесло в противоположную сторону, лол, хотя с другой стороны теперь то я знаю винду очень хорошо и линупс неплохо, а тогда толком не знал ни того ни другого - так что даже не знаю, понесет ли меня когда нибудь еще куда нибудь).

На всякий случай, напомню, что мой ник восходит к Amiga Rulez :-)
Выходит, мы одновременно в ядро полезли? 13.08.09 06:11  
Автор: Zef <Alloo Zef> Статус: Elderman
<"чистая" ссылка>
ХРюшу я не лопатил - дебажил все САйсом под 2К, моя писанина под ней работала - и ладно. Но проверки валидности хендлов в ядре 2К, построенные по принципу "Сепулька - см. сепулькарий, сепулькарий - см. сепуление, сепуление - см. сепулька", при любой ошибке заканчивающиеся "синяком", меня рассмешили в серьез и надолго.

Интересно, в ХРюше и Дристе - по другому? Способны они выключить кривой драйвер, выдать сообщение о том, при вызове какой ф-ции каким драйвером произошла ошибка и избавить от необходимости долго и нудно перезагружаться?
Какие проверки валидности хендла с багчеками? Ты вообще о чем? 13.08.09 07:41  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> ХРюшу я не лопатил - дебажил все САйсом под 2К, моя
> писанина под ней работала - и ладно. Но проверки валидности
Ну так если ты уже 7 лет ядро лопатишь, что ж вопросы глупые задаешь? :-)

> хендлов в ядре 2К, построенные по принципу "Сепулька - см.
> сепулькарий, сепулькарий - см. сепуление, сепуление - см.
> сепулька", при любой ошибке заканчивающиеся "синяком", меня
> рассмешили в серьез и надолго.
Чушь какая то. Ты чего сказать то хотел (дневники я читал, связи не вижу).

> Интересно, в ХРюше и Дристе - по другому? Способны они
> выключить кривой драйвер, выдать сообщение о том, при
Ну и ты конечно же в своем репертуаре. Дриста, лол. Никто толком не знает почему, но все ТОЧНО уверены, что виста - говно.

> вызове какой ф-ции каким драйвером произошла ошибка и
> избавить от необходимости долго и нудно перезагружаться?
Ога. Монолитное (ок, гибридное) ядро будет тебе авторекавериться после сбоя в драйвере. Да сейчас.
Я ничего по 7 лет не лопачу. 14.08.09 05:52  
Автор: Zef <Alloo Zef> Статус: Elderman
<"чистая" ссылка>
Есть задача - я ее решаю и забываю, как это сделал.


> > хендлов в ядре 2К, построенные по принципу "Сепулька -
> см.
> > сепулькарий, сепулькарий - см. сепуление, сепуление -
> см.
> > сепулька", при любой ошибке заканчивающиеся "синяком",
> меня
> > рассмешили в серьез и надолго.
> Чушь какая то. Ты чего сказать то хотел (дневники я читал,
> связи не вижу).

Щаз, попробую вспомнить... Короче, любая функция (1), возвращающая указатель на объект ядра, получающая хендл как аргумент, вызывает функцию (2) проверки его валидности, внутри этой функции вызывается внутренняя (3) ф-ция ядра (отсутствующая в заголовке), которая берет из хендла, иже суть структура, указатель и пытается прочитать то, на что он указывает. Если указатель инвалидный - получаем "синяк", в котором указан адрес этой 3 (А не моего кода!!! (0)) функции. Если все ОК - еще круче: эта ф-ция 1 вызывается повторно уже из себя ф-цию 3 и получает указатель из нее!

Если сильно насядешь, попробую вытащить это из известных сырцов и выложить здесь. Счас, в силу изложенного в заголовке, я не помню названий ф-ций, а в сырцах их не искал - всю цепочку бредовых вызовов вскрыл САйсом в процессе отладки своего фильтра.

> Ога. Монолитное (ок, гибридное) ядро будет тебе
> авторекавериться после сбоя в драйвере. Да сейчас.

При таком обилии 3д парти кода в ядре и легкостиего подключения, следовало бы предусмотреть такую возможность, хотя бы для фильтров и, уж точно, предусмотреть запоминание каждой ф-цией ядра, способной породить или получить кривой указатель, вместо идиотских проверок распечатку адреса вызвавшего ее кода и списка аргументов (а не вершины стека, чтобы кодеру не напрягать голову ее расшифровкой с риском породить дополнительные ошибки).
Все совершенно не так. Хендл - ни с какой стороны не... 14.08.09 08:21  
Автор: 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-е кольцо, но в большинстве архитектур есть только два режима: юзер и суперюзер.

> хотя бы для фильтров и, уж точно, предусмотреть запоминание
> каждой ф-цией ядра, способной породить или получить кривой
> указатель, вместо идиотских проверок распечатку адреса
> вызвавшего ее кода и списка аргументов (а не вершины стека,
> чтобы кодеру не напрягать голову ее расшифровкой с риском
> породить дополнительные ошибки).
Мдя. Разобрался бы для начала перед тем как нести чепуху. Любой багчек создает крешдамп. В крешдампе не только полный стек упавшего потока, но еще и содержимое регистров на момент падения, содержимое стеков всех других потоков, содержимое всех структур ядра и т.д..
Во, почесал репу и придумал, как должно быть: 14.08.09 08:13  
Автор: Zef <Alloo Zef> Статус: Elderman
<"чистая" ссылка>
Каждая документированная ф-ция, способная при кривых аргументах породить эксепшн, сразу после вызова заполняет специальную структуру, в которой указывает свой ординал и копирует туда вершину стека с адресом возврата и аргументами. Согласись, процедура, не накладная даже для 386. Теперь обработчик ексепшна, буде таковой возникнет, получает по ординалу функции ее имя и список имен переменных и аккуратно на синечке печатает "Ф-ция такая-то, с такими-то аргументами, вызванная 3д пати кодом по адресу такому то вызвала ексепшн такой-то". Добавить флажок, который устанавливается, если ф-ция вызывалась не из 3д пати кода (ф-ция перед вызовом другой ф-ции его устанавливает, 3д пати код - нет) и если флаг установлен - ф-ция вышеупомянутую структуру не трогает. Таким @$разом, имеем всегда указатель на 3д пати код, породивший ошибку.

И, вообще, какого @#$а в Интеллоидах 4 кольца защиты и сегменты с контролем переполнения?! Собсно, ядро должно фунциклировать в 0м кольце, дрова - в 1м, длл-ки общего пользования - во 2м, а юзеркод - в 3м. Вся аллокация памяти должна быть тока в сегментах, а того, кто в ядре разместит буфер в стеке следует вешать за гениталии.

Для мелкомягких рот разинули, так нет - лезут через %опу, а потом обижаются, что все в говне!
Хуже невежества только воинствующее невежество 14.08.09 08:26  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
1




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


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