VivienneVMM测试套件:VivienneTests完全使用手册
【免费下载链接】VivienneVMMVivienneVMM is a stealthy debugging framework implemented via an Intel VT-x hypervisor.项目地址: https://gitcode.com/gh_mirrors/vi/VivienneVMM
VivienneTests是VivienneVMM虚拟化调试框架的官方测试套件,提供全面的功能验证和稳定性测试。作为基于Intel VT-x技术的调试工具,VivienneVMM需要通过严格的测试确保其断点管理、内存监控和异常处理等核心功能的可靠性。本指南将帮助开发者快速掌握测试套件的安装配置、用例说明和结果分析方法。
测试套件概览
VivienneTests包含20+个专项测试模块,覆盖从基础功能验证到边缘场景测试的完整测试矩阵。测试套件采用模块化设计,主要分为以下类别:
- 硬件断点测试:验证DRx寄存器和EPT断点的设置/清除机制
- 反调试检测测试:模拟常见反调试技术的规避验证
- 并发性测试:多线程环境下的断点稳定性验证
- 异常处理测试:各类CPU异常的捕获与处理逻辑验证
测试套件的核心文件位于项目目录 VivienneTests/,主要测试入口为 main.cpp,通过统一的测试框架调度各专项测试用例。
环境准备与编译
系统要求
- Windows 10/11 64位专业版或企业版
- 支持Intel VT-x技术的CPU(需在BIOS中启用)
- Visual Studio 2019+(含Windows Driver Kit)
- 测试签名驱动的测试环境(建议使用虚拟机)
编译步骤
克隆项目仓库:
git clone https://gitcode.com/gh_mirrors/vi/VivienneVMM打开解决方案文件 VivienneVMM.sln
在解决方案资源管理器中,将"VivienneTests"设为启动项目
选择配置(Debug/Release)和平台(x64)
右键项目 -> "生成",编译输出将位于
x64/Debug或x64/Release目录
核心测试用例详解
硬件断点基础测试
test_set_clear.cpp 验证了基本断点的设置与清除功能,包括:
- 执行断点(Execute)
- 读取断点(Access)
- 写入断点(Write)
测试通过设置不同类型的硬件断点,执行目标内存操作,并验证断点触发次数是否符合预期。关键验证代码片段:
// 验证写入断点 hit count ExpectedHitCount = NUMBER_OF_ITERATIONS * BREAKPOINT_FACTOR_WRITE; if (g_WriteHitCount != ExpectedHitCount) { FAIL_TEST("Unexpected write bp hit count: actual = %d, expected = %d", g_WriteHitCount, ExpectedHitCount); }EPT断点管理测试
test_ept_breakpoint_manager.cpp 专注于EPT(扩展页表)断点的高级功能测试,包括:
- 断点范围设置
- 多断点并发管理
- 断点命中计数准确性
该测试使用自定义的断点元素结构(PEBLE_BASIC)跟踪断点命中情况,并提供灵活的验证宏:
// 验证命中计数在预期范围内 #define VERIFY_HIT_COUNT_IN_RANGE(pElement, Expected) \ if (((PEBLE_BASIC)(pElement))->HitCount < (Expected) - 1 || \ ((PEBLE_BASIC)(pElement))->HitCount > (Expected) + 1) { \ FAIL_TEST("Hit count out of range: %Iu (expected %Iu)", \ ((PEBLE_BASIC)(pElement))->HitCount, Expected); \ }反调试技术测试
测试套件包含多个反调试检测规避测试,如:
- test_antidebug_single_step.cpp:单步执行反调试检测
- test_antidebug_cecm_spanning_page.cpp:跨页内存监控反调试
- test_antidebug_cecm_trap_page.cpp:陷阱页反调试技术
这些测试模拟恶意软件常用的反调试手段,验证VivienneVMM在隐蔽调试场景下的稳定性。
运行测试与结果分析
基本测试命令
编译完成后,可直接运行测试可执行文件:
# 在管理员命令提示符中执行 cd x64/Debug VivienneTests.exe测试输出解读
测试程序会输出详细的执行日志,包括:
- 测试模块初始化状态
- 每个测试用例的通过/失败状态
- 关键断点命中计数和性能统计
典型的成功输出示例:
[INFO] Initializing VivienneIo... [INFO] RNG seed initialized successfully [PASS] test_set_clear - Execute breakpoint test [PASS] test_set_clear - Access breakpoint test [PASS] test_set_clear - Write breakpoint test [INFO] All tests completed: 18 passed, 0 failed常见问题排查
驱动加载失败:确保测试签名已配置,或启用测试模式:
bcdedit /set testsigning onVT-x未启用:进入BIOS设置,启用Intel Virtualization Technology
测试超时:部分压力测试(如test_breakpoint_stress.cpp)可能需要较长时间,请耐心等待
扩展测试能力
添加自定义测试用例
开发者可通过以下步骤添加新测试:
- 创建新的测试文件(如
test_new_feature.cpp) - 实现测试函数,遵循现有命名规范(
TestXXX) - 在 main.cpp 中注册测试函数
- 添加必要的头文件和依赖项到 VivienneTests.vcxproj
测试配置调整
测试行为可通过修改 test_util.h 中的常量进行调整:
NUMBER_OF_ITERATIONS:迭代测试次数BREAKPOINT_FACTOR_*:各类断点的触发系数LOG_CONFIG_*:日志输出配置
总结
VivienneTests测试套件为VivienneVMM提供了全面的质量保障,通过系统化的测试用例设计和严格的验证流程,确保虚拟化调试框架的稳定性和可靠性。无论是框架开发者还是高级用户,掌握测试套件的使用方法都能帮助深入理解VivienneVMM的内部机制,并为定制化调试场景提供参考依据。
完整的测试文档可参考项目中的 VivienneTests/README.md,更多测试用例细节请查看测试源代码文件。
【免费下载链接】VivienneVMMVivienneVMM is a stealthy debugging framework implemented via an Intel VT-x hypervisor.项目地址: https://gitcode.com/gh_mirrors/vi/VivienneVMM
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考