떡밥위키
최근 변경
최근 토론
특수 기능
파일 올리기
작성이 필요한 문서
고립된 문서
고립된 분류
분류가 되지 않은 문서
편집된 지 오래된 문서
내용이 짧은 문서
내용이 긴 문서
차단 내역
RandomPage
라이선스
IP 사용자
216.73.216.107
설정
다크 모드로 전환
로그인
개인정보 처리방침 개정 안내
Microsoft Windows/커널
(r1 문단 편집)
닫기
RAW 편집
미리보기
==== PEB (Process Environment Block) / TEB (Thread Environment Block) ==== 사용자 메모리에 존재하는 특정 객체의 정보(식별자 등)가 담긴 구조체다. PEB는 프로세스의 정보, TEB는 스레드의 정보가 담겨있는 구조체를 말한다. 일반 프로그램은 사용자 모드에서 실행되므로 커널 메모리에 직접 접근할 수 없다. 이 경우 자신의 프로세스 정보가 커널 영역에 있기 때문에 자신의 프로세스 ID만 가져오려면 시스템 콜 등의 간접적인 방법을 사용해야 한다. 이렇게 되면 오버헤드가 발생하여 성능이 저하될 수 있다. 그래서 이를 해결하주는게 바로 PEB이다. 프로세스 생성 시 커널 메모리에 있는 프로세스의 정보 중 일부를 사용자 메모리로 복사하여 프로세스가 시스템 콜을 사용하지 않고 바로 프로세스의 정보를 가져올 수 있게 해준다. 참고로 이러한 개념은 스레드에도 존재하며 TEB라고 부른다. TEB 구조체의 필드 중에서 PEB의 주소가 존재하며 특정 레지스터[* 아키텍처마다 레지스터 구조가 다르는데 x86의 경우 FS 레지스터에 x64(AMD64)의 경우 GS 레지스터에 TEB의 주소가 들어가 있다.]에 TEB의 주소가 들어가 있다. 커널 정보가 사용자 메모리의 특정 주소에 존재한다는 점 때문에 특정 방법을 사용하여 커널 정보를 유출시킬 수 있는 취약점이 발생하기도 했다. 그게 바로 [[CPU 게이트]].
요약
문서 편집을
저장
하면 당신은 기여한 내용을
CC BY-NC-SA 2.0 KR
또는
기타 라이선스 (문서에 명시된 경우)
로 배포하고 기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다. 이
동의는 철회할 수 없습니다.
비로그인 상태로 편집합니다. 로그인하지 않은 상태로 문서 편집을 저장하면, 편집 역사에 본인이 사용하는 IP(216.73.216.107) 주소 전체가 영구히 기록됩니다.
저장
사용자
216.73.216.107
IP 사용자
로그인
회원가입
최근 변경
[불러오는 중...]
최근 토론
[불러오는 중...]