首页
社区
课程
招聘
[求助]汇编 fs是什么段
发表于: 2009-10-28 08:51 12332

[求助]汇编 fs是什么段

2009-10-28 08:51
12332
最近在学习win32汇编,对着c++代码看汇编代码
遇到了这样几句

mov eax, fs:[00000000]
push eax
dword ptr fs:[0], esp

谁能给小弟讲解一下,网上搜了下,说是处理异常,fs是个什么段?
还请大家多多帮忙啊。

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 92
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
FS寄存器指向当前活动线程的TEB结构(线程结构)
偏移  说明
000  指向SEH链指针
004  线程堆栈顶部
008  线程堆栈底部
00C  SubSystemTib
010  FiberData
014  ArbitraryUserPointer
018  FS段寄存器在内存中的镜像地址
020  进程PID
024  线程ID
02C  指向线程局部存储指针
030  PEB结构地址(进程结构)
034  上个错误号

得到KERNEL32.DLL基址的方法
assume fs:nothing             ;打开FS寄存器
mov eax,fs:[30h]            ;得到PEB结构地址
mov eax,[eax + 0ch]        ;得到PEB_LDR_DATA结构地址
mov esi,[eax + 1ch]        ;InInitializationOrderModuleList
lodsd                      ;得到KERNEL32.DLL所在LDR_MODULE结构的InInitializationOrderModuleList地址
mov edx,[eax + 8h]         ;得到BaseAddress,既Kernel32.dll基址

引用自:http://blog.csdn.net/xbin8/archive/2008/03/08/2158762.aspx
2009-10-28 09:33
1
雪    币: 75
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
十分感激,结贴
2009-10-28 11:09
0
雪    币: 444
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
楼主,结帖要先给分啊。
2009-10-28 13:30
0
雪    币: 75
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
不知道如何给分,哪位大虾教一下
2009-10-28 21:19
0
雪    币: 622
活跃值: (65)
能力值: ( LV13,RANK:290 )
在线值:
发帖
回帖
粉丝
6
其实FS段寄存器体现了系统的分段机制,FS段的基址不是0,而是从某个特别位置开始,这个特别的位置被windows存放一些特别的东西。
FS在用户层和内核层的基址也不同,但都是存放和当前线程密切相关的东西。
2009-10-29 00:33
0
雪    币: 146
活跃值: (92)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
写shellcode就知道了
2009-11-5 21:16
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
二楼强人,学习了.
2009-11-6 19:34
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
FS, 主要是Windows下面的SEH。这个涉及到TEB结构。
给你几个链接,希望对你有帮助
http://www.luocong.com/articles/show_article.asp?Article_ID=30
http://forum.eviloctal.com/thread-6883-1-32.html
http://www.upwinder.com/www/43/3078.html
2009-11-6 19:46
0
游客
登录 | 注册 方可回帖
返回
//