HEAP과 LDR 메모리 영역의 Magic Number 검색에 의한 안티디버깅
Debug 기반에서 프로세스가 실행된 경우 ProcessHeap 정보를 가지고 있는 HEAP 메모리 영역과 로드된 모듈 리스트 정보를 가지고 있는 LDR_DATA_TABLE 메모리 영역에 0xFEEEFEEE 값이 존재하게 되며, 이를 이용하여 안티 디버깅을 수행
방법 : HEAP, LDR 시작 주소에서 접근할 수 있는 영역까지 데이터를 가져와 0xFEEEFEEE 값이 존재할 경우 디버깅 상황임을 간주, 데이터를 가져올 때 더 이상 접근할 수 없는 영역까지 접근하여 예외가 발생하면 디버깅 상황이 아님
Wiki : https://en.wikipedia.org/wiki/Magic_number_(programming)
Heap과 LDR 멤버 접근 그림
소스 코드
안티 디버깅 우회 방법
1. HEAP이나 LDR 영역의 0xFEEEFEEE 값에 의해 안티 디버깅 중임이 판단되면, 해당 FEEEFEEE 값을 비교하는 루틴을 찾아 다른 존재하지 않는 값을 찾게 끔 수정
'Reversing > Anti Debugging' 카테고리의 다른 글
[VM 탐지] Hard Disk Name (0) | 2015.03.26 |
---|---|
[CRC 기반] 코드 무결성 검사를 통한 0xCC(BreakPoint) 또는 Code Patch 탐지 (4) | 2015.03.26 |
[TEB,PEB 기반] ProcessHeap - Flags, ForceFlags (0) | 2015.03.26 |
[TEB,PEB 기반] PEB.NtGlobalFlag (0) | 2015.03.26 |
[TEB,PEB 기반] PEB.BeingDebugged (0) | 2015.03.26 |