当前位置: 首页 > news >正文

crewCTF 2025 -- Hypervison

image

Windows Hypervisor Platform

首先创建虚拟机和处理器,映射内存。都是一些 API 调用。

image

接下来是初始化寄存器。
从 WHvSetVirtualProcessorRegisters 看出,一共有 20 个寄存器。动态调试看看有那些。

image

其中前 10 个寄存器是固定的,后 10 个寄存器用输入的 flag 值来填充。

image

验证一下

image

image

把 flag 前 64 个字填充到 r8 - r15,正好是 8 个 64 位寄存器(8 * 64 = 512)。后面的内容忽略,最后两个寄存器 rbx 和 rdx 是 0

根据 intel 的文档

点击查看代码
#include <stdio.h>
#include <stdint.h>#define FIELD(r, x, len) (((r)>>(x)) & ((1ull<<(len))-1))
#define BIT(r, x) FIELD(r, x, 1)#define CR0_PE(r) BIT(r, 0)
#define CR0_MP(r) BIT(r, 1)
#define CR0_EM(r) BIT(r, 2)
#define CR0_TS(r) BIT(r, 3)
#define CR0_ET(r) BIT(r, 4)
#define CR0_NE(r) BIT(r, 5)
#define CR0_WP(r) BIT(r, 16)
#define CR0_AM(r) BIT(r, 18)
#define CR0_NW(r) BIT(r, 29)
#define CR0_CD(r) BIT(r, 30)
#define CR0_PG(r) BIT(r, 31)#define CR3_PWT(r) BIT(r, 3)
#define CR3_PCD(r) BIT(r, 4)
#define CR3_PML4_BASE_ADDRESS(r) FIELD(r, 12, 40)#define CR4_VME(r) BIT(r, 0)
#define CR4_PVI(r) BIT(r, 1)
#define CR4_TSD(r) BIT(r, 2)
#define CR4_DE(r) BIT(r, 3)
#define CR4_PSE(r) BIT(r, 4)
#define CR4_PAE(r) BIT(r, 5)
#define CR4_MCE(r) BIT(r, 6)
#define CR4_PGE(r) BIT(r, 7)
#define CR4_PCE(r) BIT(r, 8)
#define CR4_OSFXSR(r) BIT(r, 9)
#define CR4_OSXMMEXCEPT(r) BIT(r, 10)
#define CR4_OSXSAVE(r) BIT(r, 18)#define EFER_SCE(r) BIT(r, 0)
#define EFER_LME(r) BIT(r, 8)
#define EFER_LMA(r) BIT(r, 10)
#define EFER_NXE(r) BIT(r, 11)#pragma pack(push, 8)
typedef struct _WHV_X64_SEGMENT_REGISTER
{uint64_t Base;uint32_t Limit;uint16_t Selector;#pragma pack(push, 8)union{#pragma pack(push, 8)struct{uint16_t SegmentType : 4;uint16_t NonSystemSegment : 1;uint16_t DescriptorPrivilegeLevel : 2;uint16_t Present : 1;uint16_t Reserved : 4;uint16_t Available : 1;uint16_t Long : 1;uint16_t Default : 1;uint16_t Granularity : 1;};#pragma pack(pop)uint16_t Attributes;};#pragma pack(pop)
}WHV_X64_SEGMENT_REGISTER;
#pragma pack(pop)int main()
{FILE* fp = fopen("reg_value.bin","rb");uint8_t buffer[16];fread(buffer, 1, 16, fp);uint64_t cr0 = *(uint64_t*)buffer;printf("CR0 value: 0x%016llx\n", cr0);printf("bit  0  :  %d  -  PE (Protection Enable)\n", CR0_PE(cr0));printf("bit  1  :  %d  -  MP (Monitor Coprocessor)\n", CR0_MP(cr0));printf("bit  2  :  %d  -  EM (Emulation)\n", CR0_EM(cr0));printf("bit  3  :  %d  -  TS (Task Switched)\n", CR0_TS(cr0));printf("bit  4  :  %d  -  ET (Extension Type)\n", CR0_ET(cr0));printf("bit  5  :  %d  -  NE (Numeric Error)\n", CR0_NE(cr0));printf("bit 16  :  %d  -  WP (Write Protect)\n", CR0_WP(cr0));printf("bit 18  :  %d  -  AM (Alignment Mask)\n", CR0_AM(cr0));printf("bit 29  :  %d  -  NW (Not Write-through)\n", CR0_NW(cr0));printf("bit 30  :  %d  -  CD (Cache Disable)\n", CR0_CD(cr0));printf("bit 31  :  %d  -  PG (Paging)\n", CR0_PG(cr0));printf("\n");fread(buffer, 1, 16, fp);uint64_t cr3 = *(uint64_t*)buffer;printf("CR3 value: 0x%016llx\n", cr3);printf("bit  3  :  %d  -  PWT (Page Write Through)\n", CR3_PWT(cr3));printf("bit  4  :  %d  -  PCD (Page Cache Disable)\n", CR3_PCD(cr3));printf("PML4 base Address  :  %x000\n", CR3_PML4_BASE_ADDRESS(cr3));printf("\n");fread(buffer, 1, 16, fp);uint64_t cr4 = *(uint64_t*)buffer;printf("CR4 value: 0x%016llx\n", cr4);printf("bit  0  :  %d  -  VME (Virtual-8086 Mode Extensions)\n", CR4_VME(cr4));printf("bit  1  :  %d  -  PVI (Protected-Mode Virtual Interrupts)\n", CR4_PVI(cr4));printf("bit  2  :  %d  -  TSD (Time Stamp Disable)\n", CR4_TSD(cr4));printf("bit  3  :  %d  -  DE (Debugging Extensions)\n", CR4_DE(cr4));printf("bit  4  :  %d  -  PSE (Page Size Extensions)\n", CR4_PSE(cr4));printf("bit  5  :  %d  -  PAE (Physical Address Extension)\n", CR4_PAE(cr4));printf("bit  6  :  %d  -  MCE (Machine Check Enable)\n", CR4_MCE(cr4));printf("bit  7  :  %d  -  PGE (Page-Global Enable)\n", CR4_PGE(cr4));printf("bit  8  :  %d  -  PCE (Performance-Monitoring Counter Enable)\n", CR4_PCE(cr4));printf("bit  9  :  %d  -  OSFXSR (OS FXSAVE/FXRESTOR Support)\n", CR4_OSFXSR(cr4));printf("bit 10  :  %d  -  OSXMMEXCEPT (OS Unmasked Exception Support)\n", CR4_OSXMMEXCEPT(cr4));printf("bit 18  :  %d  -  OSXSAVE (XSAVE and Processor Extended States Enable Bit)\n", CR4_OSXSAVE(cr4));printf("\n");fread(buffer, 1, 16, fp);uint64_t efer = *(uint64_t*)buffer;printf("EFER value: 0x%016llx\n", efer);printf("bit  0  :  %d  -  SCE (SYSCALL Enable)\n", EFER_SCE(efer));printf("bit  8  :  %d  -  LME (IA-32e Mode Enable)\n", EFER_LME(efer));printf("bit 10  :  %d  -  LMA (IA-32e Mode Active)\n", EFER_LMA(efer));printf("bit 11  :  %d  -  NXE (Execution Disable Bit Enable)\n", EFER_NXE(efer));printf("\n");WHV_X64_SEGMENT_REGISTER seg;fread(&seg, 16, 1, fp);printf("CS\n");printf("base = %016llx, limit = %08x, selector = %04x\n", seg.Base, seg.Limit, seg.Selector);printf("SegmentType              = %d\n", seg.SegmentType);printf("NonSystemSegment         = %d\n", seg.NonSystemSegment);printf("DescriptorPrivilegeLevel = %d\n", seg.DescriptorPrivilegeLevel);printf("Present                  = %d\n", seg.Present);printf("Available                = %d\n", seg.Available);printf("Long                     = %d\n", seg.Long);printf("Default                  = %d\n", seg.Default);printf("Granularity              = %d\n", seg.Granularity);printf("\n");fread(&seg, 16, 1, fp);printf("SS\n");printf("base = %016llx, limit = %08x, selector = %04x\n", seg.Base, seg.Limit, seg.Selector);printf("SegmentType              = %d\n", seg.SegmentType);printf("NonSystemSegment         = %d\n", seg.NonSystemSegment);printf("DescriptorPrivilegeLevel = %d\n", seg.DescriptorPrivilegeLevel);printf("Present                  = %d\n", seg.Present);printf("Available                = %d\n", seg.Available);printf("Long                     = %d\n", seg.Long);printf("Default                  = %d\n", seg.Default);printf("Granularity              = %d\n", seg.Granularity);printf("\n");fread(&seg, 16, 1, fp);printf("DS\n");printf("base = %016llx, limit = %08x, selector = %04x\n", seg.Base, seg.Limit, seg.Selector);printf("SegmentType              = %d\n", seg.SegmentType);printf("NonSystemSegment         = %d\n", seg.NonSystemSegment);printf("DescriptorPrivilegeLevel = %d\n", seg.DescriptorPrivilegeLevel);printf("Present                  = %d\n", seg.Present);printf("Available                = %d\n", seg.Available);printf("Long                     = %d\n", seg.Long);printf("Default                  = %d\n", seg.Default);printf("Granularity              = %d\n", seg.Granularity);printf("\n");fread(&seg, 16, 1, fp);printf("ES\n");printf("base = %016llx, limit = %08x, selector = %04x\n", seg.Base, seg.Limit, seg.Selector);printf("SegmentType              = %d\n", seg.SegmentType);printf("NonSystemSegment         = %d\n", seg.NonSystemSegment);printf("DescriptorPrivilegeLevel = %d\n", seg.DescriptorPrivilegeLevel);printf("Present                  = %d\n", seg.Present);printf("Available                = %d\n", seg.Available);printf("Long                     = %d\n", seg.Long);printf("Default                  = %d\n", seg.Default);printf("Granularity              = %d\n", seg.Granularity);printf("\n");fread(buffer, 1, 16, fp);uint64_t rip = *(uint64_t*)buffer;printf("RIP = 0x%016llx\n", rip);printf("\n");fread(buffer, 1, 16, fp);uint64_t rsp = *(uint64_t*)buffer;printf("RSP = 0x%016llx\n", rsp);printf("\n");fclose(fp);return 0;
}
http://www.jsqmd.com/news/436192/

