cs里的是一个段选择子
1:拆分段选择子,查GDT表
2:该段描述符为系统描述符,s位为0,TYPE为1100,是一个门描述符(DPL必须为3,不然该描述符的权限检查过不去)
3:该描述符的16到31位为另外一个段描述符的选择子 (决定是否提权),另外一个段描述符 必须是代码段 DPL决定是否提权
4:该描述符的低16位 和高16位组成了一个32位的地址,通过门后,程序就会运行这个地址。

门描述符

总结:

长调用时:cs查找到的段描述符跟平常的段描述符不一样。
1:该描述符的类型为门描述符
2:门描述符的低16到31位为另外一个段描述符的选择子 该描述符的DPL 必须为3
3:是否提权在于另外一个段描述符的DPL是否为0
4:通过门后,执行的代码在门描述符中的高16位与低16位组成一个32的地址

思考 ebp 没有保存,0环返回后是哪里来得。

自己实现调用门

自己构造的段描述符 0040ec00`00081005

写入 GDT表 eq 8003f048 0040ec00`00081005

经过尝试 0009 000a `000b 也就是cpl为0 1 2 3均可以成功

0008对应的段描述符为1 必须为代码段才能执行成功

//读取高地址的值
#include "stdafx.h"
#include "stdio.h"
#include <windows.h>
int a=0;void _declspec(naked) test()
{_asm
{pushadpushfdpush fsint 3    //要使用单步中断  必须保存fsmov eax,0x8003f048 mov ebx,[eax]mov a,ebxpop fspopfdpopadretf
}}int main(int argc, char* argv[])
{char buffer[6]={0};*(DWORD*)&buffer[0]=0;*(WORD*)&buffer[4]=0x4b;_asm
{call fword ptr [buffer]
}printf("a=%x\n",a);getchar();return 0;
}

在0环修改返回地址

长调用与短调用 调用门相关推荐

  1. Windows保护模式学习笔记(三)—— 长调用/短调用/调用门

    Windows保护模式学习笔记(三)-- 长调用/短调用/调用门 要点回顾 长调用与短调用 一.短调用 二.长调用(跨段不提权) 三.长调用(跨段并提权) 长调用执行时: 执行返回(RETF)时: 总 ...

  2. Windows保护模式(三)长调用与短调用调用门

    长调用与短调用 短调用 指令格式 CALL 立即数 / 寄存器 / 内存 堆栈变化 发生改变的寄存器 ESP EIP 长调用(跨段不提权) 指令格式 CALL CS:EIP(如果是通过调用门则 EIP ...

  3. 保护模式(四)长调用与短调用 调用门

    Windows保护模式学习笔记(三)-- 长调用/短调用/调用门 前言 要点回顾 长调用与短调用 一.短调用 二.长调用(跨段不提权) 三.长调用(跨段并提权) 长调用执行时: 执行返回(RETF)时 ...

  4. Python 调用中控门禁并包装成webservice供移动设备调用。

    前段时间做了个小试验,用Python 调用中控门禁并包装成webservice供移动设备调用. 移动端用的是泛微的OA企业微信端. 实现手机远程开门效果,拿着手机,走到哪,哪的门就自动开了,很屌的样子 ...

  5. 【redis】redis实现API接口调用调用次数的限制

    redis实现API接口调用调用次数的限制 参考地址:https://bbs.csdn.net/topics/391856106?page=1 参考地址:https://www.cnblogs.com ...

  6. 段间转移、长调用、短调用

    段间转移不同于段内转移,段间转移同时修改CS:EIP,而段内转移只修改EIP 如JMP FAR 与JMP之间的区别 段间转移 JMP 0x20:0x004183D7 流程             1. ...

  7. 【2021.03.19】长调用与短调用

    要点回顾 通过前文知道JMP FAR可以实现段间跳转,如果要实现跨段的调用就必须要学习CALL FAR,也就是长调用. CALL FAR 比 JMP FAR 要复杂,JMP并不影响堆栈,而CALL指令 ...

  8. 10.[保护模式]长调用与短调用

    CALL FAR 长调用最终需要执行的代码由CS段选择子找到的调用门决定的 提权的时候堆栈发生了切换,保留原CS,ESP,SS 返回也是RETF 总结: 1.跨段调用时,一旦有权限切换,就会切换堆栈: ...

  9. [windows内核]长调用与短调用

    相信大家都不陌生call指令了,但除了常见的段内调用(CS当前指向的段)外,还有其他几种不同的调用,手册上说明是有4种,在第 2A 卷: 指令集参考(A-L)中的CALL-Call Procedure ...

最新文章

  1. Java中Socket通信-客户端向服务端发送照片
  2. reactive stream协议详解
  3. Could not find an NgModule. Use the skip-import option to skip importing in
  4. 图像处理技术(二)滤波去噪
  5. 打造智能家居安防系统 七个选购常识你需懂
  6. shell中单引号、双引号、反引号、反斜杠的使用
  7. Python collections模块总结
  8. 全国省市区 mysql_2017全国省市区数据库【含三款数据库】
  9. oracle全量增量_数据同步:全量与增量
  10. 如何完成一个有效的面试——善用STAR法则
  11. latex如何使文字不空格_latex空格怎么打_latex空格
  12. Cisco(PacketTracer) - 三层交换机
  13. Glide,AndroidX包兼容问题
  14. FishRedux完成一个玩安卓客户端
  15. Biopython+python 自动化分析蛋白质pdb文件,输出id,序列以及作用位点
  16. Docker 搭建 Jenkins 流水线项目配置
  17. pyqt5——窗口尺寸调节
  18. 排列(permutation)
  19. 快速傅里叶变换学习及C语言实现
  20. 张掖市科迪计算机学校,甘肃张掖金安园学校校网

热门文章

  1. SQL*Plus中 Set timing on的时间显示单位
  2. 关于webrtc的多人视频会议的杂乱记录
  3. 初识C51单片机(详解)
  4. 如何找靠谱的游戏开发外包公司
  5. NLP 实战 (3) | 整体设计之数据集/模型管理
  6. github项目管理和贡献代码
  7. 一个优秀IT专家的成长历程---献给所有的颓废或即将颓废的人们
  8. 登录界面—记住用户名和密码
  9. 谷歌Chrome浏览器极速模式Never Slow Mode细节曝光
  10. news html5 qq,WebQQ全面升级支持IE9 HTML5无处不在