我是靠谱客的博主 多情画板,最近开发中收集的这篇文章主要介绍windows 驱动与内核调试 学习概述驱动概述驱动和内核调试参考,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

概述

本文讲述笔者在学习内核和驱动开发的笔记。

驱动概述

一般驱动需要运行内核权限下运行(因为涉及硬件读取),比如Intel下的ring 0 权限下。在windwos大量病毒和杀软为了特殊目的往往都是通过将自身升级为内核驱动方式进行运作。如果病毒程序首先进入ring 0理论上可以杀软将毫无作用。微软为了扼杀此类程序在windwo7 64位系统上会强制校验驱动程序签名,如果签名非微软认可将不会被加载。

在这里插入图片描述

微软官方驱动学习指南

驱动开发环境配置

首先我们根据当前操作系统下载对应的WDKvisual studio。相关下载地址:微软相关下载地址

微软对于IDE配置写的及其详细不想写轮子,开始第一个驱动程序,当你配置完成我们可以通过visual studio模板创建一个工程

在这里插入图片描述

在这里插入图片描述
我们第一个示例程序如下:

#include <Ntddk.h>

//这个函数被注册用于驱动卸载调用
VOID myUnload(
    struct _DRIVER_OBJECT* DriverObject
) {
    UNREFERENCED_PARAMETER(DriverObject);

    DbgPrint("hello  drive unloaded");
}


//驱动被加载的时候会调用此函数
NTSTATUS
DriverEntry(
    _In_ struct _DRIVER_OBJECT* DriverObject,
    _In_ PUNICODE_STRING    RegistryPath
)
{
    //如果你没有用到参数需要告诉系统。
    UNREFERENCED_PARAMETER(RegistryPath);
    //打印信息
    DbgPrint("hello  drive loaded");
    //驱动卸载回调注册
    DriverObject->DriverUnload = myUnload;
    return STATUS_SUCCESS;
}

点击生成驱动文件
在这里插入图片描述

如果抛出如下错误,可以下载相关库再次编译
在这里插入图片描述
在这里插入图片描述
这里由于是学习目的就不需要启用了,关闭如下图所示:在这里插入图片描述

tip:spectre attack是一个物理级别的漏洞

拷贝编译产物到目标操作系统(系统需要关闭数字签名)
在这里插入图片描述
可以利用一些三分工具加载相关驱动如下图所示

在这里插入图片描述

安全启动点击停止得到相关输出:
在这里插入图片描述

接下来写入一个有趣的蓝屏代码

在这里插入图片描述

我们可以看到如下图错误

在这里插入图片描述

驱动和内核调试

我们假设被调试的内核系统是win10 且运行在vmware中。

被调试的机器按照如下条件配置:
(1) 调试机器和被调试机器能相互ping(如果不能请关闭防火墙等)

(2) 管理员身份运行cmd 键入bcdedit /debug on 开启内核调试

可参阅 BCDEdit 调试开关

(3) 根据情况配置 配置网络或者串口调试设置
距离一个串口的配置命令如下:

bcdedit /dbgsettings serial baudrate:115200 debugport:2

可参阅 BCDEdit 调试配置

(4) 如果开启了串口调试那么配置vmware 相关串口

\.\pipecom_2

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

在这里插入图片描述

上述配置完成后你可用windbg进行调内核代码。
在这里插入图片描述

在这里插入图片描述
确定后 ,重启被调试的电脑。

其他快捷链接方式:
在这里插入图片描述

目标后面拼接 -b -k com:pipe,port=.pipecom_2,resets=0 也是可以的。

在这里插入图片描述

挂到断点继续输入g运行即可

当我们驱动断点触发时
在这里插入图片描述
你会差异的发现自动关联的了源码。大致原因时sys驱动文件的debug版本会在PE结构中保留符号表位置
在这里插入图片描述

如果需要windbg查看dbgprint的输出请执行

 ed nt!Kd_Default_Mask 8

参考

编写 Hello World Windows 驱动程序 (KMDF)

win10关闭驱动数字签名

Disabling-Driver-Signature-Verification-on-Windows-8-or-10

微软签名概述

spectre 漏洞文档

BCDEdit 调试开关

BCDEdit 调试配置

最后

以上就是多情画板为你收集整理的windows 驱动与内核调试 学习概述驱动概述驱动和内核调试参考的全部内容,希望文章能够帮你解决windows 驱动与内核调试 学习概述驱动概述驱动和内核调试参考所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部