TEB线程环境块

今天分析的时候在IDA里面看到这样一段代码,差点忽视了:
获取PID - 图1
遇到代码v1 = *(_DWORD *)(__readfsdword(0x18) + 4)

  • FS寄存器指向当前活动线程的TEB结构 | 偏移 | 内容 | | —- | —- | | 0x0 | SEH链表指针 | | 0x4 | 线程堆栈顶部(地址最小) | | 0x8 | 线程堆栈底部(地址最大) | | 0xC | SubSystemTib | | 0x10 | FiberData | | 0x14 | ArbitraryUserPointer | | 0x18 | FS段寄存器在内存中的镜像 | | 0x20 | 进程PID | | 0x24 | 线程ID | | 0x2C | 指向线程局部存储的指针 | | 0x30 | PEB结构地址(进程结构) | | 0x34 | 上一个错误(LastError) |

V1为当前进程PID。