Ntoskrnl.exe - ntoskrnl.exe
Эта статья может быть слишком техническим для большинства читателей, чтобы понять.Октябрь 2014 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
В вычислениях ntoskrnl.exe (Короче для Windows NT Операционная система ядро исполняемый файл ), также известный как образ ядра, обеспечивает ядро и исполнительные уровни Microsoft Пространство ядра Windows NT и отвечает за различные системные службы, такие как аппаратная абстракция, процесс и управление памятью, что делает его фундаментальной частью системы. Он содержит тайник диспетчер, исполнительный орган, ядро, контрольный монитор безопасности, диспетчер памяти и планировщик (Диспетчер).[1]
Обзор
Эта секция нужны дополнительные цитаты для проверка.Апрель 2014 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Этот системный двоичный файл не родное приложение (в том, что это не связано с ntdll.dll
), вместо стандартного 'start' входная точка сама по себе функция, которая вызывает архитектура -независимая функция инициализации ядра. Хотя ntoskrnl.exe не связан с ntdll.dll
, это связано с bootvid.dll
, hal.dll
и kdcom.dll
. Поскольку для этого требуется статическая копия объектов среды выполнения C, от которых он зависит, размер исполняемого файла обычно составляет около 2 МБ.
Всего существует четыре файла образа ядра для каждой версии Windows и два файла образа ядра для каждой системы Windows. Мультипроцессор или же однопроцессор файлы выбираются во время установки, а файлы PAE или не-PAE выбираются с помощью boot.ini или опции BCD в соответствии с особенности процессора.[а]
Имя файла | Поддерживает SMP | Поддерживает PAE |
---|---|---|
ntoskrnl.exe | Нет | Нет |
ntkrnlmp.exe | да | Нет |
ntkrnlpa.exe | Нет | да |
ntkrpamp.exe | да | да |
Подпрограммы в ntoskrnl используют префиксы в своих именах, чтобы указать, в каком компоненте ntoskrnl они определены. В следующей таблице перечислены некоторые из них.
Префикс | Смысл |
---|---|
Копия | Кеш файловой системы[2] |
См | Configuration Manager, сторона режима ядра Реестр Windows |
CSR | функции, используемые для взаимодействия с процессом подсистемы Win32, csrss.exe (csrss означает подсистему времени выполнения клиент / сервер) |
Dbg | вспомогательные функции отладки, такие как точка останова программного обеспечения |
Бывший | Исполнительная система Windows, «внешний слой» Ntoskrnl.exe |
Опыт | Частный исполнитель Windows: подпрограммы в пределах исполнительного уровня, которые не экспортируются для вызова за пределы исполнительного (p = частный) |
FsRtl | библиотека времени выполнения файловой системы[3] |
Ио | Менеджер ввода / вывода[4] |
Ke | основные процедуры ядра[5] |
Ki | подпрограммы в ядре, которые не экспортируются для вызова извне ядра (я = внутренний) |
Ks | потоковая передача ядра |
Ldr | функции загрузчика для обработки файлов PE |
Lpc | Вызов местной процедуры, внутренний, недокументированный, межпроцессный механизм или механизм передачи сообщений пользователя / ядра |
Lsa | Местный орган безопасности |
Ми | процедуры управления памятью не экспортируются для вызова вне диспетчера памяти (i = внутренняя) |
Мм | управление памятью |
Nls | Nls для поддержки родного языка (аналогично кодовым страницам). |
Обь | Диспетчер объектов |
Pfx | Pfx для обработки префиксов. |
По | Plug-and-play и управление питанием[6] |
Ps | Управление процессами и потоками |
RTL | Библиотека времени исполнения. Это включает в себя множество служебных функций, которые могут использоваться собственными приложениями, но не связаны напрямую с поддержкой ядра. |
Rtlp | Внутренние процедуры библиотеки времени выполнения, которые не экспортируются из ядра. |
Se | безопасность |
Vf | Средство проверки драйверов |
Vi | Подпрограммы проверки драйверов не экспортируются для вызова вне программы проверки драйверов |
Zw | Nt или Zw - это системные вызовы, объявленные в ntdll.dll и ntoskrnl.exe. При вызове из ntdll.dll в пользовательском режиме эти группы почти одинаковы; они переходят в режим ядра и вызывают эквивалентную функцию в ntoskrnl.exe через SSDT. При вызове функций непосредственно в ntoskrnl.exe (возможно только в режиме ядра) варианты Zw обеспечивают режим ядра, а варианты Nt - нет.[7] |
Инициализация
Когда ядро получает управление, оно получает указатель на структуру в качестве параметра. Эта структура передается загрузчик и содержит информацию об оборудовании, путь к файлу реестра, параметры ядра, содержащие предпочтения загрузки или параметры, которые изменяют поведение ядра, путь к файлам, загружаемым загрузчиком (СИСТЕМА
Куст реестра, nls для преобразования кодировки символов и шрифта vga).[8] Определение этой структуры можно получить с помощью отладчика ядра или загрузив его из базы данных символов Microsoft.[9][страница нужна ]
в архитектура x86, ядро получает систему уже в защищенном режиме, с GDT, IDT и TSS готовы.[требуется дальнейшее объяснение ] Но поскольку он не знает адреса каждого из них, он должен загружать их один за другим, чтобы заполнить ПЦР структура.[жаргон ]
Основная точка входа ntoskrnl.exe выполняет некоторую системно-зависимую инициализацию, затем вызывает системную независимую инициализацию, а затем входит в цикл ожидания.[противоречивый ]
Обработка прерываний
Эта секция нужны дополнительные цитаты для проверка.Апрель 2014 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Современные операционные системы используют прерывания вместо опроса портов ввода-вывода для ожидания информации от устройств.
в архитектура x86, прерывания обрабатываются с помощью таблицы диспетчеризации прерываний (IDT). Когда устройство вызывает прерывание и в флаг прерывания (IF) в Регистр ФЛАГОВ установлено, аппаратное обеспечение процессора ищет обработчик прерывания в записи таблицы, соответствующей номеру прерывания, в которое, в свою очередь, было преобразовано из IRQ к ПОС чипы или более современное оборудование, APIC. Обработчики прерываний обычно сохраняют некоторое подмножество состояния регистры перед обработкой и восстановите их до исходных значений, когда закончите.
Таблица прерываний содержит обработчики аппаратных прерываний, программных прерываний и исключений. Для некоторых IA-32 версии ядра, один из примеров такого обработчика программных прерываний (их много) находится в записи 2E таблицы IDT.16 (шестнадцатеричный; 46 дюйм десятичный ), используется в язык ассемблера в качестве INT 2EH
за системные вызовы. В реальной реализации вход указывает на внутренний подпрограмма названный (согласно символ информация опубликована Microsoft) KiSystemService
. Для более новых версий используются различные механизмы, использующие SYSENTER
инструкция И в x86-64 SYSCALL
вместо этого используются инструкции.
Одна примечательная особенность обработки прерываний NT заключается в том, что прерывания обычно условно маскируются на основе их приоритета (называемого «IRQL»), вместо того, чтобы отключать все IRQ с помощью флага прерывания. Это позволяет различным компонентам ядра выполнять критические операции без обязательной блокировки служб периферийных устройств и других устройств.[10]
Менеджер памяти
Эта секция нужны дополнительные цитаты для проверка.Апрель 2014 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Microsoft Windows разделяет виртуальное адресное пространство на два региона. Нижняя часть, начиная с нуля, создается отдельно для каждого процесса и доступна как из режима пользователя, так и из режима ядра. Прикладные программы выполняются в процессах и предоставляют код, работающий в пользовательском режиме. Верхняя часть доступна только из режима ядра и, за некоторыми исключениями, создается только один раз в масштабе всей системы. Ntoskrnl.exe отображается в этой области, как и несколько других компонентов режима ядра. Эта область также содержит данные, используемые кодом режима ядра, такие как кучи режима ядра и кэш файловой системы.
Арка | MmHighestUserAddress | MmSystemRangeStart |
---|---|---|
x86[b] | 0x7fffffff | 0x80000000 |
РУКА | 0x7fffffff | 0x80000000 |
x86-64 | 0x000007ff'ffffffff | 0xffff8000'00000000 |
Весь диапазон адресов физической памяти (ОЗУ) разбит на множество небольших (обычно по 4 КБ) блоков. Некоторые свойства каждого блока хранятся в структурах, называемых таблица страниц записи, которые управляются ОС и доступны аппаратному обеспечению процессора. Таблицы страниц организованы в древовидную структуру, а физический номер страницы таблицы верхнего уровня хранится в регистре управления 3 (CR3).
Реестр
Реестр Windows - это хранилище информации о конфигурации и настройках операционной системы и другого программного обеспечения, например приложений. Его можно рассматривать как файловую систему, оптимизированную для небольших файлов.[11] Однако доступ к нему осуществляется не через семантику, подобную файловой системе, а через специализированный набор API, реализованных в режиме ядра и доступных для пользовательского режима.
Реестр хранится на диске в виде нескольких разных файлов, называемых «кустами». Один из них, системный куст, загружается в начале последовательности загрузки и предоставляет информацию о конфигурации, необходимую на тот момент. Дополнительные кусты реестра, содержащие данные, относящиеся к программному обеспечению и пользователю, загружаются на более поздних этапах инициализации системы и при входе пользователя в систему соответственно.
Драйверы
Список драйверов для загрузки с диска берется из Услуги
ключ текущего набора элементов управления ключ в СИСТЕМА
куст реестра. В этом ключе хранятся драйверы устройств, процессы ядра и пользовательские процессы. Все они вместе называются «услугами» и все хранятся в одном месте.
Во время инициализации или по запросу на загрузку драйвера ядро просматривает это дерево в поисках служб, помеченных как службы ядра.
Смотрите также
Примечания
Рекомендации
- ^ Руссинович, М: Советы и мелочи по внутреннему устройству системы, Информация о SysInternals
- ^ Корпорация Майкрософт (2009). «Подпрограммы диспетчера кэша». Корпорация Майкрософт. Получено 2009-06-13.
- ^ Корпорация Майкрософт (2009). «Подпрограммы библиотеки времени выполнения файловой системы». Корпорация Майкрософт. Получено 2009-06-13.
- ^ Корпорация Майкрософт (2009). «Подпрограммы диспетчера ввода-вывода». Корпорация Майкрософт. Получено 2009-06-13.
- ^ Корпорация Майкрософт (2009). «Процедуры поддержки библиотеки ядра». Корпорация Майкрософт. Получено 2009-06-13.
- ^ Корпорация Майкрософт (2009). «Программы Power Manager». Корпорация Майкрософт. Получено 2009-06-13.
- ^ The NT Insider (27 августа 2003 г.). «Nt против Zw - устранение путаницы в собственном API». OSR Online. Ресурсы OSR по открытым системам. 10 (4). Получено 2013-09-16.
- ^ "struct LOADER_PARAMETER_BLOCK". www.nirsoft.net.
- ^ а б Практический обратный инжиниринг с использованием X86, X64, Arm, ядра Windows и инструментов реверсирования. John Wiley & Sons Inc., 2014 г. ISBN 978-1118787311.
- ^ CC Hameed (22 января 2008 г.). «Что такое IRQL и почему он важен? | Спросите в блоге группы производительности». Корпорация Майкрософт. Получено 2018-11-11.
- ^ Таненбаум, Эндрю С. (2008). Современные операционные системы (3-е изд.). Верхняя Сэдл-Ривер, Нью-Джерси: Pearson Prentice Hall. п. 829. ISBN 978-0136006633.
дальнейшее чтение
- Таненбаум, Эндрю С. (2008). Современные операционные системы (3-е изд.). Река Аппер Сэдл, штат Нью-Джерси: Пирсон Прентис Холл. п. 829. ISBN 978-0136006633.
- Брюс Данг; Александр Газет; Элиас Бачаалани (2014). Практический обратный инжиниринг: x86, x64, ARM, ядро Windows, инструменты реверсирования и обфускация. Wiley. п. 384. ISBN 978-1118787311.