본문 바로가기

CAT-Security/미분류

kernel object 와 handle 정리

  • 쓰레드의 경우 쓰레드에 대한 기본 정보가 커널 오브젝트에 생성됩니다.
    커널 오브젝트 핸들은 프로세스에서 커널 오브젝트에 접근하기 위한 키 같은 녀석이구요.

    프로세스는 커널 오브젝트 핸들 테이블(핸들값과 커널 오브젝트의 실 주소값의 매핑 테이블)을 통해
    커널 오브젝트에 접근하게 됩니다.

    다시 말하지만, 커널 오브젝트는 해당 오브젝트의 기본 정보를 담고 있습니다.
    쓰레드의 경우, 쓰레드의 서스펜드 카운트, 컨텍스트 정보등이 포함되어 있습니다.

    결론부터 말씀드리면, 쓰레드의 커널 오브젝트는 하나입니다.
    여러 방법을 통해 커널 오브젝트는 공유할 수 있는데....
    1. 자식 프로세스에게 상속
    2. Named (쓰레드의 경우 Named가 없죠)
    3. DuplicateHandle

    이렇게 여러 프로세스가 하나의 커널 오브젝트를 각기 다른 핸들값으로 공유할 수 있습니다.
    즉, 커널 오브젝트는 1, 오브젝트 핸들은 n이 될 수 있습니다.






http://sweeper.egloos.com/2814944


http://www.viper.pe.kr/wiki2/wiki.php/%C1%A4%B8%AE/KernelObjects


http://firepig.tistory.com/13



http://www.google.co.kr/#hl=ko&newwindow=1&tbo=d&sclient=psy-ab&q=handle%EA%B3%BC+kernelonject&oq=handle%EA%B3%BC+kernelonject&gs_l=hp.3...527157.538481.4.538650.30.27.3.0.0.2.317.5018.0j23j3j1.27.0.crnk_timediscountb..0.0...1c.1j4.ESJNtq7wL6k&pbx=1&bav=on.2,or.r_gc.r_pw.r_qf.&fp=df37d557c318de02&bpcl=39314241&biw=1280&bih=890