-
-
[求助]请教rtlcopymemory
-
发表于: 2009-2-19 14:28 3531
-
我在驱动里
自己实现KeAttachProcess以后
用RtlCopyMemory报错是怎么回事啊?
这个代码是抄袭一个大牛的……
dprintf("进入WriteProcessMemory\n");
PEPROCESS pstKProcess = NULL;
PEPROCESS pstCurrent = NULL;
ULONG ulPDT = 0;
ULONG ulOldCr3 = 0;
dprintf("pstKProcess初始化,得到PCB\n");
pstKProcess =pstEProcess;
dprintf("pstKProcess :0x%08X\n",pstKProcess);
dprintf("pstKProcess初始化,得到DirectoryTableBase[0]\n");
ulPDT =*(ULONG*) ((ULONG)pstEProcess+0x18);//->DirectoryTableBase[0];
dprintf("ulPDT :0x%08X\n",ulPDT);
dprintf("开始汇编\n");
//load cr3
_asm
{
cli;
mov eax, cr3;
mov ulOldCr3, eax;
mov eax, ulPDT;
mov cr3,eax
}
_asm sti;
dprintf("开始写入内存\n");
dprintf("====================\n");
dprintf("Address :0x%08X.\n",address);
dprintf("Value Address :0x%08X.\n",Value);
dprintf("Value :%d.\n",*((ULONG*)Value));
dprintf("Size Value : %d\n",sizeof(Value));
dprintf("====================\n");
RtlCopyMemory( address,Value, ulLen);
dprintf("完成写入内存,开始还原DirectoryTableBase\n");
_asm cli;
_asm
{
mov eax, ulOldCr3;
mov cr3,eax;
sti;
}
dprintf("还原DirectoryTableBase结束\n");
dprintf("WriteProcessMemory函数结束\n");
return STATUS_SUCCESS;
自己实现KeAttachProcess以后
用RtlCopyMemory报错是怎么回事啊?
这个代码是抄袭一个大牛的……
dprintf("进入WriteProcessMemory\n");
PEPROCESS pstKProcess = NULL;
PEPROCESS pstCurrent = NULL;
ULONG ulPDT = 0;
ULONG ulOldCr3 = 0;
dprintf("pstKProcess初始化,得到PCB\n");
pstKProcess =pstEProcess;
dprintf("pstKProcess :0x%08X\n",pstKProcess);
dprintf("pstKProcess初始化,得到DirectoryTableBase[0]\n");
ulPDT =*(ULONG*) ((ULONG)pstEProcess+0x18);//->DirectoryTableBase[0];
dprintf("ulPDT :0x%08X\n",ulPDT);
dprintf("开始汇编\n");
//load cr3
_asm
{
cli;
mov eax, cr3;
mov ulOldCr3, eax;
mov eax, ulPDT;
mov cr3,eax
}
_asm sti;
dprintf("开始写入内存\n");
dprintf("====================\n");
dprintf("Address :0x%08X.\n",address);
dprintf("Value Address :0x%08X.\n",Value);
dprintf("Value :%d.\n",*((ULONG*)Value));
dprintf("Size Value : %d\n",sizeof(Value));
dprintf("====================\n");
RtlCopyMemory( address,Value, ulLen);
dprintf("完成写入内存,开始还原DirectoryTableBase\n");
_asm cli;
_asm
{
mov eax, ulOldCr3;
mov cr3,eax;
sti;
}
dprintf("还原DirectoryTableBase结束\n");
dprintf("WriteProcessMemory函数结束\n");
return STATUS_SUCCESS;
赞赏
他的文章
- [求助]关于内存搜索 4565
- [原创]内核内存问题…… 4249
- [求助]请教rtlcopymemory 3532
- [求助]在加载驱动时的问题 3470
赞赏
雪币:
留言: