-
-
未解决 [求助]关于驱动内核 修改值 buffer = MmGetSystemAddressForMdlSafe(Irp->MdlAddress, NormalPagePriority) 100雪币
-
发表于: 2024-9-18 16:54 1022
-
未解决 [求助]关于驱动内核 修改值 buffer = MmGetSystemAddressForMdlSafe(Irp->MdlAddress, NormalPagePriority) 100雪币
本人是个菜鸟,多谢大佬指点
在IoSetCompletionRoutine的例程中,捕捉到了IRP_MJ_READ
需要对读到的内容根据需要截断长度
if(Irp->MdlAddress!=NULL)
{
buffer = MmGetSystemAddressForMdlSafe(Irp->MdlAddress, NormalPagePriority);
if(buffer!=NULL)
{
if(len>3)
{
PUCHAR buffer2;
PMDL new_mdl;
buffer2 = (PUCHAR)ExAllocatePool(NonPagedPool, 3);
memcpy(buffer2,buffer,3);
new_mdl = IoAllocateMdl(buffer2, 3, FALSE, TRUE, NULL);
MmBuildMdlForNonPagedPool(new_mdl);
Irp->MdlAddress = new_mdl;
Irp->IoStatus.Information=3;
}
if(buffer[0]=='1')
{
buffer[0]='#';
if(Irp->IoStatus.Information>3)
Irp->IoStatus.Information=3;
}
}
}
申请到的PMDL并没有起作用,修改 buffer[0]='#' 和Irp->IoStatus.Information=3 起作用
直接修改Irp->IoStatus.Information,还是有00 00 00 这样的数组被应用层读到
请教下大佬,具体如何写?
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课