예외처리 루틴을 따라가다보면 예외가 난 부분으로 다시 가는 경우가 있습니다.
예외발생 옵션이 EXCEPTION_CONTINUE_EXECUTION 같은 경우
예외가 발생하면 예외가 발생한 장소로 다시 가게 됩니다.
이때 예외루틴을 따라가다보면 아래와 같은 함수를 만나게 됩니다.
NtContinue 함수입니다.
아마 언패킹 하는 과정에서도 많이 보셨을 거라 봅니다. 저 함수를 실행시키면 어디론가 가게되죠.
그 어디가 어디인지를 봐보겠습니다.
일단 NtContinue의 함수 정보를 보도록 하겠습니다.
첫번째 인자는 CONTEXT구조체 포인터 입니다.
CONTEXT구조체 정보를 보도록 하겠습니다.
하드웨어브포를 관리하는 Dr레지스터도 있고.. 각 레지값을 담고 있는 구조체입니다.
그 중에 Eip는 다음 실행할 명령어 주소를 담고있는 레지스터 입니다. 해당 위치의 값을 보게되면 NtContinue함수를 실행했을 때 튀게되는 주소를 알 수 있습니다.
그리고 WinDbg에서 보니 NtContinue로 나왔는데 올디로 봐보면 ZwContinue로 나와있더군요.
뭐 같은 함수이므로 큰 상관은 없습니다.
NtContinue함수 정보입니다.
'My Study > Reversing' 카테고리의 다른 글
RDTSC를 사용한 안티리버싱 기술 (0) | 2010.05.01 |
---|---|
예외처리를 사용한 안티리버싱 (0) | 2010.04.30 |
가상 머신 탐지 기법 (2) | 2010.04.26 |
DebugActiveProcess 후킹 후 프로세스 Attach막기 (7) | 2010.04.23 |
프로그램 시작 시 디버거 자동으로 붙게하기 (6) | 2010.04.20 |