반응형
.
※SEH(Structed Exception Handler)란?
Windows에서 제공하는 예외처리 시스템.
※예외처리방법
프로그램 실행중 예외가 발생할 경우 발생한 예외처리는 해당 프로세스에게 맡기며 별도의 SEH가 존재하지 않으면 Windows에서 처리합니다.
그러나 디버깅중에는 Windows는 예외처리를 디버거에게 맡긴다. 이를 이용하여 안티디버깅이 가능합니다.
※안티디버깅 코드
디버깅중에 예외처리를 디버거에서 맡는다는 특징을 이용하여 안티디버깅 코드를 작성해 보았습니다.
올리디버거로 디버깅결과, 예외처리를 디버거에서 처리하기때문에 프로세스의 예외처리루틴이 동작하지 않아 "정상 작동중!"이 출력과 debugflag가 TRUE로 변환되지 않는 것을 볼 수 있습니다.
※SEH Chain
예외처리 루틴들을 관리를 위해 만들어짐. 구조는 다음과 같다.
각 SEH에 해당하는 예외가 발생시 예외처리를 하는 SEH Handler가 실행된다. SEH Handler의 처음부터 순차적으로 예외에 해당하는지 체크하고 루틴을 실행합니다.
SEH Chain에 접근방법은 FS레지스터 [0] ( TEB.NtTib.ExceptionList)를 이용하여 접근합니다. 마지막 Next SEH Record가 SEH Chain경우 0xFFFFFFFF가 됩니다.
반응형
'Security > Windows System' 카테고리의 다른 글
IO_STACK_LOCATION란? (0) | 2018.02.03 |
---|---|
※CONTEXT 정리 (0) | 2017.12.06 |
※PEB(Process Environment Block)란? (0) | 2017.08.21 |
※TLS(Thread Local Storage)란? (0) | 2017.08.21 |
윈도우 부팅과정(Windows Boot Process) (0) | 2017.08.21 |
댓글