애플리케이션은 리소스를 관리하기위해 커널 오브젝트를 사용한다. (프로세스, 스레드, 파일 등)


커널 오브젝트는 윈도우에서 제공하는 다양한 종류의 함수들로 만들어진다. Create* 류

이러한 함수들로 커널에 의해 할당된 간단한 메모리블록임 이 메모리블록은 구조체로 구성되어잇고 여러 정보가 저장대잇음


커널에 접근하기위해선 마소에서 제공하는 함수를 써야댐 이함수들은 커널객체를 구분하기위한 핸들값을 반환함


핸들값은 프로세스마다 독립적이라 

다른프로세스에서 커널에 접근하려면 다른수단이 잇어야댐


1) 커널객체의 핸들을 상속한다

 winapi 프로세스를만들때 CreateProcess란 함수 제공, 이때 매개변수로 객체핸들을 상속할거라고 알려줄수잇다


 but 이렇게 전달하면 어떤종류의 핸들이 상속댄것인지 알수업으므로 차일드프로세스에 핸들값을 전달해주어야한다 ex) 명령행인자, 윈도우에 메세지보내기

 

2) 객체에 이름을 붙여준다

 전부는 아니지만 대부분의 커널객체는 이름을 가질수잇다 찾아보면 매개변수로 PCTSTR pszName 가지는 함수가 많음

 이름은 중복대면안댐 이렇게 만들어진 커널객체는 다른프로세스에서 Open* 류의 함수로 열수잇다. 당연하지만 이함수의 매개변수에도 pszName이란거 잇음 

 ex) OpenMutex


3) 오브젝트 핸들의 복사

 다른 프로세스의 핸들테이블에 복사함 -> 같은커널객체를 공유 DuplicateHandle 함수 사용



터미널 네임스페이스, 프라이빗 네임스페이스 이런건 읽어도 무슨말인지 잘모르겟다.. 

자괴감들어 지잡빡대가리라