본문 바로가기

취약점 분석/windbg

FS 레지스터를 알아보자.

반응형

FS 레지스터를 알아보자.


FS 레지스터유저모드에서 현재 스레드의 TEB(Thread Environment Block)을 가리킨다.

FS 레지스터커널모드에서는 일반적으로 KPCR(Kernel Process Control Region)을 가리킨다.


사용자 어플리케이션의 안티리버싱 기법을 정리하고자 FS레지스터를 짚고있으므로 유저모드 입장에서 다룬다.


<FS레지스터와 TEB 값이 동일한지 확인해보자.>


in windbg

dt _TEB 명령어를 입력 ==> TEB 구조체 구조 확인 가능.


FS레지스터가 TEB주소를 담는다면, 

FS:[0x30] == TEB.ProcessEnvirionmentBlock == PEB 주소



!teb

:  현재 스레드의 요약정보 / TEB 주소(0x7efdd000)를 얻고,


dt _TEB 7efdd000 

: 현재 스레드의 TEB 구조체 정보 전체 조회.

: +0x30 번째에 있는 PEB 주소 획득. (0x7EFDE000)


poi(fs:[0x30])

: FS[0x30]번째 값 조회

: TEB의 PEB 주소와 동일함을 알 수 있다. (0x7EFDE000)


==> 유저모드에서 FS레지스터 == 현재 스레드의 TEB 주소


얍!

반응형