Ntdll.dll, 익스큐티브

By 01/11/2018Windows Internal

Ntdll.dll, 익스큐티브

  • Windows Server 2008

 

Ntdll.dll은 주로 서브시스템을 위한 특별한 시스템 지원 라이브러리다. 이는 다음 두 종류의 함수를 갖고 있다.

  • 윈도우 익스큐티브 시스템 서비스에 대한 시스템 서비스 디스패치 스텁
  • 서브시스템, 서브시스템 DLL, 다른 네이티브 이미지에 의해 사용되는 내부 지원 함수

 

첫 번째 그룹 함수는 유저모드에서 호출 할 수 있는 윈도우 익스큐티브 시스템 서비스 인터페이스 이다. 이들 함수의 기능은 윈도우 API로 접근할 수 있다.

 

각 함수들에 대해 Ntdll은 같은 이름의 엔트리 포인트를 갖고 있다. 함수 안의 코드는 시스템 서비스 디스패처를 호출하기 위해 커널모드로의 진입을 일으키는 아키텍처의 한정적인 인스트럭션을 갖고 있다. 시스템 서비스 디스패처는 일부 인자를 검증한 후 Ntoskrnl.exe. 내부의 실제 코드를 갖고 있는 실제 커널모드 시스템 서비스를 호출한다.

 

Ntdll은 이미지 로더(Ldr로 시작하는 함수), 힙 관리자 윈도우 서브시스템 프로세스 통신 함수(Csr로 시작하는 함수)같은 많은 지원 함수를 갖고 있다. 일반적인 런타임 라이브러리 루틴, 유저모드 디버깅용 지원과 윈도우용 이벤트 트레이싱, 유저모드 비동기 프로시저 호출 디스패처, 예외 디스패처를 갖고 있으며 문자열과 표준 라이브러리의 일부로 한정되는 C런타임 루틴의 작은 부분 집합이 있다.

 

[익스큐티브 내장 함수]

윈도우 익스큐티브는 Ntoskrnl.exe의 상위 계층이다. 익스큐티브는 다음과 같은 유형의 함수를 내장한다.

  • 익스포트되어 호출 가능한 함수로 이들 함수는 시스템 서비스라고 하며 Ntdll을 통해 익스포트 된다.
  • 디바이스 드라이버는 DeviceIoControl 함수를 사용해 호출. 읽거나 쓰기에 관계없이 디바이스 드라이버 내의 함수를 호출하기 위한 유저모드에서 커널모드로의 일반화된 인터페이스를 제공한다.
  • WDK에 문서화 되어 있으며 익스포트되어 있는 커널모드에서만 호출 가능 함수.
  • 익스포트되어 있으며 커널에서만 호출 할 수 있지만 WDK에 문서화 되어 있지 않은 함수.
  • 전역 심볼에는 정의되어 있지만 익스포트되지 않은 함수로 이들 함수는 lop로 시작하거나 Mi로 시작하는 것과 같은 Ntoskrnl 내부에서 호출되는 내부 지원 함수를 포함.
  • 모듈 내부에 있지만 전역 심볼에 정의되어 있지 않은 함수.

 

 

