취약점 분석/windbg

FS 레지스터를 알아보자.

night-Ohl 2019. 2. 26. 17:54
반응형

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 주소


얍!

반응형