티스토리 뷰

728x90
반응형

[Reversing] UnHandledExceptionFilter 


참조

https://www.codeproject.com/Articles/30815/An-Anti-Reverse-Engineering-Guide#UnhandledExceptionFilter

https://sanseolab.tistory.com/16


Access Violation가 발생하여 계속 따라 가다보니 처음 본 함수를 발견하여 정리한다.


일반적으로 디버깅 중이라면 UnHandledExceptionFilter()는 실행 되지 않는다고 한다.

필자도 역시 먼저 예외 발생 후 KiUserExceptionDispatcher()에서 UnHandledExceptionFilter() 내부에서 ZwQueryInformationProcess()를 호출하였다.

예외가 발생하고 진행하다보니 결국 ZwQueryInformationProcess() 나온 이유가 있었다.


NTSTATUS WINAPI ZwQueryInformationProcess(

  _In_      HANDLE           ProcessHandle,

  _In_      PROCESSINFOCLASS ProcessInformationClass,

  _Out_     PVOID            ProcessInformation,

  _In_      ULONG            ProcessInformationLength,

  _Out_opt_ PULONG           ReturnLength

); 

추가적으로 ZwQueryInformationProcess()의 디버깅 유무에 관련하여 정리한다. 

함수의 두번째 멤버인 ProcessInformationClass값이 0x7 면 세번째에 있는 output인 ProcessInformation가 가르키는 주소에 FFFFFFFF 값이 나오게 된다. 

해당 값을 받으면 프로세스가 종료하기 때문에 해당 값을 0으로 수정이 필요하다.

728x90
반응형
댓글
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today