ollydbg中[local.1]、[local.2]、[arg.1]、[arg.2]的含义

含义

local表示局部变量,arg代表参数,含义如下

local.2 == ebp - 8
local.1 == ebp - 4
arg.1 == ebp +8
arg.2 == ebp +12

为什么arg.1是ebp+8而不是ebp+4?

请看这张图:
ollydbg中[local.1]、[local.2]、[arg.1]、[arg.2]的含义_第1张图片

在调用函数之前,先将两个参数压入堆栈,再执行call,执行call时自动将返回地址压入堆栈。进入子函数,开辟堆栈帧,首先两行:

push ebp
mov ebp, esp

首先将原ebp压入堆栈,即图中的“原ebp”,此时的esp即指向刚压入堆栈的“原ebp”处,再执行mov ebp, esp,则此时ebp即指向“原ebp”。

在ollydbg中修改local.1显示方式

依次点击options->debugging options->analysis 1;选中如图所示复选框,即可显示为local和arg的格式,取消勾选则以ebp的格式显示。
ollydbg中[local.1]、[local.2]、[arg.1]、[arg.2]的含义_第2张图片

你可能感兴趣的:(Daily,堆栈)