安全开发: 驱动环境配置与第一个hello world

admin 2025年5月7日10:48:35评论3 views字数 1913阅读6分22秒阅读模式
由于大家付费的热情太高了,所以原定周六更新的内容,提前放到今天吧.并且人比较多,所以整个系列一共大概有20篇左右.

前言

废话少说,我们是填鸭式教学.不废话,再做任何事情之前,我们需要配置好环境

VS版本与vmware选择

VS无脑选vs2019,VS2022目前不支持win7.vs2019选社区版什么的,这边就不重复了,因为网上教程满天飞了,这是基本能力了,自己搜索主要安装是 WDK 这块也不说了,网上教程真的满天飞了,关键字搜索 vs2019安装wdk

这边为了防止下错别的版本导致wdk安装不了(win11的wdk只能给2022装,只能装win10的)就给个链接:https://learn.microsoft.com/en-us/windows-hardware/drivers/other-wdk-downloads

安全开发: 驱动环境配置与第一个hello world

具体怎么装,自己搜关键字吧: vs2019安装wdk

装完之后,装vmware,这一块相信大家都知道了,我推荐装windows 1803系统,无它,这玩意是目前我用的比较顺手的系统

双机调试

双机调试就不要看网上那种古董教程了,那种让你乱七八糟的设置pipe什么的都没啥用,无脑选择VirtualKD-Reduxhttps://github.com/4d61726b/VirtualKD-Redux非常无脑: 把target64的东西塞到虚拟机里面,双击安装,虚拟机外面打开vmmon64.exe,然后开机选启动项按F8选择无签名验证模式.即可这里有完整的填鸭教程,看介绍https://github.com/4d61726b/VirtualKD-Redux/blob/master/VirtualKD-Redux/Docs/Tutorial.md

建议先给你的双机调试虚拟机拍个快照当你完成一切准备后

windbg选择

我选择preview 自行从网上下载windbg previewvmmon64选windbg preview,我比较喜欢这个,但是也有人喜欢传统windbg,自己看着选吧安全开发: 驱动环境配置与第一个hello world

第一个hello world

新建vs项目选安全开发: 驱动环境配置与第一个hello world进来后第一件事是 把模式调为debug x64,并且选择win7安全开发: 驱动环境配置与第一个hello world把inf2cat关了,这玩意没测试签名一直报错安全开发: 驱动环境配置与第一个hello world把这个缓解关了安全开发: 驱动环境配置与第一个hello worldC++设置成最新草案,纯个人爱好安全开发: 驱动环境配置与第一个hello world关掉把警告视为错误(其实正式开发必须打开它,但是这玩意很容易让新手头疼,所以我们还是先别打开它)安全开发: 驱动环境配置与第一个hello world把这个驱动测试签名关了,要不然没签名会报错安全开发: 驱动环境配置与第一个hello world删掉你目录下的xxxxx.inf里面的这个安全开发: 驱动环境配置与第一个hello world

否则会报 1>F:projectduck_guard_winduck_guard_winduck_guard_win.inf : error 1297: Device driver does not install on any devices, use primitive driver if this is intended.

然后新建一个main.cpp

#include <intrin.h>#include <ntifs.h>#include <ntddk.h>#include <stdlib.h>#include <ntimage.h>#include <ntstrsafe.h>#include <ifdef.h>#define DebugPrint(...)     DbgPrintEx(DPFLTR_IHVDRIVER_ID, DPFLTR_ERROR_LEVEL, __VA_ARGS__)extern "C" NTSTATUS DriverEntry(PDRIVER_OBJECT driver,    PUNICODE_STRING reg_path) {    DebugPrint("hello worldn");    return STATUS_SUCCESS;}

编译安全开发: 驱动环境配置与第一个hello world把这个sys文件丢到虚拟机里面然后用驱动加载工具加载他安全开发: 驱动环境配置与第一个hello world恭喜你,你的第一个驱动就成功了安全开发: 驱动环境配置与第一个hello world但是这个驱动你是停不了的,因为没有设置uninstall,所以直接还原快照吧。如果要让他停,我们需要加一个驱动卸载的函数

void DriverUnload(PDRIVER_OBJECT driver) {    DebugPrint("Good Bye n");}extern "C" NTSTATUS DriverEntry(PDRIVER_OBJECT driver,    PUNICODE_STRING reg_path) {    driver->DriverUnload = DriverUnload;    DebugPrint("hello worldn");    return STATUS_SUCCESS;}

内核编码规范

原文始发于微信公众号(冲鸭安全):安全开发: 驱动环境配置与第一个hello world

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年5月7日10:48:35
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   安全开发: 驱动环境配置与第一个hello worldhttps://cn-sec.com/archives/4035731.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息