能力值:
( LV4,RANK:50 )
|
-
-
2 楼
fs是段寄存器吧
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
FS寄存器指向当前活动线程的TEB结构(线程结构)
偏移 说明
000 指向SEH链指针
004 线程堆栈顶部
008 线程堆栈底部
00C SubSystemTib
010 FiberData
014 ArbitraryUserPointer
018 FS段寄存器在内存中的镜像地址
020 进程PID
024 线程ID
02C 指向线程局部存储指针
030 PEB结构地址(进程结构)
034 上个错误号
|
能力值:
(RANK:860 )
|
-
-
4 楼
这个解释很详细
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
我想在OD中“看”下这个“TEB结构”
|
能力值:
( LV7,RANK:100 )
|
-
-
6 楼
楼主没发现03B后面还有东西吗,完整的是
FS 003B 32位 7FFDF000
其中后面的7FFDF000才是FS:[0]的位置,OD的内存窗口中可以直接看到这个地址。
因为FS是段寄存器,所以只有16位,是从以前的实模式保留下来的。
实模式中段寄存器保存的是段地址,但是在保护模式下保存的是段选择子,和实模式是完全不同的。
关于段选择子楼主可以去看看关于保护模式的资料。
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
了解了,感谢 SJQIANG 及楼上热心的诸君~
|
能力值:
(RANK:110 )
|
-
-
8 楼
Windows在创建线程时,操作系统会为每个线程分配TEB结构,并且将FS段选择器指向当前线程的TEB数据结构。
Typedef struct _NT_TIB {
Struct _EXCEPTION_REGISTERATION_RECORD * ExceptionList;
PVOID StackBase;
PVOID StackLimit;
PVOID SubSystemTib;
Union {
PVOID FiberData;
ULONG Version;
};
PVOID ArbitaryUserPointer;
Struct _NT_TIB * Self;
} NT_TIB;
上面结构体,很明显:
000 指向SEH链指针
004 线程堆栈顶部
008 线程堆栈底部
00C SubSystemTib
010 FiberData
014 ArbitraryUserPointer
018 FS段寄存器在内存中的镜像地址
020 进程PID
024 线程ID
02C 指向线程局部存储指针
030 PEB结构地址(进程结构)
034 上个错误号
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
不是
是
dg 3b
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
大牛们win7下Idle进程的地址怎么获取?
|
能力值:
( LV3,RANK:20 )
|
-
-
11 楼
前2天突发奇想要给FS:0下内存断点,可是在OD里不认识这个地址。后来又想起来,映像中OD 好像对7FFFxxxx之类的地址无法下断,那位高手给解释一下。
|
能力值:
( LV4,RANK:50 )
|
-
-
12 楼
好像[7FFFF000]有64K不可访问区域,其他我也不清楚
FS存的是段选择子,保护模式的,跟实模式不同,而且WINDOWS运行时,没用到分段管理机制,所有段从[0H]开始,64位的直接忽略了段基地址
还有,别理解为段描述符没用了,段描述符其他位还是起作用的
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
学习了!
|
能力值:
( LV1,RANK:0 )
|
-
-
14 楼
那个偏移是直接在中括号里面写的,例如: mov eax, fs:[0x020]是获取当前程序的PID
|
|
|