首页 > 其他分享 >C & x86msvc_asm第一天

C & x86msvc_asm第一天

时间:2024-04-18 20:37:36浏览次数:25  
标签:汇编 函数 第一天 scanf x86msvc 地址 ebp main asm

做浙大PTA的7-105 寻找250时候,对scanf的的机制不太熟悉,于是想到联系之前学过的汇编来理解。
image.png
这里可以看出,scanf接受一个指针和一个变量地址。注意这里的OFFSET操作符,相当于C++中的&。
%d也就是缓冲区里的内容,放到_tmp$[ebp]里面。但是这里汇编看不到_scanf的细节,这里先不讨论。
为了学习逆向,我选择先巩固逆向所需要的汇编知识,利用pta的编程题,多对比学习c和assembly language。

main函数的汇编

image.png

在 x86 汇编语言中,EBP 寄存器通常在函数的开头被初始化为栈帧的基地址。然后,它被用作基址指针和帧指针,以访问函数的局部数据和返回地址。

main函数实质上也是一个函数,每个函数调用之前,需要保存调用之前的状态,即使main函数也不例外。
为了做到这件事情,需要有一个地方保存函数调用前堆栈的状态,ebp就是这个地方。
函数头为新函数的调用做好准备,很容易想到,它需要完成两件事情。分别是辞旧、迎新。

  1. ebp入栈,这是为了保存原函数的状态地址。也就是辞旧
  2. ebp指向当前栈顶esp,这是初始化调用函数空间,将其指向栈空间的顶部,为使用“专属”的栈空间做好准备。也就是迎新

函数尾为新函数的调用做好收尾工作,先看其中最重要的一件事:

  1. 恢复函数头存储的ebp的地址,即回到原函数的地址空间。

另外两件事情:

  1. eax寄存器清零,格式化通用寄存器。
  2. ret 0,该指令的作用是返回到调用函数,并以 0 作为返回值。实际上这里是__stdcall调用方式,参数使用栈传递,被调用者即main函数负责释放参数空间。

scanf操作符的汇编

image.png
相当于
image.png
lea指令相当于对后者取地址,放到前者里面。类比于C++中的取地址符&
这里是__stdcall的函数调用约定,使用栈空间进行传递参数,最后esp+8出栈。

标签:汇编,函数,第一天,scanf,x86msvc,地址,ebp,main,asm
From: https://www.cnblogs.com/Rainy-Day/p/18144332

相关文章

  • python学习第一天
    学习一门技术,我们都要知道三个问题。为什么要学习?优点缺点是?怎么入门?python有很强的,就业性,学习完全是为了未来ai趋势做迎合,同样也是基于爱好站在了人工智能和大数据的风口上,站在风口上,猪都能飞起来。优点:简单上手,功能强大,库多缺点:速度慢,代码不能加密2、python的第一个......
  • Higress 全新 Wasm 运行时,性能大幅提升
    本文作者:澄潭,阿里云API网关软件工程师,Higress开源项目主要贡献者何良,IntelWebPlatformEngineering软件工程师,WAMR开源项目主要贡献者本文介绍Higress将Wasm插件的运行时从V8切换到WebAssemblyMicroRuntime(WAMR)的最新进展。通过切换到WAMR并开启AOT模......
  • 第一天随笔
    各成员在Alpha阶段认领的任务模块成员数据库李济远刘立光黄永名服务器杨百友客户端赖国颢测试端李子聪李兆彬明日各个成员的任务安排黄永名:编写基础的sql语句,根据书名查询图书,根据书名查询图书及其借阅记录,查询所有用户,根据用户查询用户资料及其借......
  • [译] .NET 8 中的硬件内在函数(支持 Wasm 和 AVX-512)
    原文链接:https://devblogs.microsoft.com/dotnet/dotnet-8-hardware-intrinsics/HardwareIntrinsicsin.NET8TannerGooding[MSFT]December11th,2023译文:.NET8中的硬件内在函数坦纳·古丁[MSFT]2023年12月11日.NET在通过JIT编译器本质上理解的API提供对附加硬件功......
  • 苍穹外卖学习笔记——第一天
    项目概述、环境搭建软件开发整体介绍软件开发流程步骤任务或输出文件需求分析需求规格说明书、产品原型设计UI设计、数据库设计、接口设计编码项目代码、单元测试测试测试用例、测试报告上线运维软件环境安装、配置角色分工角色分工处于流......
  • 上班第一天安装idea
    分享一波IDEA2023.2.5版本的激活码,需搭配破解补丁一起使用,永久有效,亲测好用(前面步骤差不多,主要看后面)~申明:本教程IntelliJIDEA破解补丁、激活码均收集于网络,请勿商用,仅供个人学习使用,如有侵权,请联系作者删除。若条件允许,希望大家购买正版!笔者几乎试了网上几乎所有......
  • asm增加磁盘由于Bug19874632导致磁盘块头丢失ORA-15196
    数据库日志,磁盘组突然被dismount掉:TueApr0210:39:152024Errorsinfile/u01/app/oracle/diag/rdbms/orcl/orcl1/trace/orcl1_lgwr_150319.trc:ORA-00345:redologwriteerrorblock222293count1ORA-00312:onlinelog5thread1:'+DB/orcl/onlinelog/group_5.2......
  • go~istio加载wasm的步骤
    参考https://github.com/higress-group/proxy-wasm-go-sdk/tree/main/proxywasmhttps://github.com/tetratelabs/proxy-wasm-go-sdkhttps://github.com/alibaba/higress/blob/main/plugins/wasm-go/pkg/wrapperhttps://tinygo.org/docs/reference/https://tinygo.org/docs......
  • 2024-4-4 清明节第一天出去玩
    早上七点半起床直奔华子,九点半到的,和km,yy和一吻集合,先排队排了会枣糕,然后去华子里溜达照相,全是人,还去华子教学楼里上了个厕所,中午在食堂吃的挺好吃。下午又去了一趟颐和园,溜了一圈,然后晚上在大鸭梨吃的烤鸭,吃的非常爽,主要和兄弟们聊天特别爽,聊了同学,一吻的工作生活等等,晚上去了什......
  • 【放假第一天】幻兽帕鲁 雾锁王国 我的世界 游戏云服务器选购指南 附最新价格对比表
    更新日期:4月4日(阿里云价格回调6个月无折扣,京东云采购季持续进行)本文纯原创,侵权必究【云服务器推荐】价格对比!阿里云京东云腾讯云选购指南视频截图《最新对比表》已更新在文章头部—腾讯云文档,文章具有时效性,请以腾讯文档为准!【腾讯文档实时更新】2024年-幻兽帕鲁服务......