본문으로 바로가기

ZwQueryInformationProcess - ProcessDebugPort 이용한 안티 디버깅
ZwQueryInformationProcess를 이용하여 디버깅에 관련된 다양한 정보를 얻을 수 있으며, 해당 정보를 이용하여 안티 디버깅 수행.
NtQueryInformationProcess는 ZwQueryInformationProcess 래퍼 함수이며, User-Level에서는 두 함수의 기능이 동일.

 

MSDN

1번째 인자(ProcessHandle) : 정보를 얻을 프로세스의 핸들
2번째 인자(ProcessInformationClass) : 0x7(ProcessDebugPort)
3번째 인자(ProcessInformation) : Debugger 연결 중인 경우 -1(0xFFFFFFFF) 반환, 아닐 경우 0을 반환

 

소스 코드


안티 디버깅 우회 방법
1. ZwQueryInformationProcess의 2번째 인자로 0x7(ProcessDebugPort)이 전달될 경우 반환되는 3번째 인자 값을 0으로 변경
2. 디버거의 안티디버깅 플러그인 이용(ex : OllyDbg의 OllyAdvanced Plug-In을 이용)

 

Reference

MSDN : https://msdn.microsoft.com/en-us/library/windows/desktop/ms725506(v=vs.85).aspx

 

추가 내용

앞 전에 사용한 CheckRemotePresent 함수는 내부적으로 ZwQueryInformationProcess의 ProcessDebugPort를 사용하는 것을 알 수 있음