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

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

2023-5-14 23:19
7941

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


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
点赞0
打赏
分享
最新回复 (12)
雪    币: 914
活跃值: (2188)
能力值: ( LV5,RANK:68 )
在线值:
发帖
回帖
粉丝
万剑归宗 1 2023-5-15 09:30
2
0
你说的东西,也许火哥知道
雪    币: 477
活跃值: (1412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mb_foyotena 2023-5-15 09:48
3
0
大黄狗知道
雪    币: 839
活跃值: (5014)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
suuuuu 2023-5-15 14:24
4
0
华哥知道,不过他正在西瓜摊买瓜
雪    币: 10214
活跃值: (2240)
能力值: ( LV5,RANK:71 )
在线值:
发帖
回帖
粉丝
joker陈 2023-5-16 11:54
5
0
ntquerysysteminfromation
雪    币: 149
活跃值: (2023)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
saloyun 2023-5-16 12:00
6
0

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);	


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