两种驱动调试手段

方法1:


新建驱动工程,添加如下代码

#pragma warning( disable : 4100 )
NTSTATUS  DriverEntry(PDRIVER_OBJECT pDriver,PUNICODE_STRING pPath);
VOID DriverUnload(PDRIVER_OBJECT pDriver);

#pragma alloc_text(PAGE,DriverUnload)
#pragma alloc_text(init,DriverEntry)

VOID DriverUnload(PDRIVER_OBJECT pDriver )
{

	KdPrint(("Leave Driver\n"));
}

NTSTATUS  DriverEntry(PDRIVER_OBJECT pDriver,PUNICODE_STRING pPath)
{
	KdPrint(("Enter Driver\n"));
	pDriver->DriverUnload = DriverUnload;
	KdPrint(("Enter Driver\n"));
	/*
	你的代码1
	*/
	KdPrint(("now you are in Block1\n"));


	/*

	你的代码2
	*/
	KdPrint(("now you are in Block2\n"));
	return STATUS_SUCCESS;
}




如此在DbgView.exe中输出了,KdPrint(("now you are in Block1\n"));  我们就知道了  代码段1   已经执行过了DbgView.exe中输出了,KdPrint(("now you are in Block2\n"));  我们就知道了  代码段2   已经执行过了如此,是否正如Windows程序设计初 使用MessageBox来提示程序执行 到哪儿了呢?

方法2

#include <wdm.h> 
#pragma warning( disable : 4100 )
NTSTATUS  DriverEntry(PDRIVER_OBJECT pDriver,PUNICODE_STRING pPath);
VOID DriverUnload(PDRIVER_OBJECT pDriver);

#pragma alloc_text(PAGE,DriverUnload)
#pragma alloc_text(init,DriverEntry)

VOID DriverUnload(PDRIVER_OBJECT pDriver)
{
	KdPrint(("Leave Driver\n"));
} 
NTSTATUS  DriverEntry(PDRIVER_OBJECT pDriver,PUNICODE_STRING pPath)
{
	_asm int 3 //较之与上,只多了这一段代码,将它添加到你想要检验的地方,前提你得调试打开该虚拟机中的win7系统 	
			//这里   我已经如双击调试一文中,开启了vmmon64.exe/vmmon.exe,以及它打开的WinDbg.exe
	KdPrint(("Enter Driver\n")); 	pDriver->DriverUnload = DriverUnload; 	KdPrint(("Enter Driver\n")); 
	/* 	你的代码1 	*/ 
	KdPrint(("now you are in Block1\n")); 
	/* 	你的代码2 	*/ 	
	KdPrint(("now you are in Block2\n")); 	return STATUS_SUCCESS;
}



生成的MyDriver.sys文件放进虚拟机中,用驱动加载器添加 该文件,点击启动,  接下来 虚拟机中的操作系统会卡住, 主机打开的 WinDbg.exe会得到响应


并且 WinDbg窗口变换如下

(因为,驱动是我自己写的,而且是Debug版本的,故此在驱动pe文件中嵌入了相应pdb文件的路径,发现中断,Windbg自动找到路劲加载这个驱动对应的pdb文件,于是出现如下的原码调试窗口,接下来,我们可以如vs2013中调试那样,f11,f10, f5,f9 ...的操作了~)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值