当前位置: 首页 > article >正文

滴水逆向 Day05:函数嵌套调用的内存布局(图文版)

0基础小白学逆向记录贴一起来学逆向。https://mp.weixin.qq.com/s/EPDY6i2-R-WQI101KTJvtg一、核心目标搞懂一个函数调用另一个函数时栈空间是怎么变化的、参数怎么传递、返回值怎么回来、ebp/esp 到底在干什么。二、示例代码C 语言我们用一个最简单的两层嵌套调用来分析#includestdio.hint plus(int x, int y){return xy;}int plus1(int x, int y , int z){int m;mplus(x,y);return mz;}int main(){int r ;rplus1(1,2,3);printf(%d,r);return 0;}调用关系main → plus2 → plus1这是最典型的函数嵌套调用。三、关键知识点必须理解函数调用统一遵循栈规则参数从右向左入栈先压入返回地址保存旧 ebpebp esp建立栈帧局部变量在 ebp 上方嵌套调用本质就是在一个函数的栈帧内部再开启一个新的子函数栈帧。调用完子函数栈会恢复到调用前的状态继续执行父函数。整个过程main调用plus2(1,2,3)plus2内部又调用plus1(x,y)plus1计算完成返回结果给plus2plus2再加上 z返回给main最终r 123 6四、内存布局栈空间说明1. 整体栈走向esp始终指向栈顶ebp用于定位当前函数的栈底方便访问参数和局部变量2. 调用 plus2 时的栈布局从右往左入栈参数3→2→1压入main中调用plus2的返回地址保存旧 ebpmain 的 ebp新 ebp esp建立 plus2 栈帧分配局部变量空间如 int m3. 嵌套调用 plus1 时在 plus2 函数内部再次执行完整调用流程从右往左入栈y→x压入 plus2 内部的返回地址保存当前 ebpplus2 的 ebp新 ebp esp建立 plus1 栈帧执行计算通过 eax 带回返回值4. 返回过程plus1执行完毕销毁自己的栈帧回到 plus2plus2拿到返回值继续计算再销毁自己栈帧回到 main最终结果存入 main 中的变量 r一句话总结嵌套调用就是栈帧的层层嵌套返回时栈帧层层弹出恢复。五、总结函数嵌套调用的完整流程参数入栈顺序从右向左栈帧结构旧 ebp → 返回地址 → 参数 → 局部变量嵌套本质栈帧里再套栈帧调用完逐层恢复理解这套内存布局是后续看懂反汇编、栈溢出、HOOK、函数调用约定的基础。关注0基础学逆向一起学逆向

相关文章:

滴水逆向 Day05:函数嵌套调用的内存布局(图文版)

0基础小白学逆向记录贴,一起来学逆向。https://mp.weixin.qq.com/s/EPDY6i2-R-WQI101KTJvtg 一、核心目标:搞懂一个函数调用另一个函数时,栈空间是怎么变化的、参数怎么传递、返回值怎么回来、ebp/esp 到底在干什么。 二、示例代码&#xff0…...

Data Matrix (ECC200) 选型指南:对比libdmtx、ZXing和huBarcode,你的项目该用哪个开源库?

Data Matrix (ECC200) 开源库选型实战指南 在工业自动化、物流追踪和医疗设备标识等领域,Data Matrix二维码因其高密度编码和小尺寸打印优势成为首选。面对libdmtx、ZXing和huBarcode三大主流开源方案,开发者常陷入选择困境。本文将从实际项目经验出发&a…...

沉默的数据,喧嚣的资本:AI估值泡沫与价值回归的必然逻辑

狂欢中的“红舞鞋”效应2026年的春天,全球资本市场最炙手可热的话题依然是人工智能。然而,当舆论的聚光灯依然打在OpenAI、Anthropic、DeepSeek等明星企业的融资奇迹上时,一个微妙的转折正在悄然发生。数据显示,虽然生成式AI领域的…...

一文讲清,排班管理方案是什么意思?如何制定有效的排班管理方案?

排班管理方案是企业依据业务需求、法律法规及员工技能,对人力资源进行时间与岗位分配的系统性规划,旨在实现降本增效与合规经营。制定一套科学的排班管理方案,不仅能解决“闲时人多、忙时人少”的运营痛点,还能通过公平的轮班机制…...

零停机迁移:如何将服务器成本从 $1432 降至 $233

零停机迁移:如何将服务器成本从 $1432 降至 $233 在云计算大行其道的今天,"便利性"往往伴随着昂贵的溢价。对于初创公司和个人开发者而言,当业务规模趋于稳定,基础设施成本便成了不可忽视的利润黑洞。本文将详细复盘一次…...

Opus 4.6 vs 4.7:社区匿名实测揭示Token成本差异

