调试windows内核

来源:互联网 发布:故宫淘宝店什么时候 编辑:程序博客网 时间:2024/05/06 23:28

1.首先下载windbg这个工具包含在wdk可以到微软官方网站免费下载

2 设置windows xp调试

  打开系统安装盘,在文件夹选项中设置为显示所有文件,不隐藏系统保护的文件,然后就可以看到一个boot.ini文件   

   boot.ini 的文件内容一般如下

 

                                    [boot  loader]

                                    timeout=30

                                   default=multi(0)disk(0)rdisk(0)partition(1)\windows

                                   [operating system]

                                   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 system]

                                   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=com1 /baudrate=115200

保存文件,如无法保存请将文件属性中的只读属性去掉

3 设置vista 调试

    vista中已经不再使用boot.ini文件了,而是在vista启动之后打开控制台,输入

                                     bcdedit /?

     这回现实一段帮助文字,能看懂最好,不能看懂也没有关系。

     下面我们要列出本机上所有"操作系统加载器"的情况,请输入

                                 bcdedit  /enum  OSLOADER

     如果是刚安装的系统,一般只有一个标识为{current}的OSLOADER,这就是当前的启动配置。现在所需要的是建立一个新的启动配置,从完全空白开始建立非常麻烦,

    我们可以拷贝一个

                               bcdedit   /copy  {current}  /d "windows vista Copy"

   拷贝之后会提示已经建立了一个新的配置,新配置标识非常长,是一个GUID字符串。要设置新的配置每次都要输入那个GUID字符串很麻烦,

  不过设置当前配置不需要输入配置标识。

  输入以下两条指令即可

                              bcdedit   /debug    ON

                              bcdedit  /bootdebug  ON

输入后,还可以输入一条指令看一下当前的调试配置

                            bcdedit  /dbgsetting

一般来说,会显示出使用的第一个串口,波特率为115200bps。最后指定选择菜单的超时,太长在无人启动时会很慢,太短则来不及选择。一般7秒左右

                         bcdedit  /timeout 7

重新启动进入调试模式

4 设置VMWARE的管道虚拟端口

   调试机与被调试机用串口相连,但是在被调试机是虚拟机的情况下,就不能用真正的串口连接。但是可以在虚拟机上生成一个用管道虚拟的串口

             用VMWARE打开建立的虚拟机,但不要启动,按以下步骤操作

            4.1 在左边的Commands 栏中单击"Edit virtual machine settings",出现Hardware页,单击下面的"Add"按钮,出现"Add HardWare wizard"

                  单击下一步按钮

           4.2 Hardware types 选择 "Serial Port",单击下一步按钮

           4.3选择"Output to named pipe" ,单击下一步按钮

           4.4 这时有3个框可以选择:前2个保持默认,分别为"\\.\pipe\com_1“和"This  end is the server",第三个修改为"The other end is an applicaion"(注:最新版的VMWare和     这个默认不同,第二个为"this end is the client",第三个为"ths other end is an application")然后点击"完成"按钮即可。

虚拟机设置好了,下面是调试机上windbg的启动参数,使之连接一个管道,并把这个管道当作一个串口来处理

          

          windbg.exe  -b -k  com:port=\\.\pipe\com_1,baud=115200,pipe

上面的命令是在控制台执行的,执行前首先要转到windbg.exe所在目录。更方便的办法在桌面上建立一个windbg.exe的快捷方式,单击右键并选择属性,在快捷

方式中,在"目标"中的"...windbg.exe"后增加前面的启动参数。注意:windbg.exe的全路径一般是用双引号引住的,但是后面的命令行参数应该放到引号外。

刚连接上的时候,虚拟机里面的windows系统会被中断,貌似死机,这时,请在windbg的命令提示符"kd>"后面输入"g"bing

 5设置windows内核符号表

   现在操作系统进入了调试模式,那么怎么调试之前编译呢,实际上,没有必要告诉windbg需要调试的是什么,windbg把内核视为一个整体,我们需要告诉调试代码的路径   和符号表的路径,在调试连接上之后,打开windbg的主菜单"File" 下的"Symbol File Path",在这里输入符号表的位置。符号表和sys产生在同一个目录下,所以只要指定
   本机上编译结果所在的objchk_wxp_x86\i386目录就可以了。

   如果有多个驱动需要调试,那么可以指定多个路径,路径之间用分号分隔。

   此外,需要指定windows的内核符号表。windows的每一个sys文件都有自己的符号表,这些符号表需要从网上下载,但是没有必要自己去下载,可以在Symbol File Path 中
   增加如下一条设置,用分号与其它路径分隔

               srv*c:\symbols*http://msdl.microsoft.com/download/symbols

          这个设置从网上下载所需要的符号表。这个会使windbg变得很慢,并且不是每次都能成功。

 

 

                             

原创粉丝点击