【逆向工程核心原理】笔记——栈帧

00401020:main函数的入口点
在这里插入图片描述
把ESP的值传给EBP,将EBPB变成mian函数的EBP, ESP,EBP都指向同一指令
在这里插入图片描述
目的:将旧的EBP保存起来
请添加图片描述

00401023:ESP-8
在这里插入图片描述
00401026:将数据1放入EBP-4
00401026: 将数据1放入EBP-8
00401034:将参数b入栈,将EBP-8传入EAX
00401038:将参数a入栈,将EBP-4传入EAX
在这里插入图片描述
请添加图片描述请添加图片描述
0040103C: 将00401000地址入栈
请添加图片描述

add函数的EBP生成,进行备份请添加图片描述
00401001:ESP指向main函数的栈底指针
00401006-00401009:指向a=1的指针指向EBP-8
0040100C-0040100F:指向b=1的指针指向EBP-4
请添加图片描述
00401015:将EBP-8和ESP-4相加,再放入EBP-8 1+2=3
00401018-0040101B:回收空间,分配给加法的栈帧回收,再恢复main函数的栈帧
00401018: MOV ESP,EBP。 ESP的指针指向EBP
0040101A:POP EBP出栈,将栈顶数据给EBP(栈顶数据:main函数的栈底EBP)

在这里插入图片描述
0040101B: RETN,箭头指回00401041,ESP+8,mian函数的ESP恢复出来

在这里插入图片描述
00401044-0040104A: printf语句

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/wuwuhe99/article/details/129866542
今日推荐