PEB,TEB初学.
来源:互联网 发布:java编程生成图形 编辑:程序博客网 时间:2024/06/05 10:06
TEB(Thread Environment Block,线程环境块)系统在此TEB中保存频繁使用的线程相关的数据。位于用户地址空间,在比 PEB 所在地址低的地方。进程中的每个线程都有自己的一个TEB。一个进程的所有TEB都以堆栈的方式,存放在从0x7FFDE000开始的线性内存中,每4KB为一个完整的TEB,不过该内存区域是向下扩展的。在用户模式下,当前线程的TEB位于独立的4KB段,可通过CPU的FS寄存器来访问该段,一般存储在[FS:0]。在用户态下WinDbg中可用命令$thread取得TEB地址。
PEB(Process Environment Block,进程环境块)存放进程信息,每个进程都有自己的PEB信息。位于用户地址空间。在Win 2000下,进程环境块的地址对于每个进程来说是固定的,在0x7FFDF000处,这是用户地址空间,所以程序能够直接访问。准确的PEB地址应从系统的EPROCESS结构的0x1b0偏移处获得,但由于EPROCESS在系统地址空间,访问这个结构需要有ring0的权限。还可以通过TEB结构的偏移0x30处获得PEB的位置,FS段寄存器指向当前的TEB结构:
mov eax,fs:[0x30]
mov PEB,eax
在用户态下WinDbg中可用命令$proc取得PEB地址。
图一:PEB和TEB
图二:进程和线程
KPCR(Kernel's Processor Control Region,内核进程控制区域)是一个不会随WINDOWS版本变动而改变的固定结构体,在它的末尾(偏移0x120)指向KPRCB结构。KPRCB同样是一个不会随WINDOWS版本变动而改变的固定结构体。它包含有指向当前KTHREAD的指针(偏移值0x004)。ETHREAD的第一项是KTHREAD,也就知道了当前的ETHREAD基地址。KTHREAD中的_KAPC_STATE结构包含当前KPROCESS的地址每个进程都有一个EPROCESS结构,里面保存着进程的各种信息,和相关结构的指针。EPROCESS结构位于系统地址空间,所以访问这个结构需要有ring0的权限。EPROCESS的第一项是KPROCESS。
- PEB,TEB初学.
- TEB PEB
- fs TIB TEB PEB
- FS TIB TEB PEB
- get PEB or TEB
- PEB TEB结构体使用
- windbg调试命令:!peb、!teb
- fs寄存器获取PEB/TEB
- windbg调试命令6(!peb、!teb)
- windbg调试命令6(!peb、!teb)
- TEB和PEB的知识复习
- 8.asm-PEB、TEB的地址(ntdll!RtlGetCurrentPeb得到PEB)
- WinDBG 技巧:显示进程/线程环境参数(!peb 和 !teb 命令)
- Win32下FS寄存器、TEB和PEB详解
- 线程的TEB和进程的PEB结构
- TEB
- 通过TEB/PEB枚举当前进程空间中用户模块列表
- 通过TEB/PEB枚举当前进程空间中用户模块列表
- 利用Microsoft.XMLHTTP和Microsoft.XMLDOM实现xml文件的读取
- Flex 4中LineSeries的两个Bug
- 咯机会见客户
- Asp.Net字符格式化总结——以备以后查阅
- silverlight Storyboard
- PEB,TEB初学.
- C语言的三世轮回
- 自定义busybox启动时创建的设备节点,mdev -s的另一种用法
- Linux基本操作命令
- 一种二维条码图像处理流程
- (转)Android系统WAP上网设置
- symbian视频编程资料
- 内部类
- (转)Android下实现wap和net自适应