相关文章:

  • 2026螺杆泵行业优质品牌推荐榜适配多领域工况:等壁厚螺杆泵定子、螺杆泵转子、轴承架式螺杆泵、进口螺杆泵配件、锂电池专用螺杆泵选择指南 - 优质品牌商家
  • 我用 OpenClaw 创办了16人AI团队:24小时不间断、高效运营!
  • 如何选择氧化铝粉供应商?这份参考指南请收好,黄糊精/陶土/偏高岭土/型煤球团粘合剂/白糊精,氧化铝粉企业推荐榜单 - 品牌推荐师
  • 我花888找人上门安装OpenClaw,见证AI时代最魔幻一幕
  • 2026年陕西ERP软件公司实力推荐:财务软件、企业信息化、西安金蝶代理商 - 深度智识库
  • 2026新生儿无激素抚触油选购指南与热门产品横评 - 资讯焦点
  • 2026年四川羊粪鸡粪有机肥优质厂家推荐:绿源谷引领农业可持续发展新潮流 - 深度智识库
  • 完整教程:C语言多线程与并发编程:提高程序执行效率
  • ASE 2026 投稿相关 - inertial
  • 进口 vs 国产正面刚!土壤碳通量分析仪品牌终极对决 - 品牌推荐大师1
  • 关于 Microsoft Dataverse 中的 null 与 NULL 的区别及注意事项
  • 2026 成都婚纱摄影机构实测 前十实力盘点 备婚避坑指南 - 博客湾
  • 专业的AI销售机器人服务商
  • 2026年地磅秤生产厂家TOP5推荐?地磅秤哪家好? - 深度智识库
  • 2025最新废气树脂厂家专业研究排名 行业权威测评推荐 - 深度智识库
  • C# 超详细的WebService创建、发布与调用(VS2019)
  • AI写专著超神啦!专业工具推荐,快速产出高质量学术专著
  • 2026 全国五大学历提升机构!如何高效选择口碑机构看这篇 - 深度智识库
  • 2026年无人值守称重系统生产厂家权威推荐:重庆广飞电子有限公司凭什么稳居榜首? - 深度智识库
  • 2026年3月失智老人养老院品牌推荐,专业照护与品牌保障口碑之选 - 品牌鉴赏师
  • AI专著写作工具大揭秘,助你从选题到完稿,轻松搞定学术专著
  • 知识体系(二)MCP(2)已有实现
  • 决胜学术专著:AI专著写作工具测评,助你脱颖而出
  • 橙啦视频课件课程下载工具,如何在电脑端下载橙啦视频课程课件资料PDF,PPT到本地?
  • 2026人力资源外包排名:谁是企业降本增效首选? - 包罗万闻
  • 多跳 RAG 中的信用分配困境:一次探索之旅
  • 2026年地磅生产厂家TOP10权威推荐:十大地磅厂家谁在领跑西南? - 深度智识库
  • 2026年称重系统生产厂家TOP5权威推荐:五大实力品牌深度解析与选型指南 - 深度智识库
  • 2026建筑资质代办服务商推荐排行 全流程无忧/资质全覆盖 实测优选榜 - 极欧测评
  • 2026年汽车衡生产厂家权威推荐榜:西南区域龙头引领智能称重新纪元 - 深度智识库