首页
社区
课程
招聘
未解决 [求助]驱动写Game内存蓝屏
发表于: 2020-2-1 19:15 3132

未解决 [求助]驱动写Game内存蓝屏

2020-2-1 19:15
3132
驱动向DXF里面写内存蓝屏,而向普通进程里写是可以的
求答案!!!
写的方式是MDL
//写内存
VOID KeWriteProcessMemory(PEPROCESS Process, unsigned char* WriteBuff, PVOID TargetAddress, SIZE_T Size)
{
//在进入进程地址空间之前先赋值
unsigned char* GetData;
__try
{
GetData = ExAllocatePool(PagedPool, Size);
}
__except (1)
{
DbgPrint("内存分配失败");
return;
}

for (int i = 0; i < Size; i++)
{
GetData[i] = WriteBuff[i];
}

KAPC_STATE stack = { 0 };
KeStackAttachProcess(Process, &stack);
ULONG uOldProtect = 0;
ZwProtectVirtualMemory(NtCurrentProcess(), &TargetAddress, &Size, PAGE_EXECUTE_READWRITE, &uOldProtect);
PMDL mdl = IoAllocateMdl(TargetAddress, Size, 0, 0, NULL);
if (mdl == NULL)
{
DbgPrint("创建MDL失败");
return;
}

MmBuildMdlForNonPagedPool(mdl);

unsigned char* ChangeData = NULL;
__try
{
ChangeData = MmMapLockedPages(mdl, KernelMode);
RtlCopyMemory(ChangeData, GetData, Size);
}
__except (1)
{
DbgPrint("内存映射失败,%d", sizeof(ChangeData));
goto END;
}
ZwProtectVirtualMemory(NtCurrentProcess(), &TargetAddress, &Size, uOldProtect, 0);
END:
IoFreeMdl(mdl);
ExFreePool(GetData);
KeUnstackDetachProcess(&stack);
ObDereferenceObject(Process);

}

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

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 198
活跃值: (81)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
2
顶!!!
2020-2-1 19:46
0
雪    币: 35
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
当我看到KeStackAttachProcess的时候我就知道。你号没了
2020-2-1 23:56
0
雪    币: 1502
活跃值: (1153)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
KomiMoe 当我看到KeStackAttachProcess的时候我就知道。你号没了
请问KeStackAttachProcess 怎么了??我已知在用这个??没因为这个被ban过呀
2020-2-2 07:22
0
雪    币: 2510
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
5
帮顶
2020-2-3 21:27
3
雪    币: 198
活跃值: (81)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
6
mb_xghoecki 帮顶
我的问题已经解决了,主要是符号链接的问题
2020-2-4 12:24
0
游客
登录 | 注册 方可回帖
返回
//