今天继续看逆向工程核心原理,今天看到了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共同作用。
后续继续学习,今天先睡了