티스토리 뷰

Reversing/Anti-Reversing

[Reversing] PEB, Anti-Debugging

정짱 정뚱띵 2020. 2. 11. 09:39

[Reversing] PEB, Anti-Debugging


PEB란? Process Environment Block로 프로세스에 대한 환경 정보를 담고 있는 것을 알 수 있다.

각 프로세스들 마다 PEB를 가지고 있으며, 스레드로는 TEB 가지고 있다.

FS:[18] = TEB 주소


PEB의 안티디버깅에 대해 작성을 해보면, PEB Structure 을 살펴봐야 된다.


   +0x002 BeingDebugged    

해당 멤버를 살펴보면 디버깅 중일 때 해당 멤버의 값은 '1'로 설정이 된다.

우회를 하기 위해서는 PEB[2] 값을 '0'으로 수정하면 된다.

참고, Kernel32.dll에서 IsDebuggerPresent() 함수가 이 필드를 참고하여 디버깅 상태 확인 후 리턴값을 준다.

   +0x018 ProcessHeap      

PEB 멤버 ProcessHeap 정보를 담고 있는 HEAP 포인터

HEAP 멤버의 Flags(0x40)와 ForceFlags(0x44)는 디버깅 유무에 따라 다른 값을 가지며 다음과 같음


디버깅 중이 아닐 시 : Flags(2), ForceFlags(0)

디버깅 중일 시 : Flags(0x50000062), ForceFlags(0x40000060


   +0x068 NtGlobalFlag     

해당 멤버는 디버깅 중일 때 해당 멤버의 값은 '70'으로 설정이 된다.

우회를 하기 위해서는 PEB[68] 값을 '0'으로 수정하면 된다.

'Reversing > Anti-Reversing' 카테고리의 다른 글

[Reversing] PEB, Anti-Debugging  (0) 2020.02.11
[Reversing] ZwSetInformationThread, Anti-Debugging  (0) 2020.02.10
[Reversing] Anti-Reversing  (0) 2020.01.06
댓글
«   2020/06   »
  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        
Total
145,365
Today
59