Native API

Материал из Википедии — свободной энциклопедии

Native API (с заглавной N) — в основном недокументированный

режима пользователя 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 имеет двух- или трёхбуквенный префикс. Используются, в частности, следующие префиксы:

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 (

сервер проверки подлинности локальной системы безопасности), Mm (управление памятью), Ob (менеджер объектов), Ps (управление процессами), Se (безопасность), Po (управление питанием) и другие[5][6][7][8][9][4]
.

См. также

Ссылки

Примечания

  1. Mark Russinovich. Inside the Native API. Sysinternals (1998–2004). Дата обращения: 28 февраля 2008. Архивировано из оригинала
    18 декабря 2012 года.
  2. Dr. Dobb's Journal (21 июня 2005). Дата обращения: 4 января 2007. Архивировано из оригинала
    18 декабря 2012 года.
  3. The NT Insider, Vol 10, Issue 4, July-August 2003. Print an article from OSR Online. OSR Online (2009). Дата обращения: 13 июня 2009. Архивировано из оригинала 18 декабря 2012 года.
  4. Microsoft Corporation (2009). Дата обращения: 13 июня 2009. Архивировано из оригинала
    18 декабря 2012 года.
  5. Microsoft Corporation (2009). Дата обращения: 13 июня 2009. Архивировано из оригинала
    18 декабря 2012 года.
  6. Microsoft Corporation (2009). Дата обращения: 13 июня 2009. Архивировано из оригинала
    18 декабря 2012 года.
  7. Microsoft Corporation (2009). Дата обращения: 13 июня 2009. Архивировано из оригинала
    18 декабря 2012 года.
  8. Microsoft Corporation (2009). Дата обращения: 13 июня 2009. Архивировано из оригинала
    18 декабря 2012 года.
  9. Microsoft Corporation (2009). Дата обращения: 13 июня 2009. Архивировано из оригинала
    18 декабря 2012 года.