(46)分析 INT 0x2E 和 sysenter

news/2023/11/30 16:55:31

一、回顾

上次课我们学习了3环进0环的两种方式,分别是中断门和快速调用,如果CPU支持快速调用,那么_KUSER_SHARED_DATA 结构体的 SystemCall 属性指向的函数是 KiFastSystemCall;如果不支持,那么SystemCall 指向的函数是KiIntSystemCall。

执行 KiFastSystemCall,则使用快速调用的方式进0环;
执行 KiIntSystemCall,则使用中断门的方式进0环。

共同点是都要给0环提供新的CS,SS,EIP,ESP,只是提供的方式不同。中断门的CS,EIP从IDT表里获取,SS,ESP从TSS表里获取;快速调用的CS,EIP,ESP从MSR寄存器获取,SS是CS+8计算得到,至于MSR寄存器里的值,则是系统启动时就已经填好。

所以快速调用比中断门快就快在,快速调用不需要访问内存,而中断门需要读TSS和IDT表。

这节课,我们来详细分析 INT 2E 和 sysenter 做了哪些工作。

二、分析 INT 0x2E

KiIntSystemCall 触发了 2E 中断。用windbg看看2E号中断的中断门描述符,2E 右移3位(或者乘8)得到 0x170,加上 r idtr获取的IDT基址,可以计算出 2E号中断对应的描述符:8053ee00`0008e481

kd> r idtr
idtr=8003f400
kd> dq 8003f400+170
8003f570  8053ee00`0008e481 80548e00`00081780

在这里插入图片描述

拆分中断门描述符,可以得到新的CS是0008(系统代码段),EIP是 8053e481,这个是内核模块的 KiSystemService 函数。

kd> u 8053e481
nt!KiSystemService:
8053e481 6a00            push    0
8053e483 55              push    ebp
8053e484 53              push    ebx
8053e485 56              push    esi
8053e486 57              push    edi
8053e487 0fa0            push    fs
8053e489 bb30000000      mov     ebx,30h
8053e48e 668ee3          mov     fs,bx

接下来查看 TSS 表,首先看看tr寄存器的值,是0x28,然后看看TSS描述符:

kd> dq 8003f000
8003f000  00000000`00000000 00cf9b00`0000ffff
8003f010  00cf9300`0000ffff 00cffb00`0000ffff
8003f020  00cff300`0000ffff 80008b04`200020ab

TSS描述符是 80008b04`200020ab

在这里插入图片描述

所以TSS的地址就是 80042000,dd看一下:

kd> dd 80042000
80042000  0c458b24 8054acf0 8b080010 758b0855

所以ESP0 = 8054acf0, SS0 = 0010。

三、分析 sysenter

sysenter 是从 MSR 寄存器里读取 CS0,ESP0,EIP0,而SS0是通过CS0+8计算得来。我们可以用 rdmsr 指令在windbg里查看 MSR 寄存器,也可以用 wrmsr 修改MSR寄存器。

MSR地址
IA32_SYSENTER_CS174H
IA32_SYSENTER_ESP175H
IA32_SYSENTER_EIP176H

查看 CS,ESP,EIP

