Re[2]: Выявление неправильных адресов
От: Fenir  
Дата: 12.05.10 16:32
Оценка:
Здравствуйте, Alexey Frolov, Вы писали:

AF>А что вы имеете ввиду под "минифильтр иногда возвращает странные адреса"? Можете пример кода набросать и указать где неправильные адреса и как вы к ним обращаетесь?

Обычный коллбак-фильтр реестра. При обработке RegNtQueryValueKey (ссылка на описание класса http://msdn.microsoft.com/en-us/library/ff560991(v=VS.85).aspx). В некоторых случаях ResultLength (A pointer to a variable that receives (from the system) the amount of valid data, in bytes, in the KeyValueInformation buffer) указывает куда-то в глубину космоса.

Обработка полученной информации была взята из RegMon-а, и выглядит в общих чертах так:
switch(KeyValueInformation):
case KeyValueFullInformation:
{
        PKEY_VALUE_FULL_INFORMATION FullInfo = (PKEY_VALUE_FULL_INFORMATION)KeyValueInformation;
        switch(FullInfo->Type) //тип выявляется корректно
        {
    case REG_SZ:    
        case REG_EXPAND_SZ:
        case REG_MULTI_SZ:
        {
             WCHAR s[256];
             s[0]=((PWCHAR)((PCHAR) FullInfo + FullInfo->DataOffset))[0];    //допустим если сделать так, то вылетит БСОД.  
        }    

..............
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.