ch3. #1 프로세스 핵심 구조체

2022. 7. 1. 02:53·System/OS

Windows Internals 7/e

 

# Windows 프로세스 내부 구조:: 핵심 데이터 구조체 알아보기

# 윈도우 프로세스 핵심 데이터 구조체에 대해서 알아보기

 

익스큐티브 프로세스 (EPROCESS)

  • 모든 윈도우 프로세는 EPROCESS로 표현됨.
  • 프로세스의 여러 속성 뿐만아니라 연관된 다른 구조체를 가리키는 포인터도 존재함.
  • 시스템 주소 공간에 위치함

dt nt!_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 > OS' 카테고리의 다른 글

윈도우에서 putty 서버(ubuntu)로 파일 전송. PSCP.exe 사용법  (1) 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
'System/OS' 카테고리의 다른 글
  • 윈도우에서 putty 서버(ubuntu)로 파일 전송. PSCP.exe 사용법
  • ch3. #2 CreateProcess
  • Windows 이벤트 뷰어
  • 윈도우 인증 과정과 LSA Protection 레지스트리
병뚜
병뚜
열정!
  • 병뚜
    열려라 뚜껑
    병뚜
  • 전체
    오늘
    어제
    • all (372)
      • 일상X사랑X돈 (0)
        • 보안이슈 (114)
        • 뜨거운감자 (9)
        • 맛집 (2)
        • 혼잣말 (16)
      • 보안 (87)
        • 웹·모바일 (46)
        • 인프라 (19)
        • 리버싱 (8)
        • Security-Gym (10)
        • 리뷰 (4)
      • 프로그래밍 (66)
        • python (14)
        • java (12)
        • js (40)
      • System (47)
        • OS (14)
        • 침투 (33)
      • Play (20)
        • wargame (20)
      • 기타 (10)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    리버싱초보
    혼공학습단
    파이썬
    IT뉴스
    리버싱
    혼공
    정보보호
    혼자공부하는파이썬
    악성코드
    드림핵리버싱
    공급망공격
    정보보안교육
    정보보안
    자바스크립트 상속
    윈도우인터널스
    커널디버깅
    it이슈
    랜섬웨어
    보안뉴스
    windows internals
    뉴스요약
    파이썬입문
    혼공단
    보안이슈
    프로세스
    kisa
    혼공파
    파이썬공부
    jwt
    파이썬초보
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
병뚜
ch3. #1 프로세스 핵심 구조체
상단으로

티스토리툴바