{ .... } 在双字 [ ... ] 中是什么意思?

What does { .... } mean inside of a dword[ ... ]?

特别是edx, dword [ebp-0x10 {var_14}]

我知道 ebp-0x10 是 ebp-16,但为什么包含 {var_14},它指向 -14?

当我在 GDB 中查看 ebp-16 时,我正在寻找的东西就在那里,但与 -14 有什么关系?

它只是您的反汇编程序添加的注释,可帮助您跟踪 "named" 变量。也许如果有调试符号,你会得到它们的名字,比如 [ebp-0x10 {passcode}].

将其视为评论,因为仅此而已。没有{}[ebp - 0x10]是寻址方式的完整表示。

(此外,您还拥有可用于验证反汇编的十六进制机器码。)


定义上的 frame_offset - 14 注释是十六进制的。请注意,-2c 处有一个。根据相同的注释,return 地址位于 "frame offset" 0,而保存的 EBP 位于 -4,因为这是使用 EBP 作为框架的传统堆栈框架指针。

因为这意味着 EBP 指向保存的 EBP,EBP 的偏移量与 frame_offset 偏移量相差 4。因此 frame_offset - 0x14ebp - 0x10.