Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Вопрос Windows 11 24H2: Аномалии KVASCODE и поиск базы ntoskrnl.exe

Sloppy
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
13 Фев 2026
Сообщения
429
Реакции
10
Народ, кто плотно сидит на реверсе ядра под последние билды десятки и одиннадцатой винды, зацените прикол. Пишу кастомный гипервизор под инжект скрытого драйвера, и наткнулся на стену при резолве базы ntoskrnl.exe.

Классическая схема, которой все пользовались годами: читаем LSTAR (который из-за KPTI услужливо указывает на KiSystemCall64Shadow), выравниваем страницу и валим назад по памяти, пока не уткнемся в MZ заголовок. Но на свежих билдах Windows 11 24H2 этот метод начал выдавать какую-то дичь.

Суть проблемы:
Похоже, аллокация пула KVASCODE (где теперь живет теневой системный вызов) разбрасывается по адресному пространству настолько далеко от реального имиджа ядра (область 0xFFFFF805...), что при сканировании назад мы просто проваливаемся в бесконечную пустоту.

Что было замечено на тестах:
  1. Обычный шаг в 0x1000 — это смерть, цикл уходит в бесконечность из-за миллионов итераций.
  2. Даже если прыгать по 2MB (PDE large-page) на 8192 итерации вперед (что кроет около 16 ГБ), база не находится. Между теневым кодом и реальным ядром зияет дыра в 8+ гигабайт неразмеченных страниц.
  3. На некоторых бутах сканер ловит page-fault прямо посреди этого вакуума в VA.

Самое забавное, что через юзермодный NtQuerySystemInformation адрес прилетает мгновенно и он корректный. Но когда ты сидишь внутри VMM exit handler-а, тебе нужно выживать без экспортов и грязных костылей.

Собственно, вопрос к знатокам:
Майки окончательно сломали гарантию того, что ntoskrnl лежит ниже KVASCODE в адресном пространстве? И есть ли сейчас более вменяемый якорь, кроме LSTAR/IDTR, который выживает при активном KPTI и позволяет зацепиться за базу ядра, не брутфорся гигабайты пустоты?

Кто уже сталкивался с таким поведением на 24H2, отпишитесь по своим методам поиска.
 
Назад
Сверху Снизу