• 第46章:TEB


    TEB(Thread Environment Block,线程环境块),此结构体包含进程中运行的线程的各种信息,进程中的每个线程都对应一个 TEB 结构体

    由于微软的符号服务器无法正常访问,因此在没有符号的情况下,无法查看自己系统中 TEB 结构体。

    TEB 结构体成员众多且结构复杂,在用户模式下起着重要作用的成员有2个:

    ProcessEnvironmentBlock 成员指向 PEB (进程环境块)。NT_TIB(TIB 是 Thread Information Block 的简称):

    TEB 访问方法——通过 Ntdll.CurrentTeb() API 来返回当前线程的 TEB 结构体地址

     

    返回的 FS:[18] 指向 7FFDF000 ,即 TEB 的首地址。

    FS 段寄存器

    FS段寄存器用来指示当前线程的 TEB 结构体。IA-32 中进程的虚拟内存为 4GB ,但寄存器大小只有16位,因此 FS 寄存器持有 SDT 的索引,而该索引持有实际的 TEB 地址。

    通过访问 GDTR 获得 GDT(SDT 即段描述符表,是 GDT 的一个数据结构项) 的入口地址从而访问到 TEB,因此 FS 寄存器也叫段选择符。

    FS:[18] 表示  TEB 起始地址,FS:[30] 表示 PEB 起始地址,FS:[0] 表示 SEH 起始地址。

  • 相关阅读:
    monads-are-elephants(转)
    程序语言简史(转)
    语法的省略不能造成编译器的歧义
    scala getter and setter
    隐式类型转换
    java 调用 scala
    列表的操作
    Scala HandBook
    Scala 高级编程练习
    Net 2.0 C# 专用的只读类Tuple
  • 原文地址:https://www.cnblogs.com/Rev-omi/p/13580537.html
Copyright © 2020-2023  润新知