System/Windows
[API] Windows API 접두사 관련
Tribal
2020. 2. 26. 14:01
Prefix
Prefix | Kernel component |
Cm | Configuration manager |
Ex | Executive |
Hal | Hardware abstraction layer |
Io | I/O manager |
Ke | Kernel core |
Mm | Memory manager |
Ob | Object manager |
Po | Power manager |
Tm | Transaction manager |
Se | SRM (Security Reference Monitor) |
Nt and Zw | Native system services |
Nt와 Zw의 경우, 커널 모드에서 직접 API를 호출하거나 사용자 모드에서 System Call을 호출하여 해당 API에 접근할 수 있다. 이 때, Previous Mode로 이전에 어디에서 해당 함수를 호출하였는지 체크한다.
체크를 하지 않는 예외가 있긴 한데, 커널 모드에서 Zw 접두사 API를 호출하면 무조건 신뢰한다고 가정하고 별도의 체크를 수행하지 않는다. 반대로 사용자 모드에서는 어떤 API를 호출하였는지와 상관없이 신뢰하지 않는다고 가정하고 체크를 반드시 수행한다.
이와 비슷한 케이스로 접두사에 따라 인자 체크를 수행하는 함수와 하지 않는 함수가 있는데, 이러한 케이스를 잘 확인해봐야 할거 같다.
reference