寒江独钓Windows内核编程-双机调试1
今天总结一下关于双机调试,前面一直使用的是DDK包进行NT式与WDM式驱动入门,至今已进入使用WDK包进行编程了,DDK包早已落后我只作为入门因为大体内容变化不大。我使用的书是《寒江独钓Windows内核安全编程》,这个系列将围绕三本书进行,一本就是刚刚所提到的,还有两本分别为《天数夜读从汇编语言到Windows内核编程》和《Windows内核安全与驱动开发》。
首先来总结一下双机调试,驱动程序无法像一般程序一样直接调试而必须经过一定配置才能进行源码级的调试,在这个过程中我遇到过许多的坑。
双机调试需要两台计算机。一台用于调试称为调试机,还有一台被调试称为被调试机器,一般被调试机器用虚拟机代替而调试机则为实体物理真机。
我物理真机是Win10系统,虚拟机安装的是XP Professional SP3,而书本上的环境是XP + Win 2000。一开始我还很担心能不能成功,我电脑上本来就配置好了VS2013+WDK8.1的驱动开发环境结果到官网上一看人家是这么讲的:
Windows 8.1
- Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012,Windows 7, Windows Server 2008 R2 Microsoft Visual Studio 2013 (Desktop Express, Professional, Ultimate SKUs)
显然不支持WinXP,于是我就去把WDK7.1.0给下载并装在我的Win10 x64上,事实显示这是可以的,只要被调试机满足WDK7.1.0的操作系统范围就行。安装WDK包就不说了就是一直点下一步就行,接下去进入正题:
步骤: (我的平台: Win10 x86_64(WDK7.1.0) + XP SP3 Professional)
1. 安装一台XP SP3操作系统的虚拟机至VM上,并且在物理真机中安装WDK7.1.0,在物理真机中安装WinDbg X86(调试器)
2. 安装WDK后在物理真机 开始-------->所有程序-------->找到Windows DriverKits中的X86 Checked Build Environment,这个是以后要编译链接驱动程序用的(.sys为后缀)
3. 在虚拟机即XP中的C盘根目录下编辑boot.ini文件(该文件是隐藏的,需要显示出来则点击工具---->文件夹选项---->查看---->取消隐选择藏受保护的操作系统文件(推荐)选项就可以显示了):
boot.ini原本内容是:
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect
将其改成:
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /debug /debugport=com_1 /baudrate=115200,pipe
4. 修改完boot.ini内容后关闭虚拟机,并且编辑虚拟机设置
5. 接下去就是配置串行端口了
按照上面的样子进行配置后点击确定,完成这些步骤之后启动被调试机。就可以看到如下:
选择启动调试程序。注意在选择[启动调试程序后]项后立马在物理真机中打开WinDbg,其会显示:
6. int 3是断点的中断,就像我们在VS中按F9下断点是一个道理,此时虚拟机会处于停止状态(因为下了中断),在命令行中输入g后回车,虚拟机就会自动运行下去了。下面是输入g后的画面:
7. 等待虚拟机开机后在物理真机中编写一个驱动程序,编译链接生成.sys文件将其放入虚拟机中,并以服务方式加载该驱动(可以下载srvinstw.exe来加载,也可以使用SCM系列函数自己写一个加载卸载驱动服务的程序)。载入后进入cmd终端输入: net start [服务名]:
这里是我安装的两个驱动:
8. 接下去就可以进入调试了
9. 调试的规则与VS一模一样。
(完)
寒江独钓Windows内核编程-双机调试1相关推荐
- 寒江独钓-Windows内核安全编程(完整版).pdf
寒江独钓-Windows内核安全编程(完整版).pdf 编写Windows内核程序,就意味着这个程序可以执行任意指令,可以访问计算机所有的软件.硬件资源.因此,稍有不慎就有可能将系统变得不稳定.W ...
- 寒江独钓:Windows内核安全编程(china-pub到货首发)
寒江独钓:Windows内核安全编程(china-pub到货首发) [作 者]谭文;杨潇;邵坚磊等 [丛 书 名] 驱网核心技术丛书 [出 版 社] 电子工业出版社 [书 号] 978712 ...
- 驱动开发专家解读 寒江独钓 Windows内核安全编程
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 驱动开发 ...
- 寒江独钓 Windows内核安全编程
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! < ...
- 寒江独钓——Windows内核安全编程
分享一下我老师大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow <寒江独钓- ...
- 寒江独钓windows 内核安全编程学习笔记
寒江独钓windows 内核安全编程学习笔记 本博客记录自己的学习过程,如有侵犯或者打扰请告知. 由于项目的需求,第一次接触到驱动程序.开始学习了寒江大神的的内核安全编程.小白一个,第一章就遇到了问题 ...
- 寒江独钓-Windows内核安全编程总结
内核编程工具集安装: 1:下载安装WDK 2:编写程序(DrvierEntry必选),编译 3:利用srvinstw.exe等工具安装服务,用net start启动服务 4:使用WinDbg,利用串口 ...
- 寒江独钓Windows内核安全编程__一个简单的Windows串口过滤驱动程序的开发
在Windows系统上与安全软件相关的驱动开发过程中,"过滤(filter)"是极其重要的一个概念.过滤是在不影响上层和下层接口的情况下,在Windows系统内核中加入新的层,从而 ...
- 寒江独钓-Windows内核安全编程笔记-第4章代码
#ifndef __CTRL2CAP_H__ #define __CTRL2CAP_H__ #pragma once typedef struct _C2P_DEV_EXT { // 结构的大小 UL ...
最新文章
- ChaLearn Gesture Challenge_2:examples体验
- 四年努力,梦归阿里,和大家聊聊成长感悟
- java中arges.length_java中的args.length
- PHP常用数组函数(含按键值删除二维数组中的元素)
- 十天学会ASP.Net——(8)
- Hadoop框架:HDFS简介与Shell管理命令
- 文末送书 | 高级机器学习范式——终身机器学习
- 现在五年期定期利率在五以上的银行有哪些?
- 怎么下载linux历史文件,快速学习Linux-Linux历史
- 一刀工具箱 - URL链接编码解码工具
- 计算机数据表示实验报告,过程通道和数据采集处理实验报告.docx
- 汽车洒水器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 初学博科YIGO2.0学习心得--下推
- 什么是数字孪生智慧城市应用场景
- ISME | 浙大黄健华/陈学新等揭示寄生蜂调控寄主营养代谢的新机制
- JS实现右键拖动元素
- CSS选择器优先级(特异性)
- C#串口通信数据不完整
- 微信小程之swiper
- IT人士必去的10个网站