본문으로 바로가기

ProcessHeap의 Flags와 ForceFlags를 이용한 안티디버깅 - Inline Assembly 접근 방식
PEB(Process Environment Block)에는 실행 중인 프로세스에 대한 정보가 담겨 있으며, PEB 멤버에 ProcessHeap 정보를 담고 있는 HEAP 포인터가 존재
HEAP 멤버의 Flags와 ForceFlags는 디버깅 유무에 따라 다른 값을 가지며 다음과 같음
디버깅 중이 아닐 시 : Flags(2), ForceFlags(0)
디버깅 중일 시 : Flags(0x50000062), ForceFlags(0x40000060)

ProcessHeap의 Flags와 ForceFlags 멤버 접근 그림

 

소스 코드


안티 디버깅 우회 방법
1. 디버깅 시작 시 HEAP.Flags 멤버 값을 2로, HEAP.ForceFlags 멤버 값을 0으로 변경

2. 디버거의 안티디버깅 플러그인 이용(ex : OllyDbg의 OllyAdvanced Plug-In을 이용)