首页
社区
课程
招聘
[求助]r3下有办法知道ntoskrnl所在物理地址范围么
发表于: 2023-5-14 23:19 8716

[求助]r3下有办法知道ntoskrnl所在物理地址范围么

2023-5-14 23:19
8716

我看各个版本的虚拟机,感觉像是随机分配,大概范围也不好确定,r3下有没有啥办法找出个大概范围?


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (12)
雪    币: 914
活跃值: (2468)
能力值: ( LV5,RANK:68 )
在线值:
发帖
回帖
粉丝
2
你说的东西,也许火哥知道
2023-5-15 09:30
0
雪    币: 477
活跃值: (1412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
大黄狗知道
2023-5-15 09:48
0
雪    币: 864
活跃值: (5124)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
华哥知道,不过他正在西瓜摊买瓜
2023-5-15 14:24
0
雪    币: 10962
活跃值: (2925)
能力值: ( LV5,RANK:71 )
在线值:
发帖
回帖
粉丝
5
ntquerysysteminfromation
2023-5-16 11:54
0
雪    币: 436
活跃值: (2668)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6

ZwQuerySystemInformation +SystemModuleInformation

	NTSTATUS nStatus = STATUS_SUCCESS;
	ULONG ulBytes = 0;
	PRTL_PROCESS_MODULES pMods = nullptr;
	std::unique_ptr<char[]> pBuffers = nullptr;
	do
	{
		nStatus = ZwQuerySystemInformation(SystemModuleInformation, 0, ulBytes, &ulBytes);
		if (ulBytes == 0)
		{
			break;
		}
		pBuffers = std::make_unique<char[]>(ulBytes);
		RtlZeroMemory(pBuffers.get(), ulBytes);

		pMods = (PRTL_PROCESS_MODULES)pBuffers.get();
		nStatus = ZwQuerySystemInformation(SystemModuleInformation, pMods, ulBytes, &ulBytes);
		if (!NT_SUCCESS(nStatus))
		{
			break;
		}

		PRTL_PROCESS_MODULE_INFORMATION pMod = pMods->Modules;
		for (ULONG i = 0; i < pMods->NumberOfModules; i++)
		{
			PCHAR pFileName = strrchr((char*)(pMod[i].FullPathName), '\\');
			if (NULL != pFileName)
			{
				if (0 == _stricmp("\\ntoskrnl.exe", pFileName) ||
					0 == _stricmp("\\ntkrnlmp.exe", pFileName) ||
					0 == _stricmp("\\ntkrnlpa.exe", pFileName) ||
					0 == _stricmp("\\ntkrpamp.exe", pFileName)
					)
				{
					std::cout << pMod[i].FullPathName << "-->0x" << std::hex << pMod[i].ImageBase << std::endl;
					break;
				}
			}
			else
			{
				if (0 == _stricmp("ntoskrnl.exe", (char*)pMod[i].FullPathName) ||
					0 == _stricmp("ntkrnlmp.exe", (char*)pMod[i].FullPathName) ||
					0 == _stricmp("ntkrnlpa.exe", (char*)pMod[i].FullPathName) ||
					0 == _stricmp("ntkrpamp.exe", (char*)pMod[i].FullPathName)
					)
				{
					std::cout << pMod[i].FullPathName << "-->0x" << std::hex << pMod[i].ImageBase << std::endl;
					break;
				}
			}
		}

	} while (0);	


2023-5-16 12:00
0
雪    币: 12848
活跃值: (9147)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
7
saloyun ZwQuerySystemInformation +SystemModuleInformation NTSTATUS&nbsp;nStatus&nbsp;=&nbsp;STAT ...
经典审题不仔细
2023-5-16 14:27
0
雪    币: 6552
活跃值: (4346)
能力值: ( LV10,RANK:163 )
在线值:
发帖
回帖
粉丝
8
NtSystemDebugControl SysDbgReadPhysical
if ( KdPitchDebugger && !KdLocalDebugEnabled && ((a1 - 0x1D) & 0xFFFFFFF7) != 0 )
    return;
2023-5-16 16:00
0
雪    币: 436
活跃值: (2668)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
hzqst 经典审题不仔细
,物理地址,这是想干啥。。。。
2023-5-16 16:50
0
雪    币: 14
活跃值: (948)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
yimingqpa NtSystemDebugControl SysDbgReadPhysical if ( KdPitchDebugger && !KdLocalDebugEnabled && ...
这个函数是直接读物理内存吗,你下面的判断貌似和调试器标志有关?看不懂
2023-5-16 20:24
0
雪    币: 187
活跃值: (863)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
saloyun [em_10][em_10][em_10],物理地址,这是想干啥。。。。
猜测是有个漏洞驱动,暴露的ioctl没有vtop,只有写物理内存,他想利用下
2023-5-17 08:55
0
雪    币: 14
活跃值: (948)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
crackcc 猜测是有个漏洞驱动,暴露的ioctl没有vtop,只有写物理内存,他想利用下
哈哈,被你猜到了.不能映射页表只能直接读写物理内存,只要能定位到nt的物理地址,别的啥都解决,目前暴力搜索.观察了一些电脑,发现w11以前的物理地址是4字节,w11后就是8字节了,还有跟物理内存容量也有些关系,不好确定
2023-5-17 10:54
0
雪    币: 220
活跃值: (611)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
saloyun ZwQuerySystemInformation +SystemModuleInformation NTSTATUS&nbsp;nStatus&nbsp;=&nbsp;STAT ...
可以参考下枚举楼上回复的枚举内核模块地址,大小那个。那个枚举出来的是虚拟地址例如说0xFFFFF8000545B000,但是大多数情况这个地址的低32位就是物理地址
2023-7-13 03:15
0
游客
登录 | 注册 方可回帖
返回
//