반응형
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 주소
얍!
반응형
'취약점 분석 > windbg' 카테고리의 다른 글
Mutex 뮤텍스 API 함수 정리 (0) | 2019.02.23 |
---|---|
(임계영역) CriticalSection API 함수 정리 (0) | 2019.02.23 |
windbg 포인터 참조하기 (0) | 2018.09.06 |
Trace 명령어 (0) | 2018.09.03 |
Windbg LFH 동작시킨 상태로 디버깅하는 방법 (0) | 2018.07.19 |