【技术研究】线程环境块TEB

发布时间 2023-09-22 23:20:24作者: Corax0o0

今天继续看逆向工程核心原理,今天看到了TEB,这个部分之前看加密与解密的时候基本上就没看明白,这次打算把环境配置完备,全部都实践一次。
首先看到的是TEB结构体

TEB结构体成员




里面的重要成员有两个

  • _NT_TIB
  • ProcessEnvironmentalBlock
    第二个是个指向结构体的指针
    第一个是NT_TIB结构体 这个TIB是线程信息块

    第一个是一个意外报错项
    其他重要的就是self,这是一个自引用指针
    还有一个是刚刚的ProcessEnvironmentBlock成员
    在虚拟机里面实践一下
    用OD打开一个进程,比如这个notepad,在查找所有模块名称里面找到这个API

    点进去

    可以看到这里是把fs:【0x18】,根据信息框的信息,是7EFDD018的内容,也就是7EFDD000给了EAX,然后传了出去
    所以这里返回的其实是7EFDD000。
    然后后面要研究一下FS这个是干什么用的。

    根据另外的一些资料,计算机系统当中不止这一个段寄存器,在线程分配过来的时候,FS分到了。然后FS分配到了notepad所需要的内存空间。
    而FS作为16位,无法表示4G虚拟内存,所以这个FS其实并非直接指向地址,而是一个SDT的索引,类似于一个表,这个SDT有TEB地址,所以是FS【0x18】指向这个表的0x18位,然后0x18位有个TEB位置。
    他需要GDTR共同作用。

    后续继续学习,今天先睡了