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

[求助]iomap 的设置

2010-8-31 00:22
4362
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仍然可以进行重启,这是为什么?

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
打赏
分享
最新回复 (1)
雪    币: 114
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
haochao 2010-8-31 01:33
2
0
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提前接管了?
游客
登录 | 注册 方可回帖
返回