逆向汇编反汇编——函数分析

文章介绍了堆栈平衡的概念,其目的是为了回收栈空间,防止内存耗尽。stdcall和fastcall是两种不同的调用约定,前者由被调用者清理堆栈,后者则由调用者负责。fastcall通常更快,因为它利用寄存器传递参数。在Windows系统中,函数调用方式有特定的规则,并且局部变量在释放版本中可能被优化。
摘要由CSDN通过智能技术生成

 

add esp,8就是把esp调整到函数调用之前的状态,用以平衡堆栈 

 

 

 默认采用的是cdcall:外平栈

stdcall:内平栈

什么是堆栈平衡?

》原来的堆栈是什么样的,函数调用之后堆栈还是什么样的(即,esp和ebp的值保持不变),这一个线程当中的所有函数调用都是使用这同一个堆栈。

为什么需要保持堆栈平衡呢?

》因为在Windows当中它的栈默认分配的是1M大小的空间,如果每个函数为局部变量分配的栈空间不回收的话,很快就会用完了。为了重复利用堆栈,所以需要平衡堆栈。

一旦函数调用结束之后,原先函数的栈空间存储的局部变量等内容就变成了垃圾数据了,所以不要使用指针等去勾出来原来函数当中的局部变量的值,因为一旦那块内存当中的数值发生变化,很可能获取到的就是垃圾数据。

指针使用完毕之后一定要置为NULL,new出来的对象一定要delete掉

为什么fastcall速度快呢?

把参数传到寄存器里面:

 一般来说通过寄存器来传参,如果参数比较多就一部分使用寄存器一部分使用push压栈来传参

 在C++当中,类的成员函数的调用是通过thiscall来实现的

this指针是放在ecx寄存器进行传递的

Windows下的函数调用方式:

他们的定义都包含在windef.h头文件当中

上面是MAC,下面是Windows

不定个数的参数一般是cdcall,因为只有调用方才知道传了几个参数进去

在release版本当中,局部变量如果比较简单的话,有可能会被直接优化掉,可以使用scanf来避免这种情况出现。所以如果在ida当中,应该主要关注的是它的变量名,比如arg1这种,而不用管它究竟是多少偏移量,在ida当中,局部变量是var,外面传进来的参数是arg

天梯(tianti) Java 轻量级的 CMS 解决方案-天梯。天梯是一个用 Java 相关技术搭建的后台 CMS 解决方案,用户可以结合自身业务进行相应扩展,同时提供了针对 dao、service 等的代码生成工具。技术选型:Spring Data JPA、Hibernate、Shiro、 Spring MVC、Layer、MySQL 等。 简介: 1、天梯是一款使用Java编写的免费的轻量级CMS系统,目前提供了从后台管理到前端展现的整体解决方案。 2、用户可以不编写一句代码,就制作出一个默认风格的CMS站点。 3、前端页面自适应,支持PC和H5端,采用前后端分离的机制实现。后端支持天梯蓝和天梯红换肤功能。 4、项目技术分层明显,用户可以根据自己的业务模块进行相应地扩展,很方便二次开发。 核心框架:Spring Framework 4.2.5.RELEASE 安全框架:Apache Shiro 1.3.2 视图框架:Spring MVC 4.2.5.RELEASE 数据库连接池:Tomcat JDBC 缓存框架:Ehcache ORM框架:Spring Data JPA、hibernate 4.3.5.Final 日志管理:SLF4J 1.7.21、Log4j 编辑器:ueditor 工具类:Apache Commons、Jackson 2.8.5、POI 3.15 view层:JSP 数据库:mysql、oracle等关系型数据库 前端 dom : Jquery 分页 : jquery.pagination UI管理 : common UI集成 : uiExtend 滚动条 : jquery.nicescroll.min.js 图表 : highcharts 3D图表 :highcharts-more 轮播图 : jquery-swipe 表单提交 :jquery.form 文件上传 :jquery.uploadify 表单验证 :jquery.validator 展现树 :jquery.ztree html模版引擎 :template
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值