Skip to content

Fix disconnected Windows system hive and certificate scanning - #3

Merged
acidtmn merged 1 commit into
mainfrom
agent/fix-offline-system-hives
Aug 20, 2026
Merged

Fix disconnected Windows system hive and certificate scanning#3
acidtmn merged 1 commit into
mainfrom
agent/fix-offline-system-hives

Conversation

@acidtmn

@acidtmn acidtmn commented Aug 20, 2026

Copy link
Copy Markdown
Owner

Что исправлено

  • заменён RegLoadAppKey на временный системный mount через RegLoadKey для SOFTWARE, SYSTEM и неактивных NTUSER.DAT;
  • добавлено гарантированное закрытие handle и RegUnLoadKey с проверкой результата;
  • исправлен тот же механизм для очистки неактивных профилей;
  • добавлено чтение сериализованных открытых сертификатов из AppData\Roaming\Microsoft\SystemCertificates\My\Certificates;
  • реестровые пользовательские, policy и машинные Personal stores продолжают сканироваться;
  • закрытые ключи, Microsoft\Crypto, контейнеры CryptoPro и токены не читаются;
  • добавлена кнопка копируемой диагностики, автоматически открывающаяся после пустого/невалидного сканирования;
  • добавлен безопасный CLI --offline-scan <path> --report <path>;
  • диагностический текст сохраняется вместе с офлайн-резервной копией.

Корневая причина

RC1 снова вернул ноль продуктов и сертификатов на подключённом диске Windows 7 x86. Локальное воспроизведение показало:

  • RegLoadAppKey на корректной сохранённой копии системного HKLM\SOFTWARE возвращает ERROR_BADDB (1009);
  • временный RegLoadKey открывает тот же hive, нужная ветка читается, RegUnLoadKey завершается успешно;
  • открытые сертификаты текущего профиля физически находились в файловом SystemCertificates store, а не в NTUSER.DAT.

Проверка

  • модульные тесты — успешно;
  • безопасный live integration scan: 2 продукта, 1 профиль, 7 открытых сертификатов, 26 подтверждённых целей;
  • искусственный disconnected-Windows fixture: 2 продукта, 4 значения лицензии, 1 неактивный профиль, 7 файловых открытых сертификатов;
  • SOFTWARE и SYSTEM mounts выгружены с кодом 0;
  • после тестов в HKU не осталось CryptoProCleanup_Offline_*;
  • MSVC C++ static analysis — без предупреждений;
  • внутренние SHA-256 пакета проверены;
  • чувствительные тестовые hive/сертификаты удалены после проверки.

Офлайн-очистка реального пользовательского диска не выполнялась. Перед ней требуется повторный read-only тест на том же Windows 7 x86 диске.

@acidtmn
acidtmn marked this pull request as ready for review August 20, 2026 04:03
@acidtmn
acidtmn merged commit 27453e6 into main Aug 20, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant