首页
社区
课程
招聘
[求助]最近学习驱动碰到难题。高手指教下。关于内核动态分配内存
发表于: 2009-8-20 20:34 3930

[求助]最近学习驱动碰到难题。高手指教下。关于内核动态分配内存

2009-8-20 20:34
3930
给一个地址和长度 复制代码并且修复代码中的函数调用的偏移
_CpFunToNewMem        proc        lpOldFun,FunLen
        local        lpNewFunAddr
        local        lpMaxFunAddr
        local        NewFunToOldFunOffset
        local        CallOffset
       
        mov        eax,FunLen
        add        eax,lpOldFun
        mov        lpMaxFunAddr,eax
        invoke        ExAllocatePool,NonPagedPool,FunLen
                .if        eax
                        mov        lpNewFunAddr,eax               
                        sub        eax,lpOldFun
                        mov        eax,CallOffset
                        invoke        _FillMemory,edi,FunLen,90h
                        invoke        _CopyMemory,lpNewFunAddr,lpOldFun,FunLen
                       
                        mov        edi,lpNewFunAddr
                        .while        edi < lpMaxFunAddr
                                .if        BYTE PTR [edi] != 0E8h
                                        inc        edi
                                .else
                                        mov        eax,DWORD PTR [edi+1]
                                        add        eax,CallOffset
                                        mov        DWORD PTR [edi+1],eax
                                        add        edi,5
                                .endif
                        .endw
                .endif
                        outhere:
                        mov        eax,lpNewFunAddr
                        ret
_CpFunToNewMem        endp

这样 虽然可以成功分配 并且也COPY成功
但是 用不了多久 就会蓝屏 报错
PAGE_FAULT_IN_NONPAGED_AREA

驱动只调用了这一个函数 没其他的  请问这是什么问题啊

这个是用在钩挂函数上的

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 133
活跃值: (113)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
大概说下,好象内核内存的分配要区分分页内存和非分页内存。请从这方面分析下。
都会转成内核函数memset()和memcpy()

本人才学到驱动,还不是很懂。
2009-8-20 21:36
0
游客
登录 | 注册 方可回帖
返回
//