ii4gsp

구조적 예외 처리 SEH (Structured Exception Handler) 본문

시스템 해킹/Technique

구조적 예외 처리 SEH (Structured Exception Handler)

ii4gsp 2020. 1. 15. 19:46

SEH (Structured Exception Handler)

프로그램에서 에러가 발생하면 경고창과 함께 꺼지는 현상이 일어난다.

이러한 것이 바로 예외 처리이다.

 

컴파일러는 SEH 체인을 만들고 관리하며, 예외가 발생하면 우선적으로 미리 등록된 체인의 핸들러를 실행하고,

해결되지 않으면 다음 단계의 핸들러를 실행한다.

 

SEH 체인은 여러 개의 EXCEPTION_REGISTRATION 구조체를 통해 구성된다.

Typedef struct _EXCEPTION_REGISTRATION {
	EXCEPTION_REGISTRATION *next;
    	EXCP_HANDLER handler;
    } EXCEPTION_REGISTRATION, *PEXCEPTION_REGISTRATION;

*next 멤버는 SEH 체인에 연결된 다음 구조체를 가리키는 포인터이다.

handler 멤버는 예외처리를 담당하는 핸들러 함수이다.

예외처리를 하지못하면 ntdll.dll 내부 핸들러가 호출되서 프로그램 오류 발생 창을 띄우고 프로그램이 종료된다.

 

 

int main()
{
	__try
    {
    	// 예외 처리를 적용할 코드
	}
    
    __except(EXCEPTION_EXECUTE_HANDLER)
    {
    	// 예외 발생시 호출
    }
}

또한 프로그래머는 try / except 구문을 이용하여 핸들러를 직접 추가할 수 있다.

 

'시스템 해킹 > Technique' 카테고리의 다른 글

[Heap] Buffer Overflow  (3) 2020.01.19
SEH Overwrite 기법  (0) 2020.01.15
윈도우 실행 파일 구조  (0) 2020.01.13
쉘코드 모음  (0) 2020.01.08
[2] 버퍼 오버플로우 (Buffer Overflow) 개념  (0) 2019.11.16
Comments