逆向——从一个实际例子看EBP+4为何是函数的返回地址
第六节 1、逆向CRACKME
1、OD加载CRACKME后,为啥地址停在0x00401000?--需要知道什么是PE结构。
——————
2、出现这个框,表示程序已经执行完判断。
3、弹出窗口是WIN32 API的知识,它是API的MessageBoxA函数实现的功能。
——————
4、如何正确的下断点?
(1)在OD的命令窗口:bp MessageBoxA(1)在OD的命令窗口:bp MessageBoxA
—>如果程序执行弹口窗口功能,则程序停下。
(2)程序停下后的代码区和堆栈区
5、什么是函数调用?
6、熟悉堆栈,通过画堆栈图彻底了解堆栈。
7、一个函数刚开始执行时,栈顶存储的是调用这个函数的上一个函数的返回地址。
上图在ODB里对应的是:
刚刚进入函数调用,可以看到堆栈顶的return的地址
右键该地址:
可以看到该地址是调用函数的下一条指令地址:
我们追踪下stack的变化就看到如下栈提升以后的情况:
那个返回地址刚好就是EBP+4!
当然,记得去结合我文章里写堆栈图的例子更加容易理解。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
2018-04-02 leetcode 543. Diameter of Binary Tree
2018-04-02 leetcode 268. Missing Number
2018-04-02 DBSCAN