본문 바로가기

My Study/Reversing

ZwContinue 함수 정체

예외처리 루틴을 따라가다보면 예외가 난 부분으로 다시 가는 경우가 있습니다.

예외발생 옵션이 EXCEPTION_CONTINUE_EXECUTION 같은 경우 
예외가 발생하면 예외가 발생한 장소로 다시 가게 됩니다.
이때 예외루틴을 따라가다보면 아래와 같은 함수를 만나게 됩니다.

NtContinue 함수입니다.

아마 언패킹 하는 과정에서도 많이 보셨을 거라 봅니다. 저 함수를 실행시키면 어디론가 가게되죠.
그 어디가 어디인지를 봐보겠습니다.

일단 NtContinue의 함수 정보를 보도록 하겠습니다.

첫번째 인자는 CONTEXT구조체 포인터 입니다.
CONTEXT구조체 정보를 보도록 하겠습니다.

하드웨어브포를 관리하는 Dr레지스터도 있고.. 각 레지값을 담고 있는 구조체입니다.
그 중에 Eip는 다음 실행할 명령어 주소를 담고있는 레지스터 입니다. 해당 위치의 값을 보게되면 NtContinue함수를 실행했을 때 튀게되는 주소를 알 수 있습니다.

그리고 WinDbg에서 보니 NtContinue로 나왔는데 올디로 봐보면 ZwContinue로 나와있더군요. 
뭐 같은 함수이므로 큰 상관은 없습니다.

NtContinue함수 정보입니다.