2010년 5월 18일 금요일
컴파일
아래의 프로그램은 Microsoft의 Windbg 이다.
SEH는 다음 에러 핸들러의 위치를 가진 Next 포인터와 핸들러를 가진 linked list이다. Dg는 GDT를 참조하는 명령어
아래의 exception registration record 구조체에 Next와 Handler가 존재하는 것을 볼 수 있다.
Dg fs를 하면 fs의 정보가 나오는데 fs:[0]을 찾기 위해
Base 주소를 참조한다.
주소를 대입해서 따라 들어가보면 Next와 Handler가 위치한 주소값을 확인할 수 있다.
다음 코드를 수행하면
SEC가 추가된 것을 확인할 수 있다.
다음 div 부분에서 0으로 나눴기 때문에 예외가 발생할 것이다
아래에 Integer divide-by-zero 가 발생한 것을 볼 수 있다.
핸들러를 찾아가서 bp를 걸고 확인 해 보자
Dt_context 명령을 이용해서 레지스트의 값을 확인해보면 현재 ecx값이 0이다.
코드를 한줄 더 수행한 후 확인해 보면 ecx 값이 1로 변경 된 것을 확인 할 수 있다.
새로 추가된 seh 가 수행되어 ecx 값을 변경 시킨 것이다.
▶ 코드 파일
'Programming > Hacking & Security' 카테고리의 다른 글
[Perl] URL 인코딩 By 용호 (0) | 2010.06.22 |
---|---|
[Perl] 정규표현식 (Grep 활용) By 용호 (0) | 2010.06.18 |
[Reversing] Struct (구조체) by 용호 (0) | 2010.05.31 |
[Reversing] 반복문 문제 by 용호 (0) | 2010.05.26 |
[Reversing] 반복문의 동작 원리 by 용호 (0) | 2010.05.26 |
댓글