[익스큐티브 주요 컴포넌트]

  • 구성관리자 : 시스템 레지스트리의 구현과 관리
  • 프로세스와 스레드 관리자 : 프로세스와 스레드를 생성하고 종료. 프로세스와 스레드 기본 지원은 윈도우 커널에 구현되어 있으며 익스큐티브는 추가적인 의미와 함수를 저수준 객체에 추가한다.
  • 보안 참조 모니터 : 로컬 컴퓨터의 보안 정책을 집행. 운영체제 리소스를 보호하고 런타임 객체 보호와 감사를 수행.
  • I/O 관리자 : 디바이스 독립적인 I/O를 구현하고 이후의 처리를 적절한 디바이스 드라이버에 보내는 디스패칭에 대한 책임을 갖는다.
  • 플러그앤플레이 관리자 : 디바이스에 대해 해당 드라이버를 로드한다. 열거하는 동안 각 디바이스 드라이버용 하드웨어 리소스 요구 사항을 검색한다. 하드웨어 리소스 할당 및 변경 이벤트를 담당한다.
  • 전원 관리자 : 전원 이벤트를 조율하며 전원 관리 I/O 통지를 디바이스 드라이버에 발생시킨다. 각 디바이스의 전력 소비량 변경은 디바이스 드라이버에 의해 다루어 진다.
  • 윈도우 드라이버 모델 윈도우 관리 도구 : 디바이스 드라이버가 성능과 구성 정보를 노출하고 유저모드 WMI 서비스로부터 명령을 받는 것을 가능하게 한다.
  • 캐시 관리자 : 빠른 접근을 위해 최근 참조된 디스크 데이터를 메인 메모리상에 남겨둠으로써 파일 기반I/O의 성능을 향상.
  • 메모리 관리자 : 가능한 물리 메모리를 초과할 수 있는 개별 프로세스용 큰 개별 주소 공간을 제공하는 메모리 관리 스키마인 가상 메모리를 구현하며 캐시 관리자용 하위 지원을 제공한다.
  • 논리적 프리패치와 슈퍼패치 : 시스템이나 프로세스가 기동하는 동안 참조되는 데이터의 로딩을 최적화함으로써 시스템과 프로세스의 기동을 가속 시킨다.

 

[기타 익스큐티브 지원 집합 함수]

  • 객체 관리자는 윈도우 익스큐티브 객체와 프로세스, 스레드, 다양한 동기화 객체 같인 운영체제 리소스를 표현하는 추상 데이터 유형을 생성하고 관리하고 삭제한다.
  • 고급 LPC기능은 같은 컴퓨터상의 클라이언트 프로세스와 서버 프로세스 사이에 메시지를 전달한다.
  • 문자열 처리와 산술 연산, 데이터 유형 변환, 시큐리티 구조체 처리 같은 공통 런타임 라이브러리 함수에 대한 광범위한 집합
  • 시스템 메모리 할당과 세 가지 특별한 유형의 동기화 객체로 리소스, 패스트뮤텍스, 푸시락, 인터락드 메모리 액세스 같은 익스큐티브 지원 루틴
  • 커널 디버거 라이브러리는 다양한 전송 수단(USB, IEE1394 등)이 지원되고 WinDbg와exe 유틸리티가 구현한 이식 가능한 프로토콜인 KD를 지원하는 것으로 디버거가 커널을 디버깅 하는 것을 허용하게 한다.
  • 유저모드 디버깅 프레임워크는 유저모드 디버깅 API에 이벤트를 전달하고 브레이크포인터를 설정 할 수 있고 동작중인 스레드의 컨텍스트를 바꾸는 것은 물론 작업을 위해 코드를 탐색하는 것을 지원할 책임이 있다.
  • 커널 트랜잭션 관리자는 트랜잭션 레지스트리와 트랜잭션 NTFS 같은 공통적인 2단계 커밋 메커니즘을 리소스 관리자에게 제공한다.
  • 윈도우 서버 2008의 Hyper-V 스택의 일부인 하이퍼바이저 라이브러리는 가성 머신 환경에 대한 커널 지원을 제공하고 시스템이 클라이언트 파티션에서 동작 중인 것을 알았을 때 코드의 일부분을 최적화.
  • errata관리자는 비표준이나 비규약 하드웨어 디바이스에 대한 회피 방법을 제공.
  • Driver Verifier는 커널모드 드라이버와 코드에 대한 추가적인 무결성 체크를 구현
  • 윈도우를 위한 이벤트 트레이싱은 커널모드와 유저모드 컴퓨넌트에 대한 시스템 전역적인 이벤트 트레이싱을 위해 보조 루틴 제공
  • 윈도우 진단 하부구조는 진단 시나리오에 기반해 시스템 활동의 지능적인 추적을 가능하게 함.
  • 윈도우 하드웨어 오류 아키텍처 지원 루틴은 하드웨어 오류를 보고하기 위한 공통 프레임 워크를 제공
  • 파일 시스템 런타임 라이브러리는 파일 시스템 드라이버용 공통 지원 루틴을 제공

 

[참고자료]

Windows Internals

 

OS, Windows, 윈도우아키텍처, Windowsinternals, OS아키텍처, 윈도우서버, WindowsServer, 윈도우커널, NTdll, 익스큐티브, sqlmvp, SQL Angeles

Leave a Reply

%d bloggers like this: