Blue Pill源代码分析(1)

本文详细介绍了分析Blue Pill源代码的过程,重点探讨了AMD64和i386体系下的虚拟机实现,包括VMX和SVM模块。通过对DriverEntry函数的解析,阐述了Blue Pill如何建立自己的页表并映射到Windows内核,以及如何利用VT技术让操作系统进入虚拟化模式。文章还提到,Blue Pill作为一个Windows内核驱动,其执行流程包括页表分配、内核API映射等关键步骤,最后通过HvmInit和HvmSwallowBluepill函数使系统进入虚拟机状态。
摘要由CSDN通过智能技术生成

一直都有写blog的想法,但是每次总觉得写东西很浪费时间,还不如利用这些时间多学点东西。不过每次学到东西之后,总是很容易遗忘,学到方法不假,一些零碎细节忘的很快,于是决定还是应该写点东西出来作备忘。
去年末,对Blue Pill有稍微了解一下,但终究是没有完整阅读过源代码,今天花了一天的时间把Blue Pill的源代码看了一下,总算对其中的奥妙之处有所了解。原先对VT技术不是特别了解的地方今天看了代码之后也了解,这下就不用去看IA-32开发手册了(不过有时间还是需要去求证)。
Blue Pill的源代码可以从这里下载http://bluepillproject.org/
在代码目录中dbgclient是调试时使用的客户端驱动,bpknock是演示时使用的命令行程序(主要是对CPUID指令的执行),Blue Pill核心代码在nbp-0.32-public目录下,代码结构如下:
amd64和i386分别用各自的体系内的机器指令实现底层调用界面(客户机与宿主机之间)
svm实现amd64体系内的虚拟机svm
vmx实现i386体系内的虚拟机vmx
common平台无关代码部分

Blue Pill事实上在这里是一个普通的windows内核驱动,我们从入口点开始沿着驱动的执行流分析Blue Pill。DriverEntry的代码如下(去掉调试输出代码):

NTSTATUS DriverEntry (
  PDRIVER_OBJECT DriverObject,
  PUNICODE_STRING RegistryPath
)
{
  NTSTATUS Status;

  Status = MmInitManager (); //建立四

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值