长调用与短调用 调用门
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环修改返回地址
长调用与短调用 调用门相关推荐
- Windows保护模式学习笔记(三)—— 长调用/短调用/调用门
Windows保护模式学习笔记(三)-- 长调用/短调用/调用门 要点回顾 长调用与短调用 一.短调用 二.长调用(跨段不提权) 三.长调用(跨段并提权) 长调用执行时: 执行返回(RETF)时: 总 ...
- Windows保护模式(三)长调用与短调用调用门
长调用与短调用 短调用 指令格式 CALL 立即数 / 寄存器 / 内存 堆栈变化 发生改变的寄存器 ESP EIP 长调用(跨段不提权) 指令格式 CALL CS:EIP(如果是通过调用门则 EIP ...
- 保护模式(四)长调用与短调用 调用门
Windows保护模式学习笔记(三)-- 长调用/短调用/调用门 前言 要点回顾 长调用与短调用 一.短调用 二.长调用(跨段不提权) 三.长调用(跨段并提权) 长调用执行时: 执行返回(RETF)时 ...
- Python 调用中控门禁并包装成webservice供移动设备调用。
前段时间做了个小试验,用Python 调用中控门禁并包装成webservice供移动设备调用. 移动端用的是泛微的OA企业微信端. 实现手机远程开门效果,拿着手机,走到哪,哪的门就自动开了,很屌的样子 ...
- 【redis】redis实现API接口调用调用次数的限制
redis实现API接口调用调用次数的限制 参考地址:https://bbs.csdn.net/topics/391856106?page=1 参考地址:https://www.cnblogs.com ...
- 段间转移、长调用、短调用
段间转移不同于段内转移,段间转移同时修改CS:EIP,而段内转移只修改EIP 如JMP FAR 与JMP之间的区别 段间转移 JMP 0x20:0x004183D7 流程 1. ...
- 【2021.03.19】长调用与短调用
要点回顾 通过前文知道JMP FAR可以实现段间跳转,如果要实现跨段的调用就必须要学习CALL FAR,也就是长调用. CALL FAR 比 JMP FAR 要复杂,JMP并不影响堆栈,而CALL指令 ...
- 10.[保护模式]长调用与短调用
CALL FAR 长调用最终需要执行的代码由CS段选择子找到的调用门决定的 提权的时候堆栈发生了切换,保留原CS,ESP,SS 返回也是RETF 总结: 1.跨段调用时,一旦有权限切换,就会切换堆栈: ...
- [windows内核]长调用与短调用
相信大家都不陌生call指令了,但除了常见的段内调用(CS当前指向的段)外,还有其他几种不同的调用,手册上说明是有4种,在第 2A 卷: 指令集参考(A-L)中的CALL-Call Procedure ...
最新文章
- Java中Socket通信-客户端向服务端发送照片
- reactive stream协议详解
- Could not find an NgModule. Use the skip-import option to skip importing in
- 图像处理技术(二)滤波去噪
- 打造智能家居安防系统 七个选购常识你需懂
- shell中单引号、双引号、反引号、反斜杠的使用
- Python collections模块总结
- 全国省市区 mysql_2017全国省市区数据库【含三款数据库】
- oracle全量增量_数据同步:全量与增量
- 如何完成一个有效的面试——善用STAR法则
- latex如何使文字不空格_latex空格怎么打_latex空格
- Cisco(PacketTracer) - 三层交换机
- Glide,AndroidX包兼容问题
- FishRedux完成一个玩安卓客户端
- Biopython+python 自动化分析蛋白质pdb文件,输出id,序列以及作用位点
- Docker 搭建 Jenkins 流水线项目配置
- pyqt5——窗口尺寸调节
- 排列(permutation)
- 快速傅里叶变换学习及C语言实现
- 张掖市科迪计算机学校,甘肃张掖金安园学校校网