1

Я пытаюсь два разных инструмента для редактирования и удаления всех узлов из куста реестра Windows:

  • chntpw который был разработан для редактирования файлов паролей (SAM), но теперь имеет интерактивную оболочку для редактирования файлов реестра.

  • hivex который является более современным и в первую очередь предназначен для редактирования реестра общего назначения.

Просто чтобы иметь представление о различиях между этими программами, я взял свой BCD-файл (который используется диспетчером загрузки Windows) и использовал обе эти программы для удаления всех узлов.

Как и ожидалось, полученные файлы имеют одинаковый размер, но не идентичны. Когда я открывал каждый с помощью hivex или chntpw , оба редактора отображали 0 узлов для обоих файлов.

Однако когда я открываю hivex , файл, который предположительно имеет 0 узлов, я вижу оставшиеся данные из его предыдущего состояния.

И наоборот, результат chntpw не содержит никаких остаточных данных от узлов.

Сейчас я изучаю формат файла реестра, поэтому я должен спросить:

Если бы я использовал один, какой я должен выбрать? Я, очевидно, хочу максимально реалистично смоделировать поведение синтаксического анализатора / писателя Microsoft (я хочу быть в состоянии обмануть их). Так же как и оставшиеся данные имеют какое-то значение; выдает ли менеджер загрузки Windows какие-либо ошибки, если я использую hivex для создания искусственного BCD-файла?

PS: Вопрос не зависит от моей основной цели, которая, я надеюсь, была прояснена: я хочу исправить / создать файл BCD (Boot Config Data) без использования официального установщика Windows. Так что если у вас есть какие-либо советы в этом направлении, не стесняйтесь давать.

1 ответ1

2

Hivex явно разработан, чтобы не удалять старые данные из файла. Это важная цель, поскольку формат куста реестра недокументирован, и никто, кроме MSFT, не понимает, как он работает, и мы не хотим уничтожать данные в процессе внесения изменений.

Обратите внимание, это не означает, что hivex не может удалять узлы. Вы можете удалить узлы через API, и эти узлы не будут видны при обычных вызовах реестра Windows, но данные не удаляются / удаляются / усекаются из базового файла.

Если вам нужен пустой файл куста, я предлагаю начать с пустого файла куста. В исходном коде hivex есть пустой файл куста (называемый «минимальным»), который вы можете использовать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .