
1、安装好虚拟机后,给虚拟机增加一个串口设备。具体操作见图:
完成配置后虚拟机设备配置就多了一个串行端口的设备。因为打印机用了端口1。所以设备里面显示的是串行端口(如果想设置成端口1,把打印机设备删了在添加串口设备)。
2、配置虚拟机系统为调试模式
以管理员身份,在虚拟机命令行模式下运行如下2个命令开启。
bcdedit /debug on
bcdedit /dbgsettings serial debugport:nbaudrate:115200
wherenis the number of a COM port on the virtual machine.(n时虚拟机的一个COM端口号。就是设备显示的串行端口2,n就是端口2)。
3、把WDK10的虚拟机调试驱动拷贝到虚拟机中安装。
因为VS2015可以调试x86 x64两种驱动所以两个都拷贝到虚拟机安装。
4、VS2015开发工具配置
在VS2015的菜单栏点击DRIVER--TEST--CONFIGURE DEVICES会报错估计是VS2015的Bug求大神指点。如图

这里不行我们换个地方配置,从工程属性里面进行配置。右键工程属性配置从这也可以进行测试设备的配置:
配置界面,下面两个选项第一项由VS2015帮我们创建一个WDKuser测试账户,自动打开测试模式等。第二个是使用我们自己配置的参数。由于上面我们已经配置了串口参数 、设置了调试模式所以我们选择第二个就行了。
如下配置在内核模式中,选择串口、配置好波特率、勾上2个选项、管道名称、端口号。
出现上述红色框字样则说明配置已经成功了。(不要开启全局代理软件,否则会出现连接不上的问题)。
5、使用工具安装调试64位驱动
网上下的下面的驱动安装软件貌似64位的都用不了。
自己动手丰衣足食
,自己在网上弄了个源码改了下弄成可以加载64位的驱动的版本了。
使用DebugView打印内核调试信息是开发驱动的非常重要的手段,但DebugView默认在WINDOWS 10下却无法获取内核的调试日志,驱动调用KdPint/DbgPrint等的打印结果是无法被DebugView给捕捉到的。设置方法如下(复制下面的代码到txt文件。改后缀为.reg后执行,然后重启电脑):
[cpp]


WindowsRegistryEditorVersion5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\DebugPrintFilter]
"DEFAULT"=dword:0000000f
还有自己编译出来的驱动要使用编译的Debug版本来测试,Release版本是不会执行KdPrint/DbgPint函数的。
下面是在Win10 64位的虚拟机中用此安装程序,加载64位的驱动以及用DebugView查看驱动打印消息的截图结果。
6、在VS2015中下断点进行调试
如果你第五部已经完成了,并且在DebugView中已经能够输出调试的打印信息了,辣么骚年你已经离成功只有一部之遥了
。
创建一个驱动工程,WDK10提供的模板中根本没有提供NT驱动模板,我们如何创建NT驱动呢?
3、修改pe系统桌面背景:任何非pe内核的文件都需要先在“添加文件(夹)”里添加(提示:“添加驱动”针对软件所用驱动必须放入驱动目录的情况),所以先通过“添加文件(夹)”添加jpg后缀名或bmp后缀名的背景图片文件,然后通过系统设置选择该图片文件作为pe桌面背景即可,独品集成的pe定制数据的pe定制任务第四、五项就是pe桌面设置的。一般系统常规包含的模板有:主页模板、搜索模板、RSS、JS编译功能模板等,此外用户也可以自定义一个模板创建为任意文件。方法二:在文件视图,右键工程,添加 cpp文件和h文件(----win7下右键工程添加文件没有反应---)。
建立工程后,首先会有两个工程,一个就是驱动工程,另外一个是package工程(这个是测试驱动安装的一个工程,对于我们来说其实没有什么用处,反正本人是没有使用过得,可以直接删除)。驱动工程中会帮你建立一个inf文件,nt是使用不到的,当然新一代的过滤驱动,例如 minifilter 是使用的,vs2013支持直接创建minifilter工程,所以如你建的是 nt驱动,这个可以直接删除,如不想删除,就需要在inf文件中填写一些信息,避免生成程序时报错,可以按以下模板填写:。该恶意文件为木马类,病毒运行后,动态加载系统dll文件"msvcrt.dll",该dll是标准的微软c运行库文件,创建线程、遍历进程查找"avp.exe"找到之后退出线程,如没发现"avp.exe"进程则提升进程操作权限,衍生病毒驱动文件到%system32\drivers\目录下,命名为"kvsys.sys"、"tesafe.sys",该驱动文件删除部分安全软件服务、终止部分安全软件进程、恢复ssdt躲避杀软主动查杀,创建病毒驱动设备名为:"\\.\kvsys"、"\\.\tesafe",删除本地"hosts"文件、并从新创建一个hosts文件,劫持大量域名地址,添加病毒注册表服务,衍生病毒文件"fsrtdfyyvuu.exe"到临时目录下,调用函数打开衍生的病毒文件,获取磁盘启动器类型,遍历目录查找所有后缀是exe的目录并却是非系统盘的可执行文件中释放大量"usp10.dll"文件,病毒运行完后后删除自身。
在文件中添加测试代码。
[cpp]

#include<ntifs.h>
VOIDDriverUnload(PDRIVER_OBJECTobjDriver)

{
//避免编译器关于未引用参数的警告
UNREFERENCED_PARAMETER(objDriver);
//什么也不做,只打印一行字符串
KdPrint(("MyDirverisEnding..."));
}
NTSTATUSDriverEntry(PDRIVER_OBJECTobjDriver,PUNICODE_STRINGstrRegPath)
{
//避免编译器关于未引用参数的警告
UNREFERENCED_PARAMETER(strRegPath);
//打印一行字符串,并注册驱动卸载函数,以便于驱动卸载
KdPrint(("MyDirverIsStarting!\r\n"));
objDriver->DriverUnload=DriverUnload;
returnSTATUS_SUCCESS;
}
编译,报错,没有关系,这些都是因为安全警告等级太高了,我们可以降低编译器警告等级的方式解决:

执行编译,编译的时候选择Debug模式,X64的选项。编译成功后,按照上面的第五步进行基本测试可以。
不知不觉感觉已经写了好长了。。。。
抽口烟压压精。好吧我不抽烟的。。。。。继续
如果上述的驱动成功编译出来了。辣么现在我们开始附加虚拟机的内核进行调试了。
首先把虚拟机的系统内核附加到VS2015,具体步骤见下图:
选中内核调试模式、选自己配置的那个电脑、选中下面列表中内核。见下图
点击附加,然后出现下图界面,点击一下全部中断。
然后系统就断下了,虚拟机的系统我们鼠标已经点不了,现在系统处于挂起状态了。见下图
现在我们可以到源代码中下断点了。我就随便下个断点了,见图:
然后我们在下面的Debugger Immediate Winddow窗口的 Kd> 一行输入命令 g 让系统运行起来。这样虚拟机中的系统又可以点击了。
最后一步了。使用我们刚刚建立的驱动工程编译出来的.sys驱动文件拷贝到虚拟机中。用第五步的工具进行安装、启动。启动的时候自动触发VS2015中的下的断点。至此可以像平时我们调试程序一样进行单步调试了。
注意事项:1、一定要拷贝Debug版本的进行调试。
windbg使用vs调试符号格式进行源码级别调试,可以通过pdb符号文件得到符号和变量,可以通过coff符号文件(.dbg文件)得到任何导出的函数名。源码级调试器[source-leveldebugger]这种调试器一般提供单步或多步调试、断点设置、内存检测、变量查看等功能,是嵌入式调试最根本有效的调试方法。使用tomcat插件的时候,会有个小bug,当我们打断点调试的时候,当程序到达断点,但是当我们查看源码的时候,发现原本的源码找不到啦,我们只需要在弹出来的小。
此时手机会显示“usb调试已启动”,豌豆荚弹出来占用super one click的usb连接,会自动为手机下载并安装usb驱动(去网上找手机的usb驱动是件麻烦的事情,而连接的正常与否直接关系到root的成败,安装后不要运行、电话本,手机与电脑的连接就建立好了,是一款功能较为完善的pc端手机管理软件,确认后软件进入驱动安装阶段vs安装失败,原因是缺少,依次在手机上选择主菜单-设置-应用程序-开发,却可以起到很好的辅助作用。= card->num_links),而return,即便出现了 后面一连串的代码失效,导致声卡驱动加载失败,经过反复的加入printk内核信息调试打印信息观察,原来问题是出在dma.c这个文件上,这个是platform:samsung-audio驱动,由于它未在内核里面注册,从而导致上面的list_for_each_entry(platform, &platform_list, list),由于在列表里找不到对应name的驱动,从而导致加载platform失败,最终发现,原来platform:samsung-audio驱动的注册,是需要在mach-ok6410里面的板级硬件初始化函数里面进行的,*ok6410_devices[] __initdata 里面需要添加&samsung_asoc_dma,而这个是在plat/devs.h里面申明过的,与&s3c64xx_device_ac97必须成对使用,这个完成后再在smdk_wm9713.c添加相关的初始化代码就行了,说了这么多废话,只是想和大家交流一下我的艰辛经历 ,呵呵 ,好了,这些是题外话了,当然了,在这里将调试经验也太扯了,呵呵。写到这里这篇总结就结束了,也许有很多写的不到位的地方,也有一些用词不严谨的地方,希望看到的读者可以和我一起交流,我也非常乐意我的总结可以给 刚刚学会编程需要调试的同学受用,再此之前我一直在寻找一篇从头到尾的调试教学文章,我一直没有找到,要么是一点点的片段讲解,要么是专讲js断点调试,所以索性后来就直接看了 chrome developer tools 的英文官方文档vs安装失败,原因是缺少,并结合自己的一些小使用心得总结出此文,希望受到指点和修正 也希望可以帮助一些同学。
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-114935-1.html
我们该怎么办呀
演员杨洋加油
一楼