09-长调用与短调用

要点回顾:

  	我们通过JMP FAR可以实现段间的跳转,如果要实现跨段的调用就必须要

学习CALL FAR,也就是长调用.

CALL FAR 比JMP FAR要复杂,JMP并不影响堆栈,但CALL指令会影响.

1、短调用

指令格式:CALL 立即数/寄存器/内存
在这里插入图片描述

发生改变的寄存器:ESP EIP

2、长调用(跨段不提权)

指令格式:CALL CS:EIP(EIP是废弃的)
在这里插入图片描述

发生改变的寄存器:ESP EIP CS

3、长调用(跨段并提权)

指令格式:CALL CS:EIP(EIP是废弃的)
在这里插入图片描述
发生改变的寄存器:ESP EIP CS SS

4、长调用(跨段并提权)

指令格式:CALL CS:EIP(EIP是废弃的)

在这里插入图片描述
发生改变的寄存器:ESP EIP CS SS

5、总结:

  1. 跨段调用时,一旦有权限切换,就会切换堆栈.

  2. CS的权限一旦改变,SS的权限也要随着改变,CS与SS的等级必须一样.

  3. JMP FAR 只能跳转到同级非一致代码段,但CALL FAR可以通过调用门
    提权,提升CPL的权限.

SS与ESP从哪里来?参见TSS段.

6、课后练习:

记住CALL指令执行时的堆栈变化.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值