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只能看到重要成员信息,但是可以看到它的起始地址.)


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


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

ImageBaseAddress 程序加载的基地址, 

ProcessHeap 堆起始地址

BeingDebuggedDebug 运行标志

等等信息.

知识点:

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

... 使用dt 查看ldr.


... 查看LDR_MODULE结构


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


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


2.TEB:

使用windbg查看teb

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


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

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


TEB各偏移说明:

0x0: 指向SEH链指针

0x4: 线程堆栈顶部

0x8: 线程堆栈底部

0x18: 指向TEB自身

0x30:  PEB结构地址









  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值