개발/윈도우
TRAP FLAG를 이용하여 DEBUGING 감지
-=HaeJuK=-
2014. 4. 22. 11:04
반응형
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 |
728x90