맨위로가기

네이티브 API

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

네이티브 API는 C 런타임 함수와 윈도우 운영체제 커널에 직접 접근하는 함수들을 포함하는 광범위한 함수 집합이다. 이 API는 `Nt`, `Zw`, `Rtl`, `Csr`, `Dbg`, `Ki`, `Ldr`, `Nls`, `Pfx`, `Tp`, `NtUser`, `NtGdi` 등의 접두사를 가진 다양한 함수 그룹으로 구성되어 있으며, 각 그룹은 시스템 호출, 유틸리티 함수, 디버깅 기능, 로더 함수, NLS 지원 등 특정 기능을 담당한다. 네이티브 API는 권한 관리, 프로세스 및 스레드 관리, 시스템 제어, 디버깅 등 다양한 작업에 활용된다.

2. 함수 그룹

네이티브 API는 다양한 기능을 수행하는 많은 함수들로 구성되어 있다. `strlen()`, `sprintf()` 등과 같이 기본적인 C 런타임 실행을 위한 C 런타임 함수들을 포함한다. 다만, `malloc()`, `printf()`, `scanf()` 같은 일반적인 함수들은 포함되지 않았다.

대부분의 네이티브 API 함수들은 기능에 따라 그룹화되며, 일반적으로 2~3글자의 접두사로 구분된다. 주요 함수 그룹은 다음과 같다.

접두사설명
Nt 또는 Zwntdll.dll과 ntoskrnl.exe에 선언된 시스템 호출 관련 함수.
Rtlntdll에서 두 번째로 큰 그룹으로, 확장된 C 런타임 라이브러리 관련 함수.
CsrWin32 하위 시스템 프로세스(csrss.exe)와 통신하는 클라이언트-서버 함수.
Dbg디버깅 관련 함수.
KiAPC 디스패칭 같은 이벤트를 위한 커널 모드 upcall.
LdrPE 파일 처리 및 새로운 프로세스 시작을 위한 로더 함수.
Nls네이티브 언어 지원 관련 함수.
Pfx접두사(prefix) 처리 관련 함수.
Tp스레드 풀 처리 관련 함수
NtUser, NtGdi그래픽 서브시스템 관련 함수 (win32k.sys, user32.dll, gdi32.dll).



과거에는 하드웨어 성능 문제로 인해 그래픽 서브시스템을 커널 모드로 옮겼기 때문에, user32.dll과 gdi32.dll에도 커널 모드로 들어가는 호출들이 있다. 이들은 0x1000~0x1FFF 범위의 시스템 호출을 사용하며, NtUser 및 NtGdi 접두사가 붙는다.

ntoskrnl.exe에는 커널 모드에서만 사용 가능한 여러 함수 그룹이 존재하며, 이들은 네이티브 API에 포함되기도 하고 되지 않기도 한다.

2. 1. Nt 및 Zw 함수

Nt 및 Zw 함수는 ntdll.dll과 ntoskrnl.exe에 선언된 시스템 호출이다. 사용자 모드에서 ntdll.dll을 통해 호출될 경우, 이 함수들은 커널 모드로 전환되어 SSDT을 통해 ntoskrnl.exe 내의 동일한 기능을 가진 함수를 실행한다. ntoskrnl.exe에서 직접 호출될 경우(커널 모드에서만 가능), Zw 함수는 항상 커널 모드에서 실행됨을 보장하지만, Nt 함수는 그렇지 않다.[3] Zw 접두사는 특별한 의미를 가지지 않는다.[4]

2. 2. Rtl 함수

Rtl은 ntdll.dll에서 두 번째로 큰 그룹이다. 이것은 C 런타임 라이브러리를 확장한 형태로, 커널 지원을 직접 포함하지 않지만 네이티브 애플리케이션에서 유용하게 사용되는 다양한 유틸리티 함수를 제공한다.[3]

2. 3. Csr 함수

Csr은 Win32 하위 시스템 프로세스(csrss.exe)와 통신하는 데 사용되는 클라이언트-서버 함수이다.[3] ''csrss''는 클라이언트/서버 런타임 서브시스템을 의미한다.[1]

2. 4. Dbg 함수

