mazhaoyang01 发表于 2019-7-13 15:50

小白的反汇编学习笔记----关于调用call前后的堆栈知识

本帖最后由 mazhaoyang01 于 2019-7-16 13:13 编辑

反汇编的过程中被两个寄存器搞晕了
以下仅为个人理解,小白刚开始学习,有任何不正确的希望大家和各位老师及时指正。

栈的意义:
1.某子函数进入前,必须搞到一块栈空间,用于存放自己的参数/数据/变量(临时变量)
2.子函数与父程序之间的参数传递,必须通过栈传递参数(父程序将需要处理的参数传给子函数,子函数也需要将处理完的参数传回给父程序),win32中,栈的使用遵循“先进后出”
ps:全局变量在哪里?在PE程序(exe/dll/sys)的数据段。

esp(栈顶指针寄存器)
ebp(栈底指针寄存器)
通过对比不同老师的学习视频,和查找相关资料,根据自己的理解总结了四张图

那么了解这个东西有什么作用呢?
目前我学习到的有,通过判断函数内部开辟栈空间的大小,判断程序动作,典型的有:
某些吃鸡类游戏中,当对局开始时,游戏开辟一块栈空间(固定大小)用于存放游戏某些数据,例如当栈空间为某某大小时,可以判定对局开始。
同时,通过栈底指针    ebp-”xxxx“(形象点就是从ebp往上数格子)的方式,还可访问栈内数据。
如,当访问到人物数据时,可根据人物数据完成人物透视功能的实现。



mazhaoyang01 发表于 2019-7-14 19:13

sqhs008 发表于 2019-7-14 08:47
沒有了嗎?

學習筆記不應該是從第一課到最後多少課的嗎?

学习过程中遇到复杂和难点,将思路整理后,通过笔记和帖子的形式整理出来,利于记忆,和加深理解。一个知识,倘若你能向别人表达清楚,给他人解释和教导,说明学习效果显著

mazhaoyang01 发表于 2019-7-13 18:37

无为无敌 发表于 2019-7-13 16:54
最基础的OD教程

并不是od教程哦,这些知识是汇编知识,但od使用过程中本身就是理解反汇编代码。
同时这些知识对大佬或者真正有汇编基础的人来说,是常识
但是对小白和入门者来说,堆栈的相关知识会把人绕的晕晕的,如果不把它详细的讲出来,会有很多人一知半解,写下这个帖子,一个作为学习笔记,另外还可以给以后新人学习者提供经验

寂寞日落 发表于 2019-7-13 16:15

感谢分享!!!

mazhaoyang01 发表于 2019-7-13 16:20

寂寞日落 发表于 2019-7-13 16:15
感谢分享!!!

共同学习!共同进步!

yaphoo 发表于 2019-7-13 16:52

谢谢分享,学习了!

无为无敌 发表于 2019-7-13 16:54

最基础的OD教程

又红又专 发表于 2019-7-13 21:07

这个是滴水逆向吧....

zjg1727 发表于 2019-7-13 21:30

很基础,非常适合新手。谢谢分享。
有时候好像用EBP+4、EBP+8来进行一些操作,这块有学习笔记吗?

冥界3大法王 发表于 2019-7-13 21:49

zjg1727 发表于 2019-7-13 21:30
很基础,非常适合新手。谢谢分享。
有时候好像用EBP+4、EBP+8来进行一些操作,这块有学习笔记吗?

这就是api函数的堆栈的参数

Rnb。 发表于 2019-7-14 08:32

感谢分享。。。
页: [1] 2 3 4
查看完整版本: 小白的反汇编学习笔记----关于调用call前后的堆栈知识