首页
社区
课程
招聘
[原创]一种简单屏蔽nmi中断的方法
2022-9-19 23:32 5559

[原创]一种简单屏蔽nmi中断的方法

2022-9-19 23:32
5559

一种非常简单的屏蔽方法
NMI处理例程为KiProcessNMI

其中有对当前核NMI是否正在处理的判断,如判断为真则直接返回

将该变量对应的每个核都置位则nmi回调不会被调用,实现代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
uint8_t* KiNmiInProgress = NULL;
        if (dwBuildNumber < 22000) //win10
        {
            KiNmiInProgress = reinterpret_cast<uint8_t*>(FindPatternInSectionAtKernel((char*)".text", ntoskrnlAddr, (PUCHAR)"\x81\x25\x00\x00\x00\x00\x00\x00\x00\x00\xB9\x00\x00\x00\x00", (char*)"xx????????x????"));
        }
        else //win11
        {
            KiNmiInProgress = reinterpret_cast<uint8_t*>(FindPatternInSectionAtKernel((char*)".text", ntoskrnlAddr, (PUCHAR)"\x81\x25\x00\x00\x00\x00\x00\x00\x00\x00\x8D\x00\x00", (char*)"xx????????x??"));
        }
        if (KiNmiInProgress)
        {
            uint8_t uTemp = this->read_virtual<uint8_t>((void*)KiNmiInProgress);
 
            while (uTemp != 0x48)
            {
                ++KiNmiInProgress;
                uTemp = this->read_virtual<uint8_t>((void*)KiNmiInProgress);
            }
 
            KiNmiInProgress = reinterpret_cast<uint8_t*>(ResolveRelativeAddress(KiNmiInProgress, 3, 7));
            ULONG nCoreNum = this->v_ctx->kn_KeQueryActiveProcessorCountEx(0);
            if (nCoreNum)
            {
                for (int i = 0; i < nCoreNum; i++)
                {
                    this->v_ctx->kn_KeInterlockedSetProcessorAffinityEx((__int64)KiNmiInProgress, i);
                }
            }
            return true;
        }
        return false;

[培训]《安卓高级研修班(网课)》月薪三万计划

收藏
点赞1
打赏
分享
最新回复 (6)
雪    币: 12833
活跃值: (8989)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
hzqst 3 2022-9-20 09:47
2
0
EAC:学到了,下个版本加入校验
雪    币: 7
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
DemonJames 2022-9-20 15:43
3
0
hzqst EAC:学到了,下个版本加入校验
EAC:很遗憾,我已经校验了
把握好打开和关闭的时机仍然有用
雪    币: 2439
活跃值: (3542)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
syser 2022-9-20 15:46
4
0
hzqst EAC:学到了,下个版本加入校验
早加了 这样操作会被flag 封不封 看心情
雪    币: 7
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
DemonJames 2022-9-20 15:55
5
0
syser 早加了 这样操作会被flag 封不封 看心情
然鹅你为什么要全时段所有核屏蔽呢
雪    币: 248
活跃值: (3698)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
luskyc 2022-9-21 02:41
6
0
屏蔽NMI中断,时间长了不出问题吗?
雪    币: 1382
活跃值: (3100)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
小希希 2022-9-21 22:36
7
0
屏蔽NMI中断,学习了,谢谢
游客
登录 | 注册 方可回帖
返回