티스토리 뷰

TRAP FLAG를 이용하여 DEBUGING 감지

자신이 만든 프로세스가 타인에 의하여 디버깅이 되고 있는지, 윈도우가 전역적으로 디버깅모드 인지 확인하는 기초적인 방법 입니다. 
Windows 32bit 프로세스(x86)에서 사용가능한 ASM을 이용하며 x64(AMD64)에서는 ASM를 64bit용으로 수정하시면 됩니다. 

Source Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/******************************************************************************
* _    _                 _       _  __  _____               _           _     
*| |  | |               | |     | |/ / |  __ \             | |         | |    
*| |__| | __ _  ___     | |_   _| ' /  | |  | | _____   __ | |     __ _| |__  
*|  __  |/ _` |/ _ \_   | | | | |  <   | |  | |/ _ \ \ / / | |    / _` | '_ \ 
*| |  | | (_| |  __/ |__| | |_| | . \  | |__| |  __/\ V /  | |___| (_| | |_) |
*|_|  |_|\__,_|\___|\____/ \__,_|_|\_\ |_____/ \___| \_(_) |______\__,_|_.__/ 
*
* Copyright (c) HaeJuK Dev Lab All Rights Reserved.
*
*******************************************************************************/                                                                             
/**
@file        CheckTrapFlag.cpp
@brief
 
@author      Woolim Choi
@date        Create 2017.10.25
@ntoe        Trapflag의 값을 확인하여 Debug를 감지한다.
*/
 
bool CheckTrapFlag()
{
    bool bException = false;
    __try
    {
        __asm
        {
           push fd
            or dword ptr[esp],0x100
           pop fd
            nop
        }
    }
    __except(EXCEPTION_EXECUTE_HANDLER)
    {
        bException = true;
        return bException;
    }
 
    return bException;
}
 
 
cs

 

댓글
댓글쓰기 폼