TEB和PEB的知识复习

PEB(Process Environment Block,进程环境块):存放进程信息,准确的PEB地址应该从系统的EXPROCESS结构的0x1b0偏移出获得,但这个结构位于系统地址空间,访问 需要 ring0权限,所以一般通过TEB结构的偏移0x30处获取PEB.

   获取peb代码:mov eax, fs:[0x30]  

         mov PEB, eax

TEB(Thread Environment Block,线程环境块): 存放线程信息,位于用户地址空间,进程中的每个线程都有自己的一个TEB.通过fs寄存器来访问,一般储存在fs:[0].

1. PEB:

使用windbg查看peb:

1)!peb (注意:使用!peb只能看到重要成员信息,但是可以看到它的起始地址.)

TEB和PEB的知识复习_第1张图片

2)dt 7efde000 _peb (注意:使用dt _peb 能看到所有成员信息,但是看不到它的起始地址.)

TEB和PEB的知识复习_第2张图片

通过以上输出结果,可以获得进程:

ImageBaseAddress 程序加载的基地址, 

ProcessHeap 堆起始地址

BeingDebuggedDebug 运行标志

等等信息.

知识点:

... peb + 0xc ldr  ==> _PEB_LDR_DATA  // 可执行文件的装载信息.

... 使用dt 查看ldr.

TEB和PEB的知识复习_第3张图片

... 查看LDR_MODULE结构

TEB和PEB的知识复习_第4张图片

... 链表节中的Frist,Next.

TEB和PEB的知识复习_第5张图片

以上是PEB中一些重要的信息.


2.TEB:

使用windbg查看teb

1)!teb  (查看teb所有重要成员)

TEB和PEB的知识复习_第6张图片

2)dt 7efdd000 _teb  (查看teb所有成员) 

        fs:[0x18]指向的是TEB自身, fs[0x30]就是PEB所在的位置.

TEB和PEB的知识复习_第7张图片

TEB和PEB的知识复习_第8张图片

TEB各偏移说明:

0x0: 指向SEH链指针

0x4: 线程堆栈顶部

0x8: 线程堆栈底部

0x18: 指向TEB自身

0x30:  PEB结构地址









你可能感兴趣的:(PE相关知识)