Комментарии 3
Это значит, что, например, наличие ключаInprocServer32
в HKCR приоритетнее, чем ключLocalServer32
в HKCU.
В HKCU проверка проходит раньше, чем в HKCR.
Что за чепуха. Сами же написали, что HKCR виртуальный куст, поэтому никаких "раньше" быть не может (между HKCU и HKCR, так как первое часть второго). Это самое обычное наследование свойств. Сначала читаются свойства из HKLM, затем на них накладываются свойства (и перекрывают, а если нечего перекрывать, то просто добавляются) из HKCU. Итоговое дерево называется HKCR.
Верно, HKCR состоит из HKLM+HKCU. Когда вы запускаете какой-либо COM-объект, то поиск осуществляется в двух ветках по очереди: в HKCU, а затем HKCR. Если в HKCU значение не найдено, то в HKCR будет хранится значение из HKLM. То есть по сути можно заменить "InprocServer32
в HKLM приоритетнее, чем ключ LocalServer32
в HKCU." Но напрямую не осуществляется запрос в HKLM, вместо этого используется HKCR. Чтобы увидеть о чем я говорю запустите Procmon, обратитесь к какому-либо COM-объекту и вы увидите данные события в этой очередности.
Это значит, что, например, наличие ключа
InprocServer32
в HKCR приоритетнее, чем ключLocalServer32
в HKCU.
Что касательно этой фразы, то исходные данные такие: есть COM-объект, у него заданы InprocServer32 в HKLM и LocalServer32
в HKCU. В HKCR тогда будут и InprocServer32, и LocalServer32. Изначально будет поиск InprocServer32 напрямую в HKCU, но там он будет не найден по понятным причинам. Далее будет осуществляться поиск InprocServer32 в HKCR(но считай в HKLM). И по итогу будет выбран именно он для использования, хотя при всем этом в
HKCU был еще задан LocalServer32.
Тайная жизнь COM: как устроен Component Object Model в Windows и стратегии выбора объекта для атаки