Native API

Native API

Native API (с заглавной N) - в основном недокументированный интерфейс программирования приложений (API), предназначенный для внутреннего использования в операционных системах семейства Windows NT, выпущенных Microsoft[1]. В основном он используется во время загрузки системы, когда другие компоненты Windows недоступны, а также функциями системных библиотек (например, kernel32.dll), которые реализуют функциональность Windows API. Точкой входа программ, использующих Native API является функция DriverEntry(), так же как и в драйверах устройств Windows. В то же время, в отличие от драйверов, программы, использующие Native API, выполняются в третьем кольце защиты, так же как и обычные приложения Windows. Большая часть вызовов Native API реализована в ntoskrnl.exe, а доступ к ним предоставляется к программам режима пользователя ntdll.dll. Некоторые вызовы Native API реализованы напрямую в режиме пользователя внутри ntdll.dll.

Несмотря на то, что большая часть операционной системы Windows NT использует документированный и хорошо определённый Windows API, некоторые компоненты, такие как подсистема клиент/сервер времени выполнения (CSRSS), используют Native API, так как они запускаются на ранних стадиях процесса загрузки Windows NT, когда функции Windows API ещё не доступны.

Некоторое вредоносное программное обеспечение использует Native API, чтобы скрыть своё присутствие от антивирусного ПО[2].

Содержание

Группы функций

Native API включает достаточно большое число функций. В него входят функции стандартной библиотеки языка Си, такие как strlen(), sprintf() и floor(). В то же время, такие часто встречающиеся вызовы стандартной библиотеки, как malloc(), printf(), scanf() отсутствуют. Большая часть других функций Native API имеет двух- или трёхбуквенный префикс. Используются, в частности, следующие префиксы:

  • Nt или Zw - системные вызовы, объявленные в ntdll.dll и ntoskrnl.exe. Когда они вызываются из ntdll.dll в режиме пользователя, эти группы функций ведут себя практически одинаковым образом: они вызывают переход в режим ядра и вызывают эквивалентную функцию из ntoskrnl.exe с использованием таблицы ветвлений. Когда функции вызываются напрямую из ntoskrnl.exe, что возможно только в режиме ядра, варианты, начинающиеся на Zw, гарантируют исполнение в режиме ядра, а варианты с префиком Nt не гарантируют[3]. Префикс Zw не имеет расшифровки[4]
  • Rtl - вторая по количеству группа вызовов ntdll. В неё включаются функции, составляющие расширенную библиотеку времени выполнения языка Си. Это многие служебные функции, которые могут быть использованы приложениями Native API, прямо не связанные с доступом к ядру системы.
  • Csr - клиент-серверные функции, использующие для взаимодействия с процессом подсистемы Win32, csrss.exe (CSRSS означает подсистему клиент/сервер времени выполнения).
  • Dbg - вспомогательные функции отладки, такие как программная точка останова.
  • Ki - функции, вызываемые из режима ядра, использующиеся, например, для диспетчеризации асинхронного вызова процедур (APC)
  • Ldr - функции загрузчика для поддержки исполняемых файлов формата PE и запуска новых процессов.
  • Nls - для поддержки различных естественных языков (схожи с кодовыми страницами).
  • Pfx - для обработки префиксов.

Gdi32.dll включает ещё несколько функций, которые осуществляют переход в режим ядра. Они изначально не были предусмотрены проектировщиками операционной системы Windows NT и отсутствуют в Windows NT 3.5. Однако в связи с недостаточной производительностью аппаратного обеспечения, при выпуске NT 4 было решено перенести графическую подсистему в режим ядра. В результате этого системные вызовы в диапазоне 0x1000-0x1FFF исполняются win32k.sys (в отличие от вызовов диапазона 0-0x0FFF, выполняемых ntoskrnl.exe), и объявляются в gdi32.dll. У этих функций присутствует префикс Gdi.

Есть ещё несколько групп функций, экспортируемых ntoskrnl.exe, которые могут быть использованы только в режиме ядра. Они могут рассматриваться как часть Native API или не включаться в него, в зависимости от точки зрения источника (поскольку Native API полностью не документирован официально, определённого ответа нет). К таким группам относятся Cc (контроллер кэша), Ex (Windows Executive), FsRtl (вызовы времени выполнения файловых систем), Io (менеджер ввода-вывода), Ke (основные функции ядра), Ks (потоки ядра), Lpc (локальный вызов процедур), Lsa (сервер проверки подлинности локальной системы безопасности), Mm (управление памятью), Ob (менеджер объектов), Ps (управление процессами), Se (безопасность), Po (управление питанием) и другие[5][6][7][8][9][4].

