YJX_Driver_014_VM+Wlndbg调试驱动

Posted DebugSkill

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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、

 

以上是关于YJX_Driver_014_VM+Wlndbg调试驱动的主要内容,如果未能解决你的问题,请参考以下文章

YJX_Driver_021_绕过驱动保护

YJX_Driver_022_NT式驱动的安装

YJX_Driver_017_需要具备的理论知识

YJX_Driver_009_DDK_HelloWorld_NT

YJX_Driver_020_JMP地址转换公式推导

YJX_Driver_015_DDK_HelloWorld卸载例程细化