尤其是edx, dword [ebp-0x10 {var_14}]
我知道ebp-0x10是ebp-16,但是为什么包含{var_14},它指向-14?
当我在GDB中查看ebp-16时,我正在寻找的东西在那里,但是与-14有什么关系?
答案 0 :(得分:3)
这只是反汇编程序添加的注释,可帮助您跟踪“命名”变量。也许如果有调试符号,您将获得[ebp-0x10 {passcode}]
之类的名称。
将其作为评论处理,因为仅此而已。没有[ebp - 0x10]
的{{1}}是寻址模式的完整表示。
(此外,您还具有可以用来验证反汇编的十六进制机器代码。)
定义上的{}
注释为十六进制。请注意,frame_offset - 14
处有一个。根据相同的注释,返回地址位于“帧偏移” -2c
处,而保存的EBP位于0
,因为这是使用EBP作为帧指针的传统堆栈帧。
由于这意味着EBP指向已保存的EBP,因此EBP的偏移量与-4
的偏移量相差4。因此frame_offset
是frame_offset - 0x14
。