TEB和PEB

以下讨论的是32位系统win

TEB

线程环境块
每一个线程都有一个TEB
在应用层而不是系统层中

线性地址

一个进程又很多线程,每一个线程又都有一个TEB,这些TEB都在进程的0x7FFDE000的线性内存处开始,每4KB为一个TEB

查看TEB结构

不同的windows版本种TEB结构会不同
TEB结构的开头是个NT_TIB结构,这个结构的0x018是个指向NT_TIB自己的指针

通过段寄存器访问TEB

FS段寄存器指向当前线程的TEB,所以fs:[18h]就是TEB的指针

mov eax,dword ptr fs:[18h]

eax就是TEB的指针

PEB

进程环境块
每个进程有一个PEB
在应用层而不是系统层中

通过段寄存器访问PEB

由于TEB中的0x30偏移处是指向PEB的指针,可以直接通过fs:[30h]获得PEB的指针

mov eax,dword ptr fs:[30h]

eax就是PEB的指针

通过BeingDebugged进行反调试

PEB结构中有一个BeingDebugged字段,当进程被调试时会变成1,否则为0,这个字段可用于反调试
更多反调试方法专门再写一篇进行总结

标签:笔记

添加新评论