首页
社区
课程
招聘
未解决 [已和谐] WindowsRing3执行地址大于0x7FFFFFFF
2020-12-8 13:55 3158

未解决 [已和谐] WindowsRing3执行地址大于0x7FFFFFFF

2020-12-8 13:55
3158

论坛视乎没有发表过相关的文章,发现个有意思的程序执行方案,实在研究不出来,发上看雪论坛来问问,发现Windows R3的执行代码可以在0x7FFFFFFF以上执行,类似MmMapIoSpace生成的内核地址,正常来说应该会出现空指针无权限执行的地址,但是他是怎么做到可以在RING3执行的呢,由于未能过双机调试,所以没看到实现原理,好奇想问题下大神们这是如何做到的呢?


[培训]科锐软件逆向50期预科班报名即将截止,速来!!! 50期正式班报名火爆招生中!!!

最后于 2021-2-18 13:09 被mb_pmtcimdp编辑 ,原因:
收藏
免费 0
打赏
分享
最新回复 (4)
雪    币: 1519
活跃值: (2002)
能力值: ( LV3,RANK:35 )
在线值:
发帖
回帖
粉丝
Chords 2021-2-1 22:34
2
0

修改pte 的UserSupervisor 可以让内核内存在r3可见

bool PhysicalMemory::ExposeKernelMemoryToProcess(PVOID Memory, size_t Size)
{



	bool Success = true;
	PUCHAR It = (PUCHAR)Memory;
	PUCHAR End = It + Size;
	while (It < End)
	{
		SIZE_T Size = (PUCHAR)(((UINT64)It + 0x1000) & (~0xFFF)) - It;

		if ((It + Size) > End)
			Size = End - It;

		//uint64_t Pa = VirtToPhys(It);
		pt_entries pt;
		QueryPageInfo(It, pt);
		pt.pml4->UserSupervisor = true;
		pt.pdpt->UserSupervisor = true;
		pt.pd->UserSupervisor = true;
		if ((!pt.pd) || (pt.pt && (!pt.pt->Present)))
			Success = true;
		else
		{
			if (pt.pt)
				pt.pt->UserSupervisor = true;
		}
		//Fn(It, Pa, Size);

		It += Size;
	}

	return Success;
}

不过这个方案,在1809蓝屏

雪    币: 460
活跃值: (483)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lwbkanxue 2021-2-16 20:27
3
0
Chords 修改pte 的UserSupervisor 可以让内核内存在r3可见bool&nbsp;PhysicalMemory::ExposeKernelMemoryToProcess(PVOID&am ...
OK,谢谢了,了解了,我去查查资料
雪    币: 1519
活跃值: (2002)
能力值: ( LV3,RANK:35 )
在线值:
发帖
回帖
粉丝
Chords 2021-2-16 20:32
4
0
lwbkanxue OK,谢谢了,了解了,我去查查资料
核弹方案..... 高版本win10 蓝屏
雪    币: 460
活跃值: (483)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lwbkanxue 2021-2-16 20:47
5
0
Chords 修改pte 的UserSupervisor 可以让内核内存在r3可见bool&nbsp;PhysicalMemory::ExposeKernelMemoryToProcess(PVOID&am ...
1809我看有人在用,2020不知道行不行
游客
登录 | 注册 方可回帖
返回