ZwEnumerateKey и скрытие "ветки"

Тема в разделе "WASM.NT.KERNEL", создана пользователем UnameR, 11 янв 2012.

  1. UnameR

    UnameR New Member

    Публикаций:
    0
    Регистрация:
    28 дек 2010
    Сообщения:
    4
    Приветствую.

    Нужно спрятать раздел реестра. (не малварь, а даже наоборот, защита личных данных)

    Перехватил ZwEnumerateKey, ловлю момент прохождения "моего" раздела через функцию.
    Вот уже вроде и указатель на KeyInformation с нужной "веткой", но что делать дальше то?

    1. Если занулить буфер и вернуть ResultLength = 0, а NTSTATUS = STATUS_SUCCESS, мы получим хвост в виде раздела с "пустым" именем и содержащий в себе ссылку на раздел в котором находится.(эдакий бесконечный раздел). - некрасиво

    2. Если вернуть STATUS_INVALID_PARAMETER или STATUS_NO_MORE_ENTRIES перечисление разделов естественно обрывается и у нас получается пропажа всех разделов после моего включительно. - вообще не вариант

    3. Если подменять Index:
    3.1. Index++(единожды) не вариант, будет 2 одинаковых раздела.
    3.2. Если делать сдвиг всех последующих разделов на +1, то существует вероятность, что в данный момент произойдёт точно такой же запрос и ветка с индексом 0 не будет отображена. (нужно контролировать откуда идёт вызов) - можно, но хотелось бы не усложнять настолько.

    Кто-нибудь знает варианты попроще?
     
  2. T800

    T800 Member

    Публикаций:
    0
    Регистрация:
    7 дек 2006
    Сообщения:
    293
    Адрес:
    Moscow
    UnameR
    Посмотрите http://www.codeproject.com/KB/applications/NtRegEdit.aspx