Opus 4.6 vs 4.7:社区匿名实测揭示Token成本差异 1. 引言 1.1 Token成本计算的重要性 在大语言模型(LLM)的应用开发与部署中,Token不仅是计费的基本单位,更是衡量模型性能与资源消耗的核心指标。对于企业级应用而言&am…...

TCC分布式事务代码

文章目录回滚链路1. 全局回滚是谁触发的?因为什么配置?2. TCC 的「Cancel / 回滚」对应哪些方法?因为什么配置?3. 串起来:一条「回滚链路」长什么样(概念上)4. 还需要哪些「环境配置」这条链路才…...

Elasticsearch 磁盘水位阈值设置:最合理配置 + 生产实战

Elasticsearch 磁盘水位阈值设置:最合理配置 生产实战前言Elasticsearch 磁盘水位阈值设置:合理配置与生产最佳实践一、核心概念:什么是 ES 磁盘水位?1.1 定义1.2 三个关键水位(必须记住)1.3 水位触发后行…...

抓包方案分享

抓包方案分享PS:此方案仅进行技术交流,请不要用于非法用途。小黄鸟 电脑端exe手机APP第一步 电脑版开启 记住端口号,手机版不使用。电脑端需要开启 和虚拟网卡手机端设置手动 ,端口要对上小黄鸟第二步,电脑端二级 设置…...

保姆级教程:用华为ENSP模拟器搞定企业级有线无线网络(含S5700/AC6605配置)

华为ENSP模拟器实战:构建企业级有线无线融合网络 在数字化转型浪潮中,网络工程师需要掌握从规划设计到实施运维的全流程能力。华为ENSP模拟器作为业界公认的企业网络仿真平台,能够完美复现从接入层到核心层的真实场景。本文将带您从零开始&am…...

XFS大硬盘+NFS共享踩坑记:一个fsid=0参数如何避免‘Stale file handle’

XFS大硬盘NFS共享避坑指南:深入解析fsid0参数与Stale file handle故障 最近在部署一套基于XFS文件系统的备份服务器时,遇到了一个典型的NFS共享问题:客户端挂载后频繁出现"Stale file handle"错误。这个问题在大容量XFS分区&#x…...

今天爬山去了 , 所以就刷了一道力扣

爬的的焦作的云台山 , 人超多 , 超多 , 超多 , 真的多 , 好多帅哥哥 , 和漂亮小姐姐 . 挺值得 , 门票 60 夯爆了. 回到学校后实在没力气学习了 , 就只刷了一道力扣简单题. 晚上 自己搞了: 观看技术直播 AI 大模型应用开发 Python 结语 人生的意义很简单 : 就是每天都开开…...

告别截图!用mutool draw命令把PDF批量转成高清PNG图片(附Python脚本)

高效PDF转PNG全攻略:用mutool实现批量自动化处理 每次需要从PDF中提取页面制作演示文稿或分享内容时,手动截图不仅效率低下,画质也难以保证。作为经常处理技术文档的内容创作者,我发现mutool这个命令行工具能完美解决这个问题——…...

如何高效优化系统性能:联想拯救者工具箱终极硬件管理指南

如何高效优化系统性能:联想拯救者工具箱终极硬件管理指南 【免费下载链接】LenovoLegionToolkit Lightweight Lenovo Vantage and Hotkeys replacement for Lenovo Legion laptops. 项目地址: https://gitcode.com/gh_mirrors/le/LenovoLegionToolkit 联想拯…...

别再只盯着5G了!从BBU、RRU到AAU,一文看懂你家附近基站到底长啥样

从铁塔到芯片:解码现代基站的技术演进与视觉识别指南 每天通勤路上,那座耸立在写字楼顶端的灰色铁塔总是格外醒目——它顶部排列着几排白色长方形面板,侧面挂着几个金属盒子,底部延伸出密密麻麻的线缆。这些看似简单的装置&#x…...

Avue动态配置进阶:利用findObject精准操控表单option

1. Avue动态表单配置的核心痛点 在后台管理系统开发中,表单动态配置是个高频需求。就拿用户管理模块来说,不同租户看到的角色、部门、岗位选项应该是不同的。传统做法往往需要手动遍历整个表单配置对象,代码冗长且容易出错。我接手过的一个项…...

CAPL文件读写踩坑实录:fileGetString和fileGetStringSZ到底怎么选?

CAPL文件读写深度解析:fileGetString与fileGetStringSZ的实战抉择 当你在CANoe环境中用CAPL处理日志文件时,是否遇到过这样的场景:明明代码逻辑正确,但字符串比较总是失败?或者从CSV文件读取的数据总带着奇怪的换行符&…...

如何让导航栏的下落动画效果更慢?

