gpt4 book ai didi

windows - 什么是 fs :[register+value] meaning in assembly?

转载 作者:可可西里 更新时间:2023-11-01 09:47:30 25 4
gpt4 key购买 nike

xor    ebx,ebx
mov eax,DWORD PTR fs:[ebx+0x3]

我知道这段代码的第一行,但是 fs:[ebx+0x3] 是什么?为什么它在编译时给我一个错误?

test.asm:2: error: comma, colon, decorator or end of line expected after operand

最佳答案

xor 操作码将 EBX 设置为 0。因此 mov 操作码访问位于 fs:[3] 的 DWORD。这将访问 Win32 Thread Information Block's 的最后一个字节Current Structured Exception Handling (SEH) frame located from fs:[0] to fs:[3] (4 bytes) 和前三个Stack Base变量的字节,ESP的初始值。

除非您遇到一些复杂构造和混淆的病毒或反调试技术将这 3+1 个字节组合成有用的东西,否则这只是一个有点随机数

另一种可能性是,“段”寄存器 FS 在这些指令之前已被修改为包含一个合理的基地址。在那种情况下,这可能像许多其他指令一样是有用的指令。您提供的代码片段无法确定。

例如

mov eax, fs
inc eax
mov fs, eax
...
xor ebx,ebx
mov eax,DWORD PTR fs:[ebx+0x3]

将返回 EAX 中的“堆栈基础”-“(FS+1)+(0+3)”= real-FS:[4] =“堆栈基础”位置。

添加:为了完整性:“Ross Ridge”的评论中提到了为什么它不汇编:它是 MASM 语法而不是 NASM 语法。

关于windows - 什么是 fs :[register+value] meaning in assembly?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35806409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com