逆向之汇编(堆栈平衡&&函数)

一 . 基本概念

  1. 函数是什么:
    一些指令的集合。

  2. 如何调用函数:
    用 call指令

  • 为什么:(对比jmp指令)
  • 参数与返回值:

举例:编写一个函数,得到任意两个整数的和
在这里插入图片描述
绿色框框:函数(整数相加),用EAX传递返回值
紫色框框:用ECX,EDX传递参数

二. 用堆栈的方式传递参数(实现堆栈平衡的两个方式)

  • 堆栈平衡是什么
    经过一系列变化后(参数、函数等的临时存储),堆栈里的栈顶指针依旧不变【ESP的值依旧不变】

1.(函数内平衡)保证ret这条指令前,ESP是压入函数的初始值

举例:

如果有10个参数怎么办?——没有那么多寄存器。

  • 向堆栈push1~5个数
  • 接着call指令

在(call指令对应的)特定地址依次:

  • ADD EAX,DWORD PTR DS:[ES
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值