본문 바로가기

Reversing

PEB

PEB란 프로세스 정보를 담고 있는 구조체

TEB.ProcessEnvironmentBlock 멤버가 PEB구조체의 주소

 

FS:[30] = TEB.ProcessEnvironmentBlock = address of PEB

 

어셈 코드1

mov eax, DWORD PTR FS:[30]

어셈 코드2

mov eax, DWORD PTR FS:[18]   ; FS[18] = address of TEB

mov eax, DWORD PTR DS:[EAX+30]  ; DS[EAX+30] = address of PEB

 

 

 

PEB 구조체 - 자세한 것은 WinDbg로 확인

주요 멤버

BeingDebugged -> IsDebuggerPresent 함수다 디버깅을 당하는지 판단하는 함수인데 이 함수가 이 멤버 정보를

                            참조한다.

                            위 그림에서 7FFDA002 값 01(TRUE), 디버깅 중이라는 뜻

ImageBaseAddress -> 프로세스의 ImageBase 표시

Ldr -> _PEB_LDR_DATA 구조체의 포인터. 프로세스에 로딩된 모듈의 로딩 베이스 주소를 직접 구할 수 있는

           방법 제공

PrecessHeap & NtGlobalFlag -> 프로세스가 디버깅 중이면 이 멤버는 특정한 값을 가짐. 안티 디버깅에 사용됨

                                               NtGlobalFlag 경우 디버깅 중이면 0x70

 

자세한 내용은 첨부파일 참조

PEB_ProcessHeap_Flag_Debugger_Detection.pdf

첨부 파일 출처:http://mylabs.tistory.com/25

 

출처 : 리버싱 핵심 원리

 

 

'Reversing' 카테고리의 다른 글

PEB 정보를 이용한 Anti debugging  (1) 2012.11.14
SEH  (0) 2012.11.13
TEB  (0) 2012.11.13
TLS  (0) 2012.11.13
안티 디버거 기술  (0) 2012.11.12