吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 9156|回复: 13
收起左侧

[系统底层] 内核实验02 中断提权 中断现场之寄存器探测

[复制链接]
BeneficialWeb 发表于 2019-9-1 19:21
本帖最后由 BeneficialWeb 于 2019-9-2 15:15 编辑

工具:VMMWare vs2017, WinDbgPrew,PCHunter64
平台:win7x64虚拟机
声明:本次实验是基于周壑大佬的视频自学而成。

实验目的主要是观察ring3进ring0的权限变化,观察寄存器的变化
实验步骤:
1.通过双机调试构造int 20号中断处理例程
2.编写代码读取两个环境下的寄存器
3.观察实验结果
[Asm] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
.data
EXTERN        g_rbp:DQ
EXTERN        g_rax:DQ
EXTERN        g_rcx:DQ
EXTERN        g_rbx:DQ
EXTERN        g_rdx:DQ
EXTERN        g_rsi:DQ
EXTERN        g_rdi:DQ
EXTERN        g_rsp:DQ
EXTERN        g_cs:DW
EXTERN        g_fs:DW
EXTERN        g_ds:DW
EXTERN        g_ss:DW
EXTERN        g_gs:DW
EXTERN        g_es:DW
 
.code
IdtEntry PROC
        mov [g_rax+8],rax
        mov [g_rbx+8],rbx
        mov [g_rcx+8],rcx
        mov [g_rbp+8],rbp
        mov [g_rsi+8],rsi
        mov [g_rdi+8],rdi
        mov [g_rsp+8],rsp
        mov [g_rdx+8],rdx
 
        mov word ptr [g_cs+2],cs
        mov word ptr [g_ds+2],ds
        mov word ptr [g_ss+2],ss
        mov word ptr [g_fs+2],fs
        mov word ptr [g_es+2],es
        mov word ptr [g_gs+2],gs
        iretq
IdtEntry ENDP
 
 
go PROC
        mov [g_rax],rax
        mov [g_rbx],rbx
        mov [g_rcx],rcx
        mov [g_rbp],rbp
        mov [g_rsi],rsi
        mov [g_rdi],rdi
        mov [g_rsp],rsp
        mov [g_rdx],rdx
 
        mov word ptr [g_cs],cs
        mov word ptr [g_ds],ds
        mov word ptr [g_ss],ss
        mov word ptr [g_fs],fs
        mov word ptr [g_es],es
        mov word ptr [g_gs],gs
        int 20h
        ret
go ENDP
END



[C] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include<stdlib.h>
#include<stdio.h>
#include<Windows.h>
 
extern VOID IdtEntry();
extern VOID go();
 
DWORD64 g_rax[2], g_rbx[2], g_rcx[2], g_rdx[2], g_rbp[2],g_rsi[2],g_rdi[2],g_rsp[2];
WORD g_cs[2], g_ds[2], g_ss[2], g_es[2], g_fs[2], g_gs[2];
 
 
void main()
{
    // r idtr
    // dp fffff80000b95080 l42
    // ep fffff800`054e9280 4000ee00`00101200 00000000`00000001
    if (IdtEntry != 0x140001210)
    {
        printf("error address:%p\n", IdtEntry);
        exit(-1);
    }
    go();
    printf("rax:%p\r\nrbx:%p\r\nrcx:%p\r\nrdx:%p\r\nrbp:%p\r\nrsp:%p\r\nrsi:%p\r\nrdi:%p\r\n", g_rax[0], g_rbx[0], g_rcx[0], g_rdx[0], g_rbp[0], g_rsp[0], g_rsi[0], g_rdi[0]);
    printf("cs:%04x\r\nds:%04x\r\nss:%04x\r\nes:%04x\r\nfs:%04x\r\ngs:%04x\r\n", g_cs[0], g_ds[0], g_ss[0], g_es[0], g_fs[0], g_gs[0]);
    printf("\n");
    printf("rax:%p\r\nrbx:%p\r\nrcx:%p\r\nrdx:%p\r\nrbp:%p\r\nrsp:%p\r\nrsi:%p\r\nrdi:%p\r\n", g_rax[1], g_rbx[1], g_rcx[1], g_rdx[1], g_rbp[1], g_rsp[1], g_rsi[1], g_rdi[1]);
    printf("cs:%04x\r\nds:%04x\r\nss:%04x\r\nes:%04x\r\nfs:%04x\r\ngs:%04x\r\n", g_cs[1], g_ds[1], g_ss[1], g_es[1], g_fs[1], g_gs[1]);
    system("pause");
}

实验结果:
register.png
结果分析验证:
ss.png
应该是没问题了。
总结:
在实验中学习保护模式,就不那么枯燥无聊了。






免费评分

参与人数 5吾爱币 +13 热心值 +4 收起 理由
willJ + 9 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
gaosld + 1 + 1 谢谢@Thanks!
少林大虾 + 1 热心回复!
nj001 + 1 + 1 我很赞同!
陈世界 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

zhouaheng123 发表于 2019-9-1 20:16
感谢楼主分享
astrisk 发表于 2019-9-1 20:33
 楼主| BeneficialWeb 发表于 2019-9-1 21:01
astrisk 发表于 2019-9-1 21:57
BeneficialWeb 发表于 2019-9-1 21:01
b站的一个人,我也不认识,哈哈

他的视频在哪有的看
 楼主| BeneficialWeb 发表于 2019-9-2 09:49
astrisk 发表于 2019-9-1 21:57
他的视频在哪有的看

哔哩哔哩啊,。。。。
头像被屏蔽
wozaibj 发表于 2019-9-2 12:01
提示: 作者被禁止或删除 内容自动屏蔽
TZ弹指之间 发表于 2019-9-2 15:33

感谢楼主分享
Slaughter-Infer 发表于 2019-9-2 16:50
感谢楼主分享
gaosld 发表于 2019-9-2 17:56
谢谢分享学习经验
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-4-7 09:16

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表