首页
社区
课程
招聘
[求助]iomap 的设置
发表于: 2010-8-31 00:22 4745

[求助]iomap 的设置

2010-8-31 00:22
4745
pIOPM = (IOPM*)ExAllocatePool(NonPagedPool,sizeof(IOPM));

        if (pIOPM)
        {

                RtlFillMemory(pIOPM,sizeof(IOPM),0xFF);
                Ke386IoSetAccessProcess(PsGetCurrentProcess(), 1);
                if(Ke386SetIoAccessMap(1, pIOPM)){
                __asm{
                        mov al, 0xfe
                        out 0x64, al
                }
                }
                ExFreePool(pIOPM);
        }else return;
我把当前进程的整个iomap都设置为1了,但端口0x64仍然可以进行重启,这是为什么?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 114
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
pIOPM = (IOPM*)ExAllocatePool(NonPagedPool,sizeof(IOPM));

        if (Ke386QueryIoAccessMap(0,pIOPM))
        {
                __asm{
                    mov ecx, pIOPM
                        add ecx, 64h / 8
                        mov eax, [ecx]
                        bts eax, 64h MOD 8
                        mov [ecx], eax
                }
                //RtlFillMemory(pIOPM,sizeof(IOPM),0xFF);
       
                if(Ke386SetIoAccessMap(1, pIOPM) && Ke386IoSetAccessProcess(PsGetCurrentProcess(), 1)){
                __asm{
                        mov al, 0xfe
                        out 0x64, al
                }
                }
                ExFreePool(pIOPM);
        }else return;

这样写也没没用。我怀疑是IOPL提前接管了?
2010-8-31 01:33
0
游客
登录 | 注册 方可回帖
返回
//