kd> rdmsr 174
msr[174] = 00000000`00000008
kd> rdmsr 175
msr[175] = 00000000`f8ac2000
kd> rdmsr 176
msr[176] = 00000000`8053e540

其中,EIP是 KiFastCallEntry 函数:

kd> u 8053e540
nt!KiFastCallEntry:
8053e540 b923000000      mov     ecx,23h
8053e545 6a30            push    30h
8053e547 0fa1            pop     fs
8053e549 8ed9            mov     ds,cx
8053e54b 8ec1            mov     es,cx
8053e54d 8b0d40f0dfff    mov     ecx,dword ptr ds:[0FFDFF040h]
8053e553 8b6104          mov     esp,dword ptr [ecx+4]
8053e556 6a23            push    23h

四、总结

API通过中断门进0环:

1)  固定中断号为0x2E
2)  CS/EIP由门描述符提供   ESP/SS由TSS提供
3)  进入0环后执行的内核函数:NT!KiSystemService

API通过sysenter指令进0环:

1)  CS/ESP/EIP由MSR寄存器提供(SS是算出来的)
2)  进入0环后执行的内核函数:NT!KiFastCallEntry

int 0x2e 和 sysenter 指令进0环后,分别调用了两个函数 KiSystemService 和 KiFastCallEntry。

下一篇博客,我将逆向分析 KiSystemService 和 KiFastCallEntry 这两个函数。


http://www.ppmy.cn/news/158583.html

相关文章

邮件发送-》http://service.mail.qq.com/cgi-bin/help?subtype=1id=28no=1001256

昨天使用发送邮件报了一个错 http://service.mail.qq.com/cgi-bin/help?subtype1&&id28&&no1001256 主要是这句话: 然后我登录企业邮箱发现提醒我邮箱的域名解析有问题,然后我就想起来了,原来我前些天看域名解析不爽&#x…

CodeForces 545E Paths and Trees(最短路)

题目链接:http://codeforces.com/problemset/problem/545/E 题意:给一张无向联通图,让你用最短路去生成一颗最小生成树,并输出用到的边的编号 思路:在spfa的时候就可以更新记录用到哪些边了,在拥有多种最短…

关于联想Thinkpad E450 系列笔记本电脑独立显卡不能工作的解决方案(蓝屏/卡顿/掉帧)

联想Thinkpad E450因为主板问题,在运行一段时间的独立显卡后(通常是在玩游戏调用独显运行时),会在游戏中出现突然掉帧的现象,而后退出游戏在正常的电脑使用过程中也会出现经常蓝屏,黑屏等现象,使…

解决服务器空间满/var/lib/docker/overlay2占用很大,千万慎用 docker system prune -a清理 mongodb等数据库容器及镜像可能被删,找回恢复数据

项目场景: 服务器空间满,想清理一下。发现是docker太大,/var/lib/docker/overlay2占用很大49G,网站也访问不了,mongodb前一天也停了。用这个清理docker system prune -a,结果把数据库的镜像及容器全删了。…

报错TypeError: Cannot read properties of undefined (reading ‘_normalized‘)

vue-router.esm.js?8c4f:1000 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading ‘_normalized’) at normalizeLocation (vue-router.esm.js?8c4f:1000) at Object.match (vue-router.esm.js?8c4f:1586) at VueRouter.match (vue-router.es…

ldslite是什么启动项_最流氓的软件可以流氓到什么程度?

鲁大师吧 有个台式电脑,所有软件都是正版,但是总会弹出来xx资讯还有xx广告。 有次弹窗之后查了一下文件所在位置,是一个叫ldslite的文件夹,在c盘program file(x86)里面。 寻思着删除整个文件夹就可以了,但是却告诉我没…

联想E540笔记本电脑拆键盘、换键盘

我的联想ThinkPad E540键盘坏了几个按键,按下去没有反应。在京东第三方买了一个新的原装键盘,自己把它给换上去。 下图中,几个涂红色的按键是坏的,编程的时候特别不方便。 第一步:在电脑背面卸掉几个螺丝 因为键盘上也…

ThinkpadE450 Win8改Win7 BIOS设置图解

最近E450c卖的挺火的,3000多大洋买个Thinkpad笔记本配置很不错了!大家都知道Win8不好用,兼容性不行,win7相对于笔记本来说操作简单,易用性强!所以下面我就来教大家如何将ThinkpadE450c的笔记本预装原装Win8…

高并发架构系统设计注意事项

本文从以下几点介绍一下设计一个高流量高并发的系统需要经历哪些步骤以及考虑哪些因素(文章中的不足之处还请大佬们多多指点)。 1. 设计原则 1.1 系统设计原则 在设计一个系统之前,我们先要有一个统一且清晰的认知:不要想着一下…

Codeforces 545E Paths and Trees 题解

文章目录 题意题解 题意 给 一 张 边 带 权 无 向 图 , 让 你 求 一 棵 边 权 和 最 小 的 生 成 树 , 使 得 点 u 在 树 上 到 每 个 点 的 距 离 等 于 u 在 原 图 中 到 每 个 点 的 最 短 路 . 给 出 这 张 图 和 u , 输 出 最 小 边 权 和 以 及 构 成 这 棵 生 成 树 的 …

笔记本电脑更换固态硬盘教程(联想ThinkPadE455)

一、制作重装系统的系统启动盘 雨林木风win10专业纯净版64位 在雨林木风官网 老毛桃制作系统启动盘教程 百度一下 二、拆机 thinkpad E455拆机教程 百度经验 注:只拆开,不清灰,只照做到第三步即可。 三、更换硬盘 1.用螺丝刀将硬盘…

Thinkpad E545扩展内存条后蓝屏问题解决

最近新买了个Thinkpad E545同时我也扩展内存到8G,当时供应商是先做的系统,系统是WIN7 64位,后安装的内存条。当时随便点了点没有发现什么异常情况。 晚上回家后安装各种常用的软件,尤其登陆QQ后,QQ持续性的崩溃&#…

ThinkPad E445 E545如何正确开启硬件虚拟化

在BIOS中虚拟化改为Enable了,但是我用VMware安装虚拟机时提示虚拟化已禁用, 解决方案: 将BIOS中security--Virtualization--AMD V(TM) Technology禁用之后使用正常。 此情况可能为BIOS中选项错误导致,默认为Disabled…

ThinkPad E545连WiFi教程(系统:ubuntu-20.04.3-live-server,无线网卡:BCM34142)

PS:需要在有线网络能用的情况下进行! 安装工具:apt install -y net-tools wireless-tools network-manager 安装网卡驱动:apt install -y --reinstall bcmwl-kernel-source 查看无线网卡信息:iwconfig(获…

TextCNN:用于文本分类的CNN网络

参考资料:文本分类之TextCNN与DPCNN TextCNN 是在2014年的论文 《Convolutional Neural Networks for Sentence Classification》中提出来的。 以下是TextCNN的网络结构: (1)TextCNN的第一层为 Embedding 层 Embedding 层的输入…

【01JavaScript简介】JavaScript之初探:入门指南与基础概述

JavaScript简介 php Copy code JavaScript是一种具有广泛应用的脚本语言,主要用于前端开发,可以为网页增加交互性和动态性。它由Netscape公司的Brendan Eich于1995年创建,并迅速成为Web开发中不可或缺的一部分。 JavaScript的特点 JavaScr…

【2023】华为OD机试真题全语言-题目0244-Linux发行版的数量

题目0244-Linux发行版的数量 题目描述 Linux 操作系统有多个发行版,distrowatch.com 提供了各个发行版的资料。这些发行版互相存在关联,例如 Ubuntu 基于Debian 开发,而 Mint 又基于 Ubuntu 开发,那么我们认为 Mint 同 Debian 也存在关联。 发行版集是一个或多个相关存在…

《MYSQL必知必会》读书笔记2

哈夫曼树的学习: http://t.csdn.cn/XJhUI 创建计算字段 字段:基本上与列的意思相同(数据库列一般称为列,而字段通常用于计算字段连接上) 拼接字段 拼接:将值联结到一起构成单个值 把两个结拼接起来&a…

游戏服务器是无线的吗

游戏服务器是无线的吗? 所有放置在IDC机房对外提供服务的服务器,不管是游戏服务器、web服务器还是其它应用服务器,都是使用有线连接的方式接入IDC机房的核心网络的。有线连接网络相对无线连接网络来说,网络性能更好,带…

极度未知HyperX Cloud Alpha Wireless无线游戏耳机续航300小时

无线耳机给我们带来便利的同时,续航能力成为玩家朋友的新一轮烧脑问题。用了没两天就要充一回电,有时忘记补电了就给下次使用造成困扰。针对这个问题,走在电竞前沿、深耕电竞外设的极度未知推出HyperX Cloud Alpha Wireless 无线游戏耳机。30…
最新文章