-
-
[求助]最近学习驱动碰到难题。高手指教下。关于内核动态分配内存
-
发表于:
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期)