본문 바로가기
코드/C++

서브시스템

by bongin 2023. 7. 9.
728x90
반응형

 

 

 

1. 윈도우의 5가지 기본 요소

(1) 유저 모드와 커널 모드

(2) 프로세스

(3) 스레드

(4) 가상 메모리

(5) 객체와 핸들

 

2. 멀티프로세싱

- 프로세서 개수 확인

 

3. 유니코드의 이용

- HANDLE hFile = CreateFileA("C:\\unicode.txt", ..., 0);

 

4. 서브시스템

- 환경 서브시스템 : Csrss.exe, Psxss.exe

(1) 서브시스템 DLL

  - Kernel32.dll : 파일 생성과 같은 하드웨어 요청에 주로 사용

  - Advapi32.dll : 보안 구성이나 확인 등 추가적으로 윈도우에서 제공하는 기능적인 부분들에 사용

  - User32.dll : 사용자에게 제공하는 창이나 메뉴 등의 화면을 생성하는데 필요한 요소를 요청할 때 사용

  - Gdi32.dll : User32.dll과 다르게 직접 그림을 그릴 수 있는 부분에 사용

 

(2) NTDLL

    - WINAPI CreateFile(windows.h) -> Kernel32.CreateFile(kernel32.dll) -> Ntdll.NtCreateFile (ntdll.dll)-> Sysenter (Kernel mode)

 

  - 참조 : https://asecurity.dev/entry/윈도우-구조-커널-진입-Ntdlldll-세부-분석

    - 우편배달부 (서브시스템 DLL) ↔ 우체국 (Ntdll.dll) ↔ 커널

    - WINAPI ReadFile() > kernel32.ReadFile() > ntdll.ZwReadFile() > ntdll.KiFastSystemCall() > SYSENTER > nt!NtReadFile()

 

728x90
반응형

'코드 > C++' 카테고리의 다른 글

Texture.cpp  (1) 2023.07.29
OpenGL 환경설정  (0) 2023.07.24
128TB를 16진수로 변환  (0) 2023.07.07
6개의 버튼을 가진 윈도우 생성 (LNK2019, LNK1120)  (0) 2023.06.20
버튼 클릭 시 메세지 출력  (0) 2023.05.16

댓글