精华内容
下载资源
问答
  • 内核驱动运行与调试 驱动的运行 驱动的运行通过服务来实现。 微软规定,驱动文件必须经过微软的数字签名后,才可以运行在64位系统上,如果把没有经过签名的驱动直接放在64位操作系统中运行,结果是驱动加载失败,...

    内核驱动运行与调试

    驱动的运行

    驱动的运行通过服务来实现。

    微软规定,驱动文件必须经过微软的数字签名后,才可以运行在64位系统上,如果把没有经过签名的驱动直接放在64位操作系统中运行,结果是驱动加载失败,失败原因是驱动没有签名。
    解决方法:

    1. 把操作系统配置成调试模式,调式模式的系统,默认允许未签名的驱动运行
    2. l临时关闭系统驱动签名校验,在开机时修改启动参数

    对于Windows 7操作系统来说,开机时可以在键盘上按 F8 键,选择禁用驱动程序签名强制
    对于Windows 10 系统来说,可以在高级重启中设置,具体操作为: 开始菜单设置更新安全恢复,在高级启动下点击 立即重新启动 按钮,然后在出现的界面中选择 疑难解答高级选项启动设置 ,点击 重启 按钮,系统开始重启,在启动过程中会显示启动选项,在键盘上输入数字 7,即选择 禁用驱动程序强制签名

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    1. 还可以把系统驱动程序强制签名永久去掉,但是这样会大大降低系统的安全性,不建议使用。

    把驱动程序放在系统的C盘下,以管理员权限运行cmd(命令提示符),在cmd中输入注册驱动的命令:
    sc create MyDriver binPath="C:\MyDriver.sys" type= kernel start= demand

    在这里插入图片描述
    其中 sc create 表示创建一个服务,binPath 指驱动文件所在磁盘位置,type 表示驱动的类型,start 表示该服务启动类型,demand 表示手动启动。
    注意:在上面的命令中,等号(=)后面需要有一个空格(测试没有也行,不知道是不是微软修复了这个bug)。

    sc 命令内部也是通过服务的 API 对服务进行注册,与直接通过API创建服务的效果相同,通过sc命令,可以省区编写注册服务的代码。

    成功创建后,使用sc命令来启动服务,命令如下:
    sc start MyDriver
    其中MyDriver为服务名,对应sc create后面的名字,这个命令的功能等同于StartService函数,服务成功运行后,命令行上显示创建的信息
    在这里插入图片描述

    驱动的调试

    驱动运行之后,没有在代码中打印的调试信息没有显示,使用工具DbgView.exe进行调试,下载地址
    在这里插入图片描述
    以管理员权限打开Dbgview.exe,在菜单上选择 Capture,依次勾选"Capture Kernel" 以及 “Enable Verbose Kernel Output”。
    在这里插入图片描述
    由于MyDriver已经运行,如果需要观察DriverEntry的日志,首先需要停止驱动服务,然后再次启动驱动服务,停止驱动服务的命令为:sc stop MyDriver

    成功执行停止命令后,保持DbgView不关闭,再次执行sc start MyDriver,可以在DbgView的窗口中看到以下日志
    在这里插入图片描述
    可以通过sc delete MyDriver命令删除先前已注册和创建的服务。

    展开全文
  • 使用WinDbg进行Windows内核调试的详细过程,安装虚拟机。比楚狂人介绍的稍详细。巨崇拜楚狂人
  • windows内核驱动条件下文件的创建、读、写等功能实现源码。适用于驱动调试和运行观察的日志打印输出,比Windbg和reaceview更方便。
  • Windows操作系统的内核调试方法

    千次阅读 2011-03-12 12:29:00
    当我们想要调试操作系统时,可以修改操作系统启动参数... 对于Windows xp /2003 我们可以直接修改boot.ini 添加调试参数,也可以使用bootcfg /debug 命令添加,如下图: 对于调试远程内核,我们可能要使用串口,在boo

             当我们想要调试操作系统时,可以修改操作系统启动参数,方法有二,一是在系统启动时F8下,选择调试模式,二是,在启动后,修改启动配置参数。Windows xp /2003 使用 boot.ini 存储启动参数,Windows Vista / 7使用BCD存储启动参数。

               对于Windows xp /2003 我们可以直接修改boot.ini 添加调试参数,也可以使用bootcfg /debug 命令添加,如下图:

     

     
           对于调试远程内核,我们可能要使用串口,在boot.ini中指定操作系统条目后,添加调试参数 /debug /port=com1  /baudrate=115200。在调试器WinDbg中也要指定相同的波特率参数,否者无法正常通信。
           使用虚拟机调试,我们一般没有串口,尤其是笔记本电脑,这时候怎么操作呢:
    1、使用虚拟串口添加工具 vpsd 6.9(在前几篇日志中有对此软件的介绍)在电脑中添加一对调试串口。如com1,com2。
          在虚拟机欲调试操作系统的硬件配置中指定调试串口com1.,注意取消“等待调制解调器打开串口”,否者串口无法正常打开。
           在调试器Windbg中指定使用串口com2,其他参数保持与启动配置参数相同。
    2、使用命名管道,直接在虚拟机和Windbg中分别指定同一个named pipe,如 //./pipe/wrk,这种方法较为方便,见诸于很多书籍。
    配置完参数后,要启动调试,应选择我们刚才添加调试参数的那一条。
     
        配置完通信端口之后呢,我们要为特定的操作系统加载符号表,注意符号表文件的名称和累积性。
    安装符号表要按顺序,具体见windbg的参考文档。
    符号表下载地址: http://www.microsoft.com/whdc/devtools/debugging/symbolpkg.mspx。里面有安装的具体说明。
    下载完成后,解压到目标位置。
    我们启动windbg的方法有很多,网上很多介绍使用批处理启动windbg的,当然也可以使用Windbg的GUI界面和CUI界面设定。如:
    D:/WinDDK/7600.16385.1/Debuggers/windbg.exe" -b -k com:port=com2,baud=115200 -y D:/Windows2003/symbols
    -y 指定符号表位置。后面还可以指定很多参数,详见Windbg的帮助文件。

    到了最关键的一步了,先启动了Windbg,然后调试器打开串口,等待远程系统响应,每10s中发送复位数据包(PACKET_TYPE_KD_RESET),接到响应后建立调试会话,若错过了调试机会(目标系统已初始化完内核调试引擎),可以按ctrl+break,主动发送数据包,调试目标收到后,两者建立会话。(《软件调试》)

    实验中发现,首先启动调试器,然后等待虚拟机系统进入调试状态,不能正确加载符号表,试过n次以后发现,当虚拟机操作系统刚进入调试状态时,也就是选择开机启动条目并回车后,马上启动windbg,才能成功加载符号表,不知哪里问题。

    下图是使用wrk1.2编译的内核启动Windows server 2003 sp2,正确加载符号表:

     
    可惜硬件抽象层的源代码并没有释放。
    展开全文
  • 本课程是windows 内核 驱动程序开发。 涉及到的知识有C 、C++、MFC、汇编等等。具体的细节在视频课程中呈现。
  • 虚拟数据库隐藏 Windows 内核模式驱动程序使用 Intel 的硬件虚拟化来挂钩 MSR_LSTAR(系统调用处理程序)。 当前绕过 Windows 8.1 上的 PatchGuard。
  • windows内核调试模式的开启

    千次阅读 2011-08-27 13:33:21
    默认情况下,windows是不开启内核调试模式的。可以通过以下命令开启: bcdedit /debug ON 重启计算机器后windows内核就处于调试模式了; 在此模式下,有下安全性要求极高的软件是用不了的,如某些银行的网银系统...

    默认情况下,windows是不开启内核调试模式的。可以通过以下命令开启:

    bcdedit /debug ON

    重启计算机器后windows内核就处于调试模式了;

    在此模式下,有下安全性要求极高的软件是用不了的,如某些银行的网银系统。

    我们可以通过bcdedit /debug OFF 来关闭内核调试模式,同样需要重启计算机。

    展开全文
  • windows内核调试环境心得

    千次阅读 2014-11-22 14:29:26
    内核调试的速度比较:vs2013,vs2010+WDK8.1+vmware 与windbg+vmware+visualddk

    最近需要在windows下调试内核程序,原来一直使用windbg+vmware+visualddk进行,但偶然发现vs2012,vs2013可以在IDE中直接进行源代码级别调试,一阵高兴。一阵狂欢,搭建环境,安装vs2013及wdk8.1(我的空间中有较新的wdk8.1),但是一直不是太成功,经过一天的时间折腾,终于可以调试了。

    (主要参考了http://www.livecodenote.com/2014/04/vs2013-vmware-%e8%b0%83%e8%af%95%e9%a9%b1%e5%8a%a8%e7%a8%8b%e5%ba%8f.html      

    http://blog.sina.com.cn/s/blog_79ba23780101qx4y.html(这篇也可)

    [这篇经验证可行]  和http://bbs.pediy.com/showthread.php?t=16598  这篇验证没有通过,可能是我自己不得要领:)。

           但是,你会发现调试代码,非常的慢,一个F10或F11,会有很长的时间(估计在5秒的时间,我的计算机的配置还是不错的,主机4核8线程+10GB内存+SSD硬盘,虚拟机双核+4GB,虚拟机放在SSD硬盘上),所以个人认为应该不是硬件的问题,可能还是不够成熟吧(有点像google自己的android虚拟机,慢的要死,完全没有bluestacks的好用)

           到这,我还是不死心,于是又安装了vs2010+wdk8.1,有了前面的经验,搭建环境很快,但是发现同样的道理,调试起来速度非常慢。最后,还是选择了windbg+vmware+visualddk,用windbg速度还是不错的,相当快。

    以上,略做小记,给大家在选择的时候一个帮助,参考。如果有同仁有更好的方法,或者速度可以较快的话,麻烦留个言,请教一下。

        

    展开全文
  • 1. 远程调试的三种连接方式:串行口,1394和USB 2.0 串口分为9针和25针,是最基本的通信方式,所有的内核通信都支持串口通信。 1394又成为火线,是一种高性能的串行总线通信标准。使用1394进行通信时,目标系统和...
  • VMWare的GDB调试器功能比较简单也比较基础,该调试器并不知道处理器和线程的任何信息(对于Windows系统),因而如果想要得到一些高等级的信息,我们需要自己做一些额外的工作。本文主要讲解了如何使用IDAPython脚本...
  •  本书从基本的Windows程序与汇编指令出发,深入浅出地讲解了Windows内核的编程、调试、阅读,以及自行探索的方法。读者在使用C/C++ 开发Windows程序的基础上,将熟练掌握汇编和C语言的应用,深入了解Windows底层,...
  • Windows内核调试器 - 简介

    千次阅读 2016-03-24 20:27:12
    Windows内核调试器 - 原理 WinDbg    WinDBG和用户调试器一点很大不同是内核调试器在一台机器上启动,通过串口调试另一个相联系的以Debug方式启动的系统,这个系统可以是虚拟机上的系统,也可以是另一台...
  • 用于 Windows XP/2003 x32 的 LAN 电缆上的内核调试 硬件要求: KDNET修补程序支持Windows 8.1或Windows10中的“调试LAN驱动程序” Option A (Windows 8.1) 支持的网卡: : 230754 Option B (Windows 10)支持的...
  • 调试记录器 ... 例如,我有一个在ARM64处理器上运行Windows 10的 ,它没有用于连接内核调试器的接口。 另外,DebugView或我不熟悉的任何虚拟化解决方案都不支持ARM64处理器上的Windows。 当我开发用于Window
  • 这是一个windows 上的调试工具,按照他要求的格式打印调试信息,程序运行期间会被debug view抓获,并显示在信息窗口中,便于调试
  • 内核调试主要用来调试驱动代码、分析内核结构等。 WinDbg通过两台电脑可以实现内核调试,其中一台电脑运 行WinDbg,被称为主机;另外一台电脑运行被调试的程序或系统,被称为目标机。一般情况下两台电脑都是真实机 ...
  • 每一个Windows内核程序,都可以看做Windows内核本身的一个“补丁”。有时只需要独立存在,就能起到它的作用;有时却必须对已有的内核二进制代码进行部分修改。本部分包括第11~13章,主要介绍的是内核Hook。  第11章...
  • 掌握Windows内核调试技术是学习与研究Windows内核的基础,调试Windows内核的方式大致分为两种: (1)通过Windbg工具在Windows系统运行之初连接到Windows内核,连接成功之后便可以调试,此时即可以调试Windows...
  • 从汇编语言到Windows内核编程.pdf 【完整书签】【高清版】(共282页) ============================================ 入手篇 熟悉汇编 第1章 汇编指令与c语言 1.1 上机建立第一个工程 1.1.1用visual studio创建工程...
  • Windbg 内核调试 常用命令

    千次阅读 2016-10-29 15:46:14
    Windbg 内核 驱动 调试 命令
  • Windows 调试程序 (WinDbg) 可用于调试内核模式和用户模式代码、分析故障转储以及在代码执行时检查 CPU 寄存器。
  • Windows内核开发调试环境配置详解

    千次阅读 2011-08-31 16:27:51
    应用程序使用开发包SDK,类似的,内核编程使用"Windows Driver Kit",简称WDK。WDK已经自带所有需要的头文件、库、C/C++语言及汇编语言的编译器和链接器 如何获取WDK 参见 http://msdn.microsof
  • Win11内核调试环境搭建

    千次阅读 2021-11-22 07:23:04
    文章目录VMWare新建Win11虚拟机设置Win11调试模式使用bcdedit添加调试内核选项Windbg设置 VMWare新建Win11虚拟机 目前升级到VMWare 16.2.1,但是在新建虚拟机的时候并没有发现有Win11的选项,此时还是选择Win10 x64...
  • Windows内核驱动

    2016-11-09 15:22:12
    VS2013+WDK8.1开发的Windows NT型驱动程序的加载和卸载,以及和用户层的交互.先装VS20113之后,再打开VS2013,然后再装WDK8.1,下载一个DebugView进行内核调试即可,最好安装一个虚拟机,在虚拟机中调试
  • 终于有机会真正使用windbg了,一个小小的任务,用了两天时间,总算从一问三不知进化到可以进行简单的调试。 任务:分析PING.EXE程序,找到系统调用API,分析获得IP地址存放位置; 首先需要弄清楚的是PING.EXE执行...
  • windows下用insight+bochs源码级调试linux内核,不需再下载其它软件,压缩包里提供全部调试所需的程序,总共仅10兆
  • 让读者能熟悉使用C语言开发Windows内核程序。接着指导读者进行内核的开发和调试环境的配置,并进行了一系列的尝试:阅读Windows内核的部分实现代码,并尝试自己去实现它。与此同时,产生了修改已有内核的需求。于是...
  • 内核调试之双机调试环境的搭建

    千次阅读 2019-02-08 23:54:00
    内核调试需要使用一台计算机用于被调试,另一台计算机用于使用调试器来调试前面所述的计算机。为了能在同一台计算机上进行内核调试,通常使用虚拟机来运行被调试的计算机。另外,使用虚拟机运行被调试的机器比较安全...
  • 虽然是一个典型的GUI应用程序,但是它的大多数调试功能还是以手工输入命令的方式来工作的。目前版本的WinDbg提供了130多条标准命令,140多条元命令和难以计数的扩展命令。 WinDbg使用工作空间来描述和存储调试项目...
  • 什么是Windows内核编程

    千次阅读 2018-11-09 02:54:38
    什么是Windows内核编程

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 57,245
精华内容 22,898
关键字:

windows内核调试程序