Похожую тему не нашел. Так что ногами не пинать. Смысл следующий - перехватываю NtEnumerateKey/NtEnumerateValueKey - в regedit все ок, нужного ключа нет. Открываю msconfig - нужный ключ во вкладке Автозагрузка остаетается. В msconfig при создании списка записей юзаются: RegQueryInfoKeyW - получение кол-ва ключей, далее в цикле опрашивается функция RegEnumValueW. Код (Text): ... if ( !ATL__CRegKey__Open(hKey, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", 0x20019u) ) { if ( !RegQueryInfoKeyW(v16, 0, 0, 0, 0, 0, 0, &cValues, 0, 0, 0, 0) ) { for ( dwIndex = 0; dwIndex < cValues; ++dwIndex ) { cbData = 260; if ( !RegEnumValueW(v16, dwIndex, &ValueName, &cbData, 0, 0, 0, 0) ) ... Насколько нашел в нете (http://www.csrrt.org/wiki/index.php?title=Malware/Common_used_ACCESS_MASKS_-_registry&redirect=no и в других источниках) соответствие RegEnumValueW -> NtEnumerateValueKey тупо в NtEnumerateValueKey ставлю return STATUS_INVALID_PARAMETER - в regedit все ключи пропадают из ветки. В msconfig никаких изменений - все ключи на месте. Подскажите соответствие функции RegEnumValueW? или где я ошибся?
emptyHook, Протрэйсить msconfig лень? Соответствие RegEnumValueW()->NtEnumerateValueKey() верное, может там какой ещё механизм используется?
Открываем advapi32 в IDA и смотрим во что превращаются вызовы. Или вы дизассемблировать не умеете? Ну что за вопросы пошли, стыдно должно быть