我尝试使用ollydbg分析组装中的程序。在第一行中,我具有以下内容:

MOV EAX, DWORD PTR FS:[0]


在注册窗口中,我得到以下信息:

EAX 7570EE0A kernel32.BaseThreadInitThunk


在另一个关于FS的窗口中,以下内容:和DWORD PTR FS和有什么不一样?通常,我总是看到DWORD PTR DS而不是DWORD PTR DS
什么是DWORD PTR FS?是功能吗?

我希望有人可以帮助我。

#1 楼


DWORD PTR FSDWORD PTR DS和有什么区别?
什么是fs[0]?是函数吗?


是的。它非常简单,仅用于执行线程的功能。

评论


有关fs的一些附加信息:[0]:stackoverflow.com/questions/4657661/…

–bad_decoy
14年5月18日在18:32

FS用于32位进程,GS用于64位进程。

– ST3
2014年10月8日13:38

#2 楼

过去,段寄存器用于允许16位代码寻址16位(64KB)以上的地址空间。可以使用CS段指向代码,使用DS段指向数据,等等。FS是一个“额外”段,可以使用,但需要使用。您可以在Wikipedia上阅读有关细分的更多信息。除了FS和GS,现代体系结构不使用段寄存器。