通过调整 CSS 动画的持续时间(如将 0.2s 改为 0.6s 或更长),即可平滑控制 Bootstrap 导航栏下落动画的速度,同时需配合 transform 与 opacity 实现更自然的过渡效果。 通过调整 css 动画的持续时间(如将 0.2s 改为…...

别再傻傻等编译了!手把手教你给Gradle配上本地+远程缓存,Android构建速度飞起

别再傻傻等编译了!手把手教你给Gradle配上本地远程缓存,Android构建速度飞起 每次点击"运行"按钮后,看着Android Studio底部进度条像蜗牛爬行般的编译过程,你是否也经历过这样的绝望?特别是当项目规模逐渐膨…...

从 0 到 1 构建销售 AI Agent Harness Engineering:线索生成、客户画像与转化预测实战

从0到1落地销售AI Agent Harness Engineering体系:线索生成、客户画像与转化预测全栈实战 关键词 销售AI Agent、Harness Engineering、线索智能生成、动态客户画像、转化预测、LLM编排、销售流程自动化 摘要 当前国内企业销售团队普遍面临「30%时间浪费在无效线索挖掘、客…...

Halcon灰度投影实战:用‘简单’模式搞定二维码的快速粗定位

Halcon灰度投影实战:用‘简单’模式搞定二维码的快速粗定位 在工业视觉检测中,二维码的快速定位一直是个让人头疼的问题。产线上传送带飞速运转,零件位置飘忽不定,背景干扰层出不穷——传统的Blob分析在这种场景下往往力不从心。而…...

从家庭路由器到云服务器:一次完整的Web请求,DNS、NAT和ICMP都扮演了什么角色?

从家庭路由器到云服务器:一次完整的Web请求,DNS、NAT和ICMP都扮演了什么角色? 当你在家中电脑输入"news.163.com"并按下回车键时,背后隐藏着一场精密的网络交响乐。这场跨越公私网络边界的数据旅程,由DNS解析…...

XML 与 CSS:构建现代网页的关键技术

XML 与 CSS:构建现代网页的关键技术 引言 在当今的互联网时代,网页设计已经远远超出了简单的文字和图片展示。随着技术的不断发展,XML(可扩展标记语言)和CSS(层叠样式表)成为了构建现代网页不可或缺的技术。本文将深入探讨XML和CSS的基本概念、应用场景以及它们如何协…...

python开发一款翻译工具

最近,某水果手机厂在万众期待中开了一场没有发布万众期待的手机产品的发布会,发布了除手机外的其他一些产品,也包括最新的水果14系统。几天后,更新了系统的吃瓜群众经过把玩突然发现新系统里一个超有意思的功能——翻译&#xff0…...

2026届必备的五大AI辅助论文助手解析与推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 智能化写作辅助工具一键论文生成器,能按照用户所输入的标题或者关键词&#xff0…...

AGI游戏智能落地失败率高达67%?SITS2026专家团复盘11个真实项目,提炼出2个关键决策阈值与1个不可逆拐点

第一章:SITS2026分享:AGI与游戏智能 2026奇点智能技术大会(https://ml-summit.org) AGI在游戏环境中的验证价值 通用人工智能(AGI)并非仅面向抽象推理任务,游戏世界正成为其核心验证场域。开放世界RPG、实时策略与多…...

AGI与机器人结合不是“加法”,而是“范式熔断”——SITS2026提出全新评估矩阵(含6维动态权重算法)

第一章:AGI与机器人结合不是“加法”,而是“范式熔断” 2026奇点智能技术大会(https://ml-summit.org) 当通用人工智能(AGI)不再仅运行于云端沙盒或语言模型API中,而是实时驱动机械臂完成非结构化厨房操作、自主重规…...

VibeVoice Pro流式语音效果展示:超长文本10分钟连续输出无卡顿实录

VibeVoice Pro流式语音效果展示:超长文本10分钟连续输出无卡顿实录 1. 引言:重新定义实时语音生成的边界 当你需要将大段文字转换成语音时,最头疼的是什么?是漫长的等待时间,还是听到一半突然卡顿的尴尬?…...

QT账号注册踩坑实录:密码要求太奇葩?邮箱验证卡住了?一篇帮你全搞定

QT账号注册全流程避坑指南:从密码设置到邮箱验证的实战解析 第一次接触QT开发环境的新手们,往往会在注册环节遇到各种意想不到的障碍。我清楚地记得自己当初注册QT账号时,反复尝试了五次密码才符合要求,邮箱验证邮件等了半小时都…...

AGI用户研究黄金三角模型(SITS2026首次发布|含实时仿真沙盒访问权限)

第一章:AGI用户研究黄金三角模型(SITS2026首次发布|含实时仿真沙盒访问权限) 2026奇点智能技术大会(https://ml-summit.org) AGI用户研究黄金三角模型(SITS2026)是面向通用人工智能人机协同范式演进提出的…...