Windows Internals 7/e
# Windows 프로세스 내부 구조:: 핵심 데이터 구조체 알아보기
# 윈도우 프로세스 핵심 데이터 구조체에 대해서 알아보기
익스큐티브 프로세스 (EPROCESS)
- 모든 윈도우 프로세는 EPROCESS로 표현됨.
- 프로세스의 여러 속성 뿐만아니라 연관된 다른 구조체를 가리키는 포인터도 존재함.
- 시스템 주소 공간에 위치함
KPROCESS
- EPROCESS 구조체의 첫 필드인 PCB의 타입.
- 커널 프로세스를 위한 구조체 타입이다.
- 익스큐티브 루틴은 EPROCESS에 정보 저장, 그러나 운영체제 커널은 KPROCESS에 정보를 저장
- 커널의 일부로서 디스패처, 스케줄러, 인터럽트, 시간관리코드 등이 존재
- —> 계층 간 원치 않는 종속성이 생기지 않도록 함.
- 익스큐티브 상위 레벨 기능과.. 해당 기능의 구현을 위한 하위 레벨 함수의 구현 간에 추상화 계층을 제공
💡 KPROCESS는 EPROCESS의 첫번째 필드. EPROCESS 주소를 KPROCESS로 이용하여 dt _kprocess 명령 이용 가능 💡
실습: 커널 디버거 !process 명령 사용
- 커널 디버거 !process 명령으로 프로세스 객체 내의 정보 및 그와 연관된 구조체 확인이 가능.
- 따로 명시하지 않았기 떄문에 CPU 0 에서 실행 중인 스레드를 소유한 프로세스 모두 확인
프로세스 정보 다음에는 프로세스 내의 스레드 목록 표시.
실습: PEB 살펴보기
- !peb 명령으로 CPU 0에서 실행 중인 스레드를 소유하는 프로세스의 PEB 구조체 확인 가능.
CSR_PROCESS
- 윈도우 서브시스템 프로세스(Csrss.exe)가 관리하는 프로세스마다 대응되는 구조체.
- 윈도우 애플리케이션만이 자신과 연관된 CSR_PROCESS 구조체 가짐
- CSR_PROCESS 구조체는 각 세션 내의 Csrss프로세스에 의해 관리됨
1) 해당 구조체를 살펴보기 위해.. 존재하는 csrss.exe 나열
2) 그 중 하나를 선택해서 디버거 컨텍스트가 해당 프로세스를 가리키게 변경.
→ 프로세스의 유저 모드 모듈 확인 가능
- /r : 유저 모드 심블 로드를 요청
- /p : 디버거의 프로세스 컨텍스트를 제공한 프로세스 객체(EPROCESS)로 변경
3) lm명령(로드된 모듈 나열) 사용
W32PROCESS
- 커널모드 쪽의 윈도우 서브시스템(Win32k.sys)가 관리하는 프로세스별 데이터 구조체.
- 커널 내에서 윈도우 그래픽이나 윈도우 관리 코드가 GUI 프로세스의 상태 정보를 관리하기 위해 필요한 모든 정보를 가짐
- Win32k 구조체 타입 (공개 심볼로는 이용 불가능)
DXGPROCESS
- 커널모드 윈도우 서브시스템은 DirectX 기반의 하드웨어 가속 그래픽을 과중하게 사용하기 때문에..
- 그래픽 다비이스 인터페이스(GDI) 컴포넌트 인프라가 DirectX 그래픽 커널(Dxgkrnl.sys)로 하여금 DXGPROCESS 구조체를 초기화하게 함.
실습: Process Explorer에서 보호 프로세스 살펴보기
process exploer > 칼럼 Protection 체크 > 오름차순 정렬
p.216
트러스트릿 (IUM Process)
https://docs.microsoft.com/ko-kr/windows/win32/procthread/isolated-user-mode--ium--processes
'System > windows' 카테고리의 다른 글
윈도우에서 putty 서버(ubuntu)로 파일 전송. PSCP.exe 사용법 (0) | 2022.07.01 |
---|---|
ch3. #2 CreateProcess (0) | 2022.07.01 |
Windows 이벤트 뷰어 (0) | 2022.06.17 |
윈도우 인증 과정과 LSA Protection 레지스트리 (0) | 2022.06.17 |
Windows 프로세스 내부 구조:: 핵심 데이터 구조체 알아보기 (0) | 2022.05.12 |