SYSENTER/INT 2E

SYSENTER / INT 2E

윈도우에서 사용하는 winapi들은 대부분 커널레벨에서 구현이 되어있다. 그렇기 때문에 그냥 디렉터리에 들어 갈때도 웹서핑을 할때도 인지하지는 못하지만 컴퓨터는 수많은 시스템콜을 호출하게된다.
 어플리케이션 레벨(Ring 3)에서 커널레벨(Ring0)로 진입하기 위한 방법은 소프트웨어 인터럽트, 콜게이트(INT 2E)를 사용하거나 Fast System Call(SYSENTER)를 사용하는 2가지의 방법으로 나뉜다. 먼저 Fast System Call 이 제공되기 전(인텔 펜티엄 2 이전)에 사용되었던 INT 2E를 알아보자.







INT 2E는 기존의 인터럽트 방식을 사용하여 SSDT에 접근한다. 위의 그림에서도 볼수 있듯이 여러 작업을 거쳐 함수에 접근하므로 SYSENTER에 비해 느리다. 반면에 SYSENTER는 팬티엄2부터 제공되는 MSR(0x176)에 KiFastCallEntry의 주소가 저장되어 있으므로 INT 2E의 방식보다 빠르게 함수에 접근 할 수 있다.

0 개의 댓글:

댓글 쓰기