{ .... } 在双字 [ ... ] 中是什么意思?
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 - 0x14
是 ebp - 0x10
.
特别是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 - 0x14
是 ebp - 0x10
.