PEB(+0x2) BeingDebugged 검사 : 디버깅 중이면 1, 일반 실행은 0을 가진다.
관련 함수 : IsDebuggerPresent() - BeingDebugged 값 반환
PEB(+0x68) NtGlobalFlag 검사 : 디버깅 중이면 0x70, 일반 실행은 0을 가진다.
[*] 실행 후 attach한 경우에는 그대로 0을 가짐.
ex)
mov eax, fs:[0x18];
mov eax, dword ptr [eax+0x30];
movzx eax, byte ptr [eax+0x68];
ntdll의 NtQueryInformationProceses() 함수
PROCESSINFOCLASS 구조체에서 디버거 탐지에 사용되는 필드
ProcessDebugPort(0x7), ProcessDebugObjectHandle(0x1e), ProcessDebugFlasg(0x1f)
ProcessDebugPort(0x7) : 디버깅 중이면 0xfffffffff, 일반 실행은 0을 가진다.
ProcessDebugObjectHandle(0x1e) : 0x20 / 0x0
ProcessDebugFlasg(0x1f) : 0x0 / 0x1
[*] CheckRemoteDebuggerPresent함수 : ProcessDebugPort로 디버깅 탐지. (다른 프로세스의 디버깅 여부도 판단 가능)
ntdll의 ZwSetInformationThread() 함수
ThreadHideFromDebugger(0x11) : 디버거를 detach시킴
'Reversing > Reversing' 카테고리의 다른 글
무료 .NET Decompiler (1) | 2013.11.04 |
---|---|
ollydbg로 dll파일 디버깅 (0) | 2013.02.28 |
PE의 IAT입력 과정 (0) | 2012.10.31 |
함수 호출 규약 (1) | 2012.10.16 |
Windbg 명령어 요약 (0) | 2012.10.13 |