본문 바로가기

SEH

SEH (Structured Exception Handling) SEH (Structured Exception Handling) __try, __except를 이용하는 방법을 말합니다. try에서 실제 처리할 코드를 넣어주고 except에서 예외가 발생했을 때 처리하는 코드를 넣어줍니다. 보통 코드를 작성을하면 if문을 통해서 NULL일 경우에 대해 GetLastError()을 이용하여 어떤 에러가 발생했는지 화인합니다. 모든 부분에 if문을 통해서 처리를 할 수도 있지만 SEH를 이용할 수도 있습니다. Termination Handler Termination Handler는 종료 핸들러라고 하는데 이 핸들러에서 사용되는 키워드는 __try, __finally를 사용합니다. 123456789101112131415161718192021222324252627#includ.. 더보기
Anti Debugging - Dynamic Anti Debugging - Dynamic Dynamic Anti Debugging은 프로그램의 코드를 트레이싱 하지 못하도록 지속적으로 방해하는 기법입니다.내부 코드와 데이터를 리버싱으로부터 감추고 보호하는 것을 말합니다. PE Protector에서 많이 사용되고 원본 프로그램의 핵심 알고리즘을 보호하기 위해서 사용됩니다.OEP로 가지 못하도록 방해합니다. 예외 안티 디버깅에서 예외를 이용하는 방법이 많이 나옵니다. 정상적으로 실행된 프로세스에서 예외가 발생하면 SEH 메커니즘에 의해 OS에서 예외를 받아서 프로세스에 등록된 SEH를 호출합니다.하지만 디버깅을 하는 경우 프로세스에서 예외가 발생하면 디버거에서 예외를 담당합니다. 이러한 방식을 이용해서 정상 실행되는 경우와 디버깅 상태에서 실행되는 경.. 더보기
Structured Exception Handler (SEH) Structured Exception Handler (SEH) Structured Exception Handler (이하 SEH)는 Windows에서 제공하는 예외 처리입니다. __try, __except, __finally 키워드로 구현할 수 있습니다.C++에서 제공하는 tyr, catch와는 다릅니다. SEH가 먼저 만들어졌습니다. SEH 프로그램을 실행시키면 위 그림처럼 Hello :)를 출력해줍니다. 정상적으로 실행이 되는것 같지만 사실 내부에서 예외가 발생하여 처리가 되어서 정상실행 된 것입니다. OllyDBG를 이용해서 seh.exe를 실행시켜보면 아래와 같은 위치에서 Access violaton이 발생합니다. EAX의 값을 가져오지 못하고 있습니다. 밑에 상태창에서 Access violati.. 더보기