См. также

Ссылки

Примечания

  1. Mark Russinovich. Inside the Native API. Sysinternals (1998–2004). Архивировано из первоисточника 19 декабря 2012. Проверено 28 февраля 2008.
  2. Jason Coombs. Win32 API Obscurity for I/O Blocking and Intrusion Prevention. Dr. Dobb's Journal (June 21, 2005). Архивировано из первоисточника 19 декабря 2012. Проверено 4 января 2007.
  3. The NT Insider, Vol 10, Issue 4, July-August 2003 Print an article from OSR Online. OSR Online (2009). Архивировано из первоисточника 19 декабря 2012. Проверено 13 июня 2009.
  4. 1 2 Raymond Chen. The Old New Thing : What does the "Zw" prefix mean?. Microsoft Corporation (2009). Архивировано из первоисточника 19 декабря 2012. Проверено 13 июня 2009.
  5. Microsoft Corporation I/O Manager Routines. Microsoft Corporation (2009). Архивировано из первоисточника 19 декабря 2012. Проверено 13 июня 2009.
  6. Microsoft Corporation Cache Manager Routines. Microsoft Corporation (2009). Архивировано из первоисточника 19 декабря 2012. Проверено 13 июня 2009.
  7. Microsoft Corporation Power Manager Routines. Microsoft Corporation (2009). Архивировано из первоисточника 19 декабря 2012. Проверено 13 июня 2009.
  8. Microsoft Corporation Core Kernel Library Support Routines. Microsoft Corporation (2009). Архивировано из первоисточника 19 декабря 2012. Проверено 13 июня 2009.
  9. Microsoft Corporation File System Runtime Library Routines. Microsoft Corporation (2009). Архивировано из первоисточника 19 декабря 2012. Проверено 13 июня 2009.

Wikimedia Foundation. 2010.

Игры ⚽ Поможем сделать НИР

Полезное


Смотреть что такое "Native API" в других словарях:

  • Native API — The Native API (with capitalized N) is the publicly and incompletely documented application programming interface used internally by the Windows NT family of operating systems produced by Microsoft.[1]. It is predominately used during system boot …   Wikipedia

  • Native Wind — (NAWIG) was formed to protect the environment and promote the welfare of Native Americans by facilitating the development of wind power and other renewable energy resources on tribal lands. Directors of Native Wind include representatives of the… …   Wikipedia

  • Native development kit — A native development kit (NDK) is a software development kit based on a native application programming interface (API) which allows computer software to be developed directly on a computing platform, rather than via a virtual machine.[1] Creating …   Wikipedia

  • Win-API — Das Windows Application Programming Interface (kurz: WinAPI; zu dt. etwa: Windows Anwendungs Programmierungs Schnittstelle) ist eine Programmierschnittstelle und Laufzeitumgebung, welche Programmierern bereitsteht, um Anwendungsprogramme für… …   Deutsch Wikipedia

  • Win32-API — Das Windows Application Programming Interface (kurz: WinAPI; zu dt. etwa: Windows Anwendungs Programmierungs Schnittstelle) ist eine Programmierschnittstelle und Laufzeitumgebung, welche Programmierern bereitsteht, um Anwendungsprogramme für… …   Deutsch Wikipedia

  • Win32 API — Das Windows Application Programming Interface (kurz: WinAPI; zu dt. etwa: Windows Anwendungs Programmierungs Schnittstelle) ist eine Programmierschnittstelle und Laufzeitumgebung, welche Programmierern bereitsteht, um Anwendungsprogramme für… …   Deutsch Wikipedia

  • Windows API — Das Windows Application Programming Interface (kurz: WinAPI; zu dt. etwa: Windows Anwendungs Programmierungs Schnittstelle) ist eine Programmierschnittstelle und Laufzeitumgebung, welche Programmierern bereitsteht, um Anwendungsprogramme für… …   Deutsch Wikipedia

  • Windows API — The Windows API, informally WinAPI, is Microsoft s core set of application programming interfaces (APIs) available in the Microsoft Windows operating systems. It was formerly called the Win32 API; however, the name Windows API more accurately… …   Wikipedia

  • Windows API — (англ. application programming interfaces)  общее наименование целого набора базовых функций интерфейсов программирования приложений операционных систем семейств Microsoft Windows корпорации «Майкрософт» и совместимой с ними свободной… …   Википедия

  • Win32 API — Windows API (application programming interfaces) общее наименование целого набора базовых функций интерфейсов программирования приложений операционных систем семейств Windows и Windows NT корпорации «Майкрософт». Является самым прямым способом… …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»