首页
社区
课程
招聘
未解决 [求助]vt-x虚拟化多核浸染时,兼容不同数量的CPU核心时出现问题 10雪币
发表于: 2025-12-7 18:47 1753

未解决 [求助]vt-x虚拟化多核浸染时,兼容不同数量的CPU核心时出现问题 10雪币

2025-12-7 18:47
1753

如题,多核浸染代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 多核浸染
KeGenericCallDpc(synchronization_infection, NULL);
 
BOOLEAN synchronization_infection(KDPC* dpc, PVOID deferred_context, PVOID system_arg1, PVOID system_arg2)
{
    ULONG cpu_id = KeGetCurrentProcessorIndex();
    struct __vcpu* vcpu = (struct __vcpu*)(&vcpu_info.vcpu_info_table[cpu_id]);
 
    // 初始化vmcs并执行vmlaunch
    init_vcpu(vcpu, cpu_id);
     
    // Wait for all DPCs to synchronize at this point
    KeSignalCallDpcSynchronize(system_arg2);
 
    // Mark the DPC as being complete
    KeSignalCallDpcDone(system_arg1);
 
    DbgPrintEx(DPFLTR_IHVDRIVER_ID, DPFLTR_ERROR_LEVEL, "[ok] cpu-%d synchronization infection completed.\n", vcpu->cpu_id);
    return TRUE;
}

经过测试发现,1/2/3/6核时可正常实现多核浸染,但当核心数为4/8时卡死。

处理器核心数为2时,正常实现虚拟化
处理器核心数为2时,正常实现虚拟化。

图片描述
处理器核心数为4时,执行init_vcpu卡死。

当前物理机CPU为4核8线程,使用VMware® Workstation 17 Pro。
为什么会出现这样的问题?懂的大牛指点一下,谢谢!


[培训]Windows内核深度攻防:从Hook技术到Rootkit实战!

最后于 2025-12-7 18:49 被ALwalker编辑 ,原因: 错别字
收藏
免费 1
支持
分享
最新回复 (1)
雪    币: 2077
活跃值: (2025)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2

是不是内存对齐的问题,你的init_vcpu内部分配VMCS时是不是使用了ExAllocatePool2导致内存没有4K对齐,导致vmlaunch行为异常,如果是的话,建议使用MmAllocateContiguousMemory,建议把init_vcpu详细代码给出来,附注是intel sdm

2026-2-18 23:03
0
游客
登录 | 注册 方可回帖
返回