好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 mazhaoyang01 于 2019-7-16 13:13 编辑
反汇编的过程中被两个寄存器搞晕了
以下仅为个人理解,小白刚开始学习,有任何不正确的希望大家和各位老师及时指正。
栈的意义:
1.某子函数进入前,必须搞到一块栈空间,用于存放自己的参数/数据/变量(临时变量)
2.子函数与父程序之间的参数传递,必须通过栈传递参数(父程序将需要处理的参数传给子函数,子函数也需要将处理完的参数传回给父程序),win32中,栈的使用遵循“先进后出”
ps:全局变量在哪里?在PE程序(exe/dll/sys)的数据段。
esp(栈顶指针寄存器)
ebp(栈底指针寄存器)
通过对比不同老师的学习视频,和查找相关资料,根据自己的理解总结了四张图
那么了解这个东西有什么作用呢?
目前我学习到的有,通过判断函数内部开辟栈空间的大小,判断程序动作,典型的有:
某些吃鸡类游戏中,当对局开始时,游戏开辟一块栈空间(固定大小)用于存放游戏某些数据,例如当栈空间为某某大小时,可以判定对局开始。
同时,通过栈底指针 ebp-”xxxx“(形象点就是从ebp往上数格子)的方式,还可访问栈内数据。
如,当访问到人物数据时,可根据人物数据完成人物透视功能的实现。
|
-
函数调用前
-
函数调用时
-
函数调用后
-
call内部结构
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|