exception - 有人可以解释一下大 fs :0?

标签 exception assembly x86 guard disassembly

:0378CED0                 push    ebp    
:0378CED1                 mov     ebp, esp     
:0378CED3                 push    0FFFFFFFFh    
:0378CED5                 push    3927B50h    
:0378CEDA                 push    38DB344h   
:0378CEDF                 mov     eax, large fs:0    
:0378CEE5                 push    eax   
:0378CEE6                 mov     large fs:0, esp   
:0378CEED                 add     esp, 0FFFFF928h   
:0378CEF3                 push    ebx   
:0378CEF4                 push    esi   
:0378CEF5                 push    edi   
:0378CEF6                 mov     [ebp+var_18], esp   
:0378CEF9                 mov     [ebp+var_20], 1   
:0378CF00                 mov     [ebp+var_1C], 0   
:0378CF07                 mov     eax, [ebp+arg_8]    
:0378CF0A                 mov     [ebp+var_230], eax   
:0378CF10                 mov     [ebp+var_22C], 0   
:0378CF1A                 mov     [ebp+var_4], 0   
:0378CF21                 jmp     loc_3B62B79   

我无法理解从 0378CEDF 到 0378CEE6 的含义。
请有人解释一下这个...
谢谢。

最佳答案

在 Windows 上,段寄存器 FS 指向 Win32 线程信息块。 http://en.wikipedia.org/wiki/Win32_Thread_Information_Block

因此,如果这是来自 win32 应用程序的代码,则 0378CEDF 到 0378CEE6 将保存 FS:0(SEH 帧),然后用 esp 中的任何内容覆盖它。

关于exception - 有人可以解释一下大 fs :0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15683458/

相关文章:

java - 如何处理被杀死的服务的 DeadObjectException?

linux - 在 x64 linux 上编译 x86 程序集时出现问题

assembly - 如何在汇编中div后显示11.1?

assembly - 更改 %esp 的值是否会从堆栈中删除值?

c - 将FPU与C内联汇编一起使用

c++ - 使用 std::unique_ptr 有什么好处吗?

python - Tkinter 和线程 - 异常 : out of stack space (infinite loop? )

.net - 在 .NET 框架中强制使用英语语言异常

assembly - 在汇编中使用地址

c - 内联汇编中的 double 字(GCC、IA-32)