首页
社区
课程
招聘
[求助]关于OllyBone里面的GetPteAddress,请用过的帮下忙
发表于: 2008-11-26 12:25 7080

[求助]关于OllyBone里面的GetPteAddress,请用过的帮下忙

2008-11-26 12:25
7080
PPTE GetPteAddress( PVOID VirtualAddress )
{
        PPTE pPTE = 0;
        __asm
        {
                cli                     //disable interrupts
                pushad
                mov esi, PROCESS_PAGE_DIR_BASE
                mov edx, VirtualAddress
                mov eax, edx
                shr eax, 22
                lea eax, [esi + eax*4]  //pointer to page directory entry
                test [eax], 0x80        //is it a large page?
                jnz Is_Large_Page       //it's a large page
                mov esi, PROCESS_PAGE_TABLE_BASE
                shr edx, 12
                lea eax, [esi + edx*4]  //pointer to page table entry (PTE)
                mov pPTE, eax
                jmp Done

                //NOTE: There is not a page table for large pages because
                //the phys frames are contained in the page directory.
                Is_Large_Page:
                mov pPTE, eax

                Done:
                popad
                sti                    //reenable interrupts
        }//end asm

        return pPTE;

}//end GetPteAddress

用这段代码出了问题 会引起蓝屏
看了下应该是下面的地方出的问题               
test [eax], 0x80        //is it a large page?
也就是当前的地址不能读取 请问为什么出现这个问题

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

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 180
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
是pae的问题 去掉电脑里的物理内存扩展就能用了
2008-11-26 14:29
0
雪    币: 143
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
如何去掉的?
2009-7-19 00:10
0
游客
登录 | 注册 方可回帖
返回
//