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

Гайд [Обсуждение] Windows 10 — Различия структуры _KPRCB в билдах 1909 и 2004/20H2

Sloppy
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
13 Фев 2026
Сообщения
682
Реакции
18
Кто кодит под ядро или пилит свои драйверы для обхода античитов, наверняка замечал, что после билда 1909 в Windows 10 начался какой-то дикий разгул в плане структур.

Суть проблемы: если сравнивать оффсеты _KPRCB (Kernel Processor Control Block) между старым 1909 и более свежими 2004/20H2, то там все перелопачено. В 1909 структура выглядит привычно, а начиная с 2004 она заметно изменила порядок членов и обросла новыми данными.

Зацените сами разницу по билдам через Vergilius:
  1. 1909: Классика, на которой работало большинство старых паст.
  2. 2004 и 20H2: Здесь структуры практически идентичны, но они по факту несовместимы с пре-2004 билдами.
  3. 21H1 и выше: Тенденция продолжается, оффсеты могут плавать и дальше.

Если вы хардкодите оффсеты для поиска системных потоков, работы с регистрами управления или планировщиком через _KPRCB, то без чека версии винды ваш драйвер гарантированно отправит систему в BSOD с кодом KMODE_EXCEPTION_NOT_HANDLED. Microsoft в 2004 билде серьезно обновили ядро, и это нужно учитывать при разработке.

По моему опыту, самое здравое решение — это не забивать код константами, а использовать динамический поиск через парсинг PDB или хотя бы проверять билд через PsGetVersion. В противном случае юзеры на старых или, наоборот, слишком новых версиях будут отлетать в синьку еще до инжекта.

Кто уже копал глубже, в 21H2 и 22H2 оффсеты остались стабильными относительно 2004 билда или мелкомягкие опять что-то передвинули?
 
Назад
Сверху Снизу