본문 바로가기

보안

EProcess 란

EProcess 란

EPROCESS 란 커널에서 프로세스를 관리하기 위한 오브젝트이다.

프로세스를 관리 할 때 이중 연결 리스트로 관리되어진다

먼저 우리가 운영체제를 이용하는 이유는 작업을 하고자 하는 이유인데

즉 게임이나 문서 ,인터넷 등 모든작업을하는것을 작업이라고 보았을때

이 작업을하기위해서는 응용프로그램을 사용해야만하고

이러한 응용프로그램은 모두 프로세스 이다. 프로그램들을 실행시키고 관리하는

거대한 프로세스가 EProcess 이다.

(프로세스 위의 프로세스)

- 윈도우의 관점에서 프로세스란 바로 이 구조체를 의미하며, 프로세스를 종료한다는 것은 이 구조체에 대한 포인터 값을 관련 링크드 리스트에서 삭제하는 것을 의미한다.

- 이 구조체 에는 시스템이 프로세스를 실행하고 관리하기 위한 모든 정보가 들어있다.

-만약 프로세스를 숨기는 프로그램을 만들고싶다면

숨기고자 하는 프로세스 이름이나 PID 값을 찾은 다음 연결 방향만 숨기면 된다.

EProcess 특징

- 프로세스가 생성되면 해당 프로세스의 정보를 가지고 있는 EPROCESS 라는 구조체가 커널 메모리에 생성

- 모든 프로세스는 각자의 EPROCESS 구조체를 하나씩 가지고 자신이 사용하는 쓰레드의 개수만큼 ETHREAD 구조체를 가짐

- EPROCESS 와 ETHREAD 내부에는 각각 PCB, TCB란 이름의 KPROCESS 와 KTHREAD 라는 구조체가 존재

- KPROCESS 는 NULL 동기화 객체와 관련된 디스패처 객체 헤더, 가상 메모리의 CR3 레지스터 값, 프로세스에 속해 있는 스레드 리스트 헤더, CPU에 대한 종속성(Affinity), 프로세스 우선순위, 프로세스에 서 생성되는 스레드의 기본 실행 시간 값 등과 같은 정보 저장

- KTHREAD 는 스레드 종료 동기화 객체, TEB(Thread Environment Block) 포인터, 스레드 우선순위, 스케줄러에 의해 실행을 준비하고 있는 스레드 리스트, 퀀텀 값등의 정보 저장