查找输入和堆栈中返回地址位置之间的字节数

问题描述

想知道如何在运行此代码时找到输入和返回地址在堆栈中位置之间的字节数,以及在调用 showstack() 之前立即设置到 %esp 寄存器的值>

void showstack (int a,int b,int c) {
    char input [14];
    char x,y;
    int *ret,i;

    for (i=0; i < 10; i++)
        input[i] = i;

    ret = (int *)input;

    for (i = 18; i >= 0; i--)
        printf("%8X:%8X\n",&(ret[i]),ret[i]);
}

int main(void) {
    showstack (1,2,3);
}

这是程序的输出

BFFFF3BE:   1B7E3
BFFFF3BA:94D30000
BFFFF3B6:       0
BFFFF3B2:     804
BFFFF3AE:84E0B7FC
BFFFF3AA:4FF40000
BFFFF3A6:   30000
BFFFF3A2:   20000
BFFFF39E:   10804
BFFFF39A:84DEBFFF
BFFFF396:F3B8B7E5
BFFFF392:3196FFFF
BFFFF38E:FFFF5259
BFFFF38A: 6000804
BFFFF386:9FF40908
BFFFF382: 7060504
BFFFF37E: 3020100

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)