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

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

2020-12-8 13:55
3267

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


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

最后于 2021-2-18 13:09 被mb_pmtcimdp编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 1522
活跃值: (2177)
能力值: ( LV3,RANK:35 )
在线值:
发帖
回帖
粉丝
2

修改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蓝屏

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