▣ 네임드 객체
- 일부 커널 객체는 시스템 상에서 자신을 고유하게 구별할 수 있는 이름을 가질 수 있음
- 여러 프로세스가 동일한 이름의 객체를 사용하면 각 프로세스가 사용하는 해당 객체는 동일하다는 것이 보장됨
- 이미 존재하는 객체에 대해 CreateMutex와 같이 객체를 생성하는 API가 호출되면 커널은 자동으로 해당 객체를 글로벌 테이블에 위치시키고 해당 객체에 대한 핸들을 반환함
- 네임드 객체는 계층 디렉토리 구조로 배치됨(User Mode에 Win32 API로 접근 불가능)
[주요 객체 디렉토리]
▶ BaseNamedObjects
- 전통적인 Win32네임드 객체 저장
- 모든 네임드 객체 Win32 API는 자동으로 이 디렉토리를 사용(APP는 이를 변경 할 수 없다)
▶ Devices
- 현재 활성화된 시스템 디바이스의 디바이스 객체를 저장
- TCP와 같은 논리적이 디바이스뿐만 아니라 Harddisk0와 같은 물리적인 디바이스인 경우에도 모두 해당됨
- Win32 API는 직접 접근 불가능 à 심볼릭 링크를 통해 접근 가능
▶ GLOBAL
- 심볼릭 링크 디렉토리
- 커널객체의 예전 스타일 이름(DOS 네이밍 체계를 따름)
- Win32 App에서는 디바이스에 접근하려면 반드시 심볼릭 링크 이름을 이용해야 함
'Security > Reverse Engineering' 카테고리의 다른 글
[Reversing]프로세스 동기화, 초기화 과정 (0) | 2010.05.04 |
---|---|
[Reversing]프로세스와 쓰레드 (0) | 2010.05.04 |
[Reversing]객체와 핸들 (0) | 2010.05.03 |
[Reversing]색션 객체, VAD트리, User mode Mem, Mem 관리 API (0) | 2010.04.29 |
[Reversing]윈도우 커널 메모리 주소 공간 (0) | 2010.04.25 |