안티 디버깅 기법 중에서  NTGlobalFlag와  BeingDebugged에 관한 정보.
위 2가지는   PEB 구조체에 속해있다.

 
PEB = Process Environment Block  -      ' FS:[0x30] '

 
NTGlobalFlag =  PEB + 0x68 주소
반환값이  0일경우 , 디버깅중이 아님.   0이 아닌 다른값일경우  , 디버깅 중으로 판단.

 

NTGlobalFlag  디버깅 감지 루틴의 예

 
mov eax,fs:[0x30]             // PEB 구조체 주소에 접근 :  EAX=7FFDE000
mov eax,[eax+0x68]        //EAX=7FFDE068 의 값 =  디버거가 실행중일 경우   0x70
and eax,0x70                     // 0x70와  and 연산을 해서 0일경우 debugging 중이 아님.  0이 아닐경우  debugging 중
 

 

 

 

 

 

 

 

BeingDebugged =  PEB + 0x02 주소

반환값이 1일경우 , 디버깅 당함.   0일경우  디버깅 X

BeingDebugged  디버깅 감지루틴의 예

 

mov eax,fs:[0x30]               // PEB 구조체 주소에 접근 : EAX = 7FFDE000
mov eax,[eax+2]                 //EAX = 7FFDE002의 값 = 디버거가 실행중일 경우 1
 

 

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
by Sone 2009.07.06 01:05
| 1 |

티스토리 툴바