YJX_Driver_014_VM+Wlndbg调试驱动

1、

【120】以 第12课 的源码为例

【160】用 DDK 重新编译源码

【210】为了便于调试,我们下一个断点(ZC: 直接在源码里面下断点啊?),∵ 在入口函数那里下断点不太好下(ZC: 为什么?),我们可以在 卸载例程 里面下一个断点。

  【250】如果需要在 入口函数那里就开始跟的话,需要在DriverEntry里面加代码

    “

    __asm int 3; // 也就是一条 0xCC指令

    ”

  【285】重新编译一下

【325】驱动文件"DDK_HelloWorld.sys"改名为"ddk.sys"

【345】为了以后使用方便,我们将 文件source 中 的 "TARGETNAME"对应的值 由"DDK_HelloWorld"改为"ddk"

【390】将 "ddk.sys"和 驱动工具 复制到 虚拟机

【440】ZC: 虚拟机 是 运行状态,此时 打开 Windbg,它能自动的连接到 虚拟机,我记得我之前是不能这样做的啊?为什么?是∵ 虚拟机/WinDBG的版本不同?∵ 虚拟机里面也安装了WinDBG的缘故?这里 虚拟机里面的WinDBG上面也没做啊...

【570】DriverMonitor 加载驱动ddk.sys,"GO",虚拟机断下来了

  【608】查看 WinDBG中的内容

    【635】Windbg中输入 指令"u DDK!DriverEntry",于是就能看到“DDK!DriverEntry+0x5”的地方是cc指令(ZC: 这里的"+0x5"应该是指函数体内的体5个字节偏移处(从0开始))

    【705】WinDBG中源代码自动就出现了,∵ 源代码的路径是自动包含在我们编译的驱动里面的。如果没有显示出来,通过 WinDBG--> 文件 --> "符号文件路径(s)..."  来设置我们驱动对应的 .pdb文件的路径

  【825】F10 ==> 步过, F8/F11 ==> 步入

  【1020】跳出函数,只看到了 工具栏上对应的按钮/对应的命令是"gu",但是不知道对应的快捷键是啥

    【1075】跳出函数 ==> shift+F11 ==> 也就是 返回到上一层CALL执行

【1205】

序:

  1、想必大家都用过OD调试程序,单在这里我要说 OD用户层调试 和 WinDBG内核调试 有本质的区别。在OD离我们可以选择对某个进程进行单独的调试,而在内核离WinDBG则把内核视为一个整体,单它们也有一些共同之处,下边就让我们一起来了解。

2、

时间: 2024-10-12 12:33:21

YJX_Driver_014_VM+Wlndbg调试驱动的相关文章

Window10中利用Windbg与虚拟机(window7)中调试驱动建立方法

想起自己的windbg配置就转载:eqera的windows内核调试配置,真的是获益良多希望他不会介意我转载他的博客,帮了我很多,记录下来给我也给大家, 其中我主要看的是VMWare的pipe建立,而我有些分享是在vs2015中打上DDK,然后在开始菜单window kits下找见windbgx86或者是你想要用的类型,然后 发送快捷方式到桌面利于以后用.发到桌面后,在属性插入你放置的的符号的路径,让然最后别忘了在windbg检查路径是否正确. eqera他的解述给了我很多帮助,可以耐心解读.下

kobox: key_proc.c -v1 如何使用proc文件系统调试驱动

使用proc文件系统可以很方便调试驱动,查看驱动中的一些数据 平台:TQ2440 系统版本: [email protected]:/mnt/shared/kobox# uname -a Linux ubuntu 3.11.0-12-generic #19-Ubuntu SMP Wed Oct 9 16:12:00 UTC 2013 i686 i686 i686 GNU/Linux 其实在3.x中创建proc文件系统和在2.x中创建是有所区别的,这里需要注意下,在2.6.x中创建起来更加方便 这里

实战windbg调试驱动例子

关于VM和WINDBG的基本配置请参考相关的文档.(在这里给各位一篇不错的文章,就是jiurl老大写的<  利用VM使用windbg  >) 好了,废话少说,让我们整点干的 :-)既然我们要分析的是sr.sys,当然我们先要看的就是目标机加载的驱动程序的位置了,sr.sys是XP系统系统还原的主体部分,它是建立在NTFS文件分区格式下的一个驱动,说白了 sr.sys其实就是ntfs.sys的filter driver.kd>!driversBase       Code Size    

windbg + vmware调试驱动-环境搭建

1.vmware设置 “VirtaulMachineSettings”---> “Hardware”选项中----> 点击“Add”添加一个串口设备SeiallPort----> “Next”----> 在SerialPort里选中“Output to named pipe”----> “next”---->“Finish” 最后,回到 “Virtual Machine Settings”页面时,在“I/O Mode” 里选中“Yield CPU on poll” 这样

VM 调试驱动设置

"C:\Program Files\Debugging Tools for Windows (x86)\windbg.exe" -k com:pipe,port=\\.\pipe\com_1,baud=115200  -y E:\SourceCode\sys\objfre_wnet_x86\i386 -srcpath E:\SourceCode\sys 1. windbg.exe 快捷方式的目标设置为: "D:\Common Tools\Debugging Tools for

STM32下载调试驱动问题

No Cortex-m SW device found解决办法 16.07.14 今天工作,遇到一个问题:用jlink采用SW下载模式时,一直显示No Cortex-m SW device found.驱动都是装好的,之前采用20pin的jtack下载模式都是好好的,换装了好几次驱动,因为本机是win10,以为可能是win10的兼容性问题,就换用win XP虚拟机,但还是未能解决这一问题.直到老板说在他电脑上可用,我灵机一动,合不把他的驱动拷过来? Jlink的驱动一般网上下载为宜安装包,就和正

使用objdump调试驱动

最近在调式一个判断nand是好的还是坏的驱动+测试程序,于是有了以下的调式过程,似乎自己也学到了一点知识,所以记录一下. 这篇文章主要是讲述调式驱动的一个方法而已. 先来看看测试程序 #include <string.h> #include <errno.h> #include "dragonboard_inc.h" #include <sys/ioctl.h> #include <linux/ioctl.h> #include <

Windows7驱动调试小Tips

v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);}/* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colb

设备驱动调试和移植的一般方法

做linux底层软件工作也有两年了,算上研究生时期对底层软件的研究,加起来也快四年了.慢慢地发现有必要总结一些一般性的方法了.因为一般性的方法有宏观上的指导意义,以后调试和移植驱动时,经常性地回味这些一般性的方法可以防止自己犯同样的错误,进而少走弯路,以最高的效率完成工作. 当谈到底层软件,我们一般都会想到bootloader.BSP.device driver.linux kernel等等.这篇文章将会着重介绍linux device driver调试的一般性方法.另外,关于设备驱动移植的方法