- 로우레벨 계층의 I/O 시스템 : 하드웨어 등과의 통신 담당
- 하이레벨 계층의 Win32 서브시스템 : GUI를 구현하고 사용자 입력 처리 작업 담당
● I/O 시스템
- 시스템에서 동작하는 디바이스 드라이버를 관리
- App과 디바이스 드라이버 간의 통신 담당 커널 컴포넌트들로 구성됨
- App의 디바이스 드라이버에 대한 요청을 전달하는 작업을 담당함
- 계층 구조로 이루어짐(각 디바이스에 대해 여러 개의 디바이스 드라이버가 스택구조로 존재할 수 있음 : 드라이버와 App 간이나 두 드라이버 간의 통신을 모니터링하거나 변경하기 위한 필터 드라이버 추가에 적합)
- 각 드라이버 간의 연결을 책임지고 담당
● Win32 서브시스템
- 윈도우 사용자 인터페이스의 모든 부분을 담당하는 컴포넌트
- GDI(Graphics Device Interface)라고 하는 로우레벨 그래픽 엔진과 윈도우창, 메뉴, 사용자 입력 처리와 같은 하이레벨의 GUI를 처리하는USER컴포넌트로 구성됨
# Win32 서브시스템 동작방식
- Win32 서브시스템은 모든 Win32 API를 담당하는 것이 아니고, 단지 USER, GDI 부분만을 담당함
- 커널 레벨의 WIN32K.SYS에 의해서 구현되고 유저레벨의 USER32.DLL과 GDI32.DLL에 의해서 관리됨
- 유저모드 DLL과 커널 컴포넌트 사이의 통신은 기존의 시스템 콜 방식을 이용해서 이루어짐
● 객체 관리자
- USER, GDI는 윈도우 초기 버전부터 존재해 왔으므로 커널 객체 관리자를 사용하지 않음
- 자신만의 작은 객체 관리 메커니즘 이용함
- 윈도우 창, 디바이스 컨텍스트와 같은 Win32 객체에 대한 핸들값 → 객체 테이블에 대한 인덱스
- 객체 테이블은 커널 메모리에 저장됨(읽기 모드)
- USER, GDI 핸들 테이블은 전역(global)
'Security > Reverse Engineering' 카테고리의 다른 글
[Reversing] Ollydbg 단축키 (0) | 2010.07.02 |
---|---|
[Reversing]구조화된 예외 처리(SEH) (0) | 2010.05.10 |
[Reversing]실행 포멧 (0) | 2010.05.08 |
[Reversing]API (0) | 2010.05.04 |
[Reversing]프로세스 동기화, 초기화 과정 (0) | 2010.05.04 |