Dbg는 소프트웨어 브레이크포인트와 같은 디버깅 함수이다.[3]

2. 5. Ki 함수

APC 디스패칭과 같은 이벤트에 대한 커널 모드 업콜이다.[3]

2. 6. Ldr 함수

PE 파일 처리 및 새로운 프로세스 시작을 위한 로더 함수이다.[3]

2. 7. Nls 함수

국가 언어 지원(코드 페이지와 유사함)을 위한 것이다.[1]

2. 8. Pfx 함수

Pfx는 접두사 처리를 위해 사용된다.[3]

2. 9. Tp 함수

Tp 함수는 스레드 풀 처리를 위한 것이다.[1]

2. 10. NtUser 및 NtGdi 함수

user32.dll과 gdi32.dll은 커널 모드로 들어가는 다른 호출도 포함한다. 이는 과거 하드웨어의 성능 문제로 인해 그래픽 서브 시스템을 커널 모드로 보내기로 결정했기 때문이다. 0x1000~0x1FFF 범위의 시스템 호출들은 win32k.sys용이며, user32.dll과 gdi32.dll에서 정의된다. 이런 함수들은 '''NtUser''', '''NtGdi''' 접두사가 붙는다.[3]

2. 11. 기타 함수 그룹 (커널 모드 전용)

ntoskrnl.exe에서 제공되는 많은 함수 그룹이 있으며, 이러한 함수들은 커널 모드에서만 사용할 수 있다. 여기에는 다음이 포함된다.[4][5][6][7][8][9]

3. 사용 예시

네이티브 API는 다음과 같은 다양한 작업에 사용될 수 있다.

함수명기능
RtlAdjustPrivilege권한 활성화 및 비활성화[1]
RtlCreateUserThread다른 세션에서 실행 중인 프로세스 내에 원격 스레드 생성[1]
RtlCreateUserProcess네이티브 애플리케이션 실행[1]
NtShutdownSystem영어시스템 강제 종료[1]
NtRaiseHardError영어사용자 모드에서 블루 스크린 오류 발생[1]
NtDisplayString영어네이티브 모드에서 문자열 표시[1]


3. 1. 권한 관리

RtlAdjustPrivilege는 권한을 활성화하거나 비활성화하는 데 사용된다.[1]

3. 2. 프로세스 및 스레드 관리

RtlCreateUserThread는 다른 세션에서 실행 중인 프로세스 내에 원격 스레드를 생성하며,[1] RtlCreateUserProcess는 네이티브 애플리케이션을 실행한다.[1]

3. 3. 시스템 제어

NtShutdownSystem영어 함수는 시스템을 강제 종료하는 기능을 수행한다.[1]

3. 4. 디버깅

NtRaiseHardError영어 함수는 사용자 모드에서 블루 스크린 오류를 발생시키고, NtDisplayString영어 함수는 네이티브 모드에서 문자열을 표시하여 디버깅에 사용된다.[1]

참조

[1] 저널 Nt vs. Zw - Clearing Confusion On The Native API http://www.osronline[...] OSR Open Systems Resources 2013-09-16
[2] 웹사이트 The Old New Thing : What does the "Zw" prefix mean? https://devblogs.mic[...] Microsoft Corporation 2009-06-13
[3] 저널 Nt vs. Zw - Clearing Confusion On The Native API http://www.osronline[...] OSR Open Systems Resources 2016-02-11
[4] 웹인용 The Old New Thing : What does the "Zw" prefix mean? http://blogs.msdn.co[...] 마이크로소프트 2016-02-11
[5] 웹인용 I/O Manager Routines http://msdn.microsof[...] 마이크로소프트 2016-02-11
[6] 웹인용 Cache Manager Routines http://msdn.microsof[...] 마이크로소프트 2016-02-11
[7] 웹인용 Power Manager Routines http://msdn.microsof[...] 마이크로소프트 2016-02-11
[8] 웹인용 Core Kernel Library Support Routines http://msdn.microsof[...] 마이크로소프트 2016-02-11
[9] 웹인용 File System Runtime Library Routines http://msdn.microsof[...] 마이크로소프트 2016-02-11



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com