首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Windows内核驱动开发:HelloWorld

除了在安装VS2019的时候,选择C++桌面开发环境,里面自带一个和当前系统版本一致的SDK,也可以自己修改,但是可能会和系统不兼容。...build tools (v14.25) MSVC v142 - VS 2019 C++ x64/x86 Spectre-mitigated libs (v14.25) v14.25根据在所有组件里看到最新版本的为准...然后下载适用2004的WDK安装文件,双击之后,需要联网下载安装WDK相关文件和VS2019驱动开发插件,根据提示点过去就可以。...里所有 是 的地方改成 否; Driver Signing - General中的Sign Mode改为 Off; 改好后,使用Debug-x64配置,Ctrl-B生成驱动文件,如果报下面这个错误的话:...根据官网的描述,如果创建的驱动不是基于设备的,即通用型内核驱动,则需要删或者改一些东西,如果可以看懂怎么改就直接改就可以,例如: 原始inf中要改的部分: [Manufacturer] %ManufacturerName

2.5K40

Win10下VS2015(WDK10)驱动开发环境配置

对于Windows 10和Visual Studio2015驱动开发WDK环境变量的配置,与其它版本的Windows和WDK环境的配置有很大不同。本人也是苦苦探索了近一周的时间才配好。...为改善这种局面,从Vista开始,微软推出了新的驱动程序开发环境WDF(Windows Driver Foundation )。...用户模式应用程序的虚拟地址空间除了为专用空间以外,还会受到限制。在用户模式下运行的处理器无法访问为该操作系统保留的虚拟地址。...另外,一般VisualStudio 2015 Enterprise是已经内带windows SDK,但是如果不是和安装的WDK一致的版本,建议在单独安装windows SDK 10,使得WDK和SDK版本一致...注意:这里如果点击附加按钮后Vs2015出现崩溃现象请检查Win10的版本,如果win10的版本还是10240版本的话请升级到10586版本。

4.5K62
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    原创Paper | Windows 驱动开发入门

    作者:0x7F@知道创宇404实验室 日期:2023年4月18日 0x00 前言 参考资料 随着 windows 系统的更新迭代,windows 驱动开发技术也是不断的升级:从最早期的 VXD(Virtual...Driver Kit);现在我们来配置 WDK 环境,从官网(https://learn.microsoft.com/zh-cn/windows-hardware/drivers/download-the-wdk...)下载 WDK 在线安装包(版本必须和 SDK 一致),按如下进行安装: 对于 WDF 驱动模型其开发环境叫 WDK(Windows Driver Kit) 对于 WDM 驱动模型其开发环境叫 DDK(...windows 驱动开发环境可能会受操作系统、Visual Studio、SDK、WDK 的版本影响,配置过程需要多留心这些环节,如遇见问题可以参考如下版本信息 https://learn.microsoft.com...WDK Test Target Setup x64-x64_en-us.msi;在之后调试机(debugger)中的 Visual Studio 将连接被调试机(debugee)的 WDK Test Target

    1.1K41

    Windows内核编程(二)-第一个内核程序

    系统认为驱动初始化失败,系统执行一系列的清理工作,并把驱动模块从内核空间中移除,从用户态角度看,就是服务启动失败。...DriverEntry函数除了打印一系列信息,还有一个重要的操作: DriverObject->DriverUnload = Unload; DriverUnload是DriverObject结构体中的一个成员...在WDK编译工具的命令行中,使用cd命令进入First.c文件所在的目录,然后在命令行中输入“build”命令开始编译。注意,输入的build命令不带引号。...在编译过程中会报以下错误: 这是因为老版本的WDK不支持__FUNCTIONW__标识。这里给读者一个建议,如果编写的驱动代码需要支持不同版本的WDK编译,请不要使用新版本WDK独有的特性。...,其中chk表示Debug版本,Win7表示使用的是Windows 7版本WDK编译环境,amd64表示64位驱动程序,在objchk_win7_amd64\amd64\文件夹下,生成了FirstDriver.sys

    61621

    抛弃 C C++!微软官宣:请用 Rust 编写 Windows 驱动!

    12 年修复的所有漏洞中,有七成涉及的都是内存安全问题。...“Rust 是一种不错的语言,但它甚至还未达到 1.0 版本,我认为我们不应该为了尚未经过实战检验的语言而放弃久经考验的语言。” 尽管不被看好,但微软转向 Rust 的决心依旧坚定。...wdk-sys:将 FFI 直接绑定到 WDK 中提供的 API。 wdk:与 WDK 中的 API 安全绑定。 wdk-panic:使用 WDK 构建的程序的默认 panic 处理程序实现。...值得注意的是,微软补充:虽然该项目的计划灵活运用不同的 WDK 版本和不同的 WDF 版本,但目前“仅针对 NI eWDK、KMDF 1.33、UMDF 2.33 和 WDM 驱动程序进行了测试”,对于...正如另一位开发者所说,“Windows 内核中的 Panic 往往是最后的手段,只应保留给内核已损坏且无法恢复的情况”,因此不少人认为 Rust 调用 Panic 的方式“在内核代码中是不可取的,这可能会导致系统崩溃

    68130

    windows内核编程_linux内核编程

    常常有这样的问题: “你又没有Windows的代码,你如何搞内核编程?” “除了微软的人,难道还有人做Windows内核吗?”...在和《天书夜读:从汇编语言到Windows内核编程》一书同一系列的《寒江独钓——Windows内核编程与信息安全》(预计明年出版)中,对键盘过滤、硬盘过滤、文件过滤、网络过滤等安全相关的内核编程,都有详尽的讲解和例子...WDK实际上主要用于开发驱动程序。而驱动程序基本上都是内核程序。WDK提供的头文件以及部分源代码,实际上就是Windows内核的代码的一部分。...有部分驱动程序(比如FAT32文件系统)的代码是完全公开的。我们也可以在这里看到Windows内核开发者的代码风格。同时,微软也提供了所有Windows版本的符号表在网上供研究者下载。...-07339-7 【出版社】 电子工业出版社 【出版日期】2008年12月 【宣传语】 从貌似天书的汇编代码中,一探Windows底层的核心实现。

    8.7K20

    用poolmon定位内存泄漏

    在更多内存泄露场景中,poolmon并不大能定位到根因。...最好用的反而是排除法和对比法,性能对比,从原理上来讲,我一直是奉行这句要诀: 环境一致性[底层硬件/操作系统/软件/工作负载(请求量/包量等)],测试要尽量消除无关变量,如果没有正常环境做参考,那就排除法...平台侧:硬件配置差异、虚拟化差异、安全组差异 系统内部:winver内核版本、驱动版本、补丁、软件版本和关键文件md5值、服务列表、平台组件 poolmon集成在wdk里,需要运行wdksetup.exe...、下载安装wdk 注意直接点步骤3里的链接下载wdksetup.exe https://go.microsoft.com/fwlink/?...,我自己这个case中,主要是操作系统占用的 6、假如Bytes一列最大值对应的Tag名称是DRPI,那执行findstr /mls DRPI *.sys 说明DRPI这个高主要是360占用 参数/m

    13.9K32

    glib:windows下基于MSYS2环境编译glib2的过程

    ,这些依赖库在windows多数并不提供编译好的二进制版本,所以要先编译安装各种依赖库,比如glib。...我也曾想用官方提供的二进制库(http://ftp.gnome.org/pub/gnome/binaries/win64/glib/),但官方的服务器上从2010年以后就不再提供二进制版本,只提供源码。...在网上反复找了很多次,找到这篇官方的说明《Download for Windows》,在这个说明中我只得到一个信息:windows下编译gtk+ (包括glib)最容易的方式就是在MSYS2。...@ 可以看到Makefile生成 .lib 是调用MSVC的lib.exe(在MSVC bin文件夹下)程序来完成的。...而默认情况下,MSYS2环境中搜索路径($PATH)中没有MSVC编译器的安装位置(bin).所以这一条命令不能执行,不能生成lib。

    3.4K10

    突发:Runway 从 HuggingFace 上删库跑路,究竟发生了什么?

    突发新闻:Runway 从 HuggingFace 上删库跑路,究竟发生了什么? 1️⃣ Runway 从 HuggingFace 上删库跑路!究竟是技术问题还是另有隐情?...最近科技圈内流传着一则令人瞠目结舌的消息:曾经为AI图像生成领域做出重大贡献的 Runway,突然从 HuggingFace 上撤下了所有项目,包括备受瞩目的 Stable Diffusion v1.5...版本。...3️⃣ 删库背后的知识产权纠纷 另一个引发猜测的点在于知识产权问题。据悉,Stable Diffusion v1.5 版本曾因为涉嫌侵犯知识产权而被要求删除。...在这种背景下,Runway 的删库行为似乎变得更加耐人寻味。到底是因为什么原因促使他们在无预警的情况下撤回项目?这一谜题仍待解开。 4️⃣ 未来的走向:Runway 会走向何方?

    9110

    WinPmem:一款功能强大的跨平台内存采集工具

    支持32和64位的Windows XP和Windows 10,可以使用WDK7600以支持Windows XP。...默认情况下,我们提供的WinPmem可执行程序将会结合WDK10编译以支持Windows 7-10。 使用了三种不同的独立方法来创建内存转储,总会有一种方法适用于内核模式rootkit。...使用了一个读取设备接口,而不是像其他工具一样直接从内核写入镜像。这样可以允许我们使用复杂的用户空间镜像工具,并在系统上执行实时分析。...这两个版本都包含了针对32位和64位操作系统的驱动器。 文件名中的“mini”指的是这个工具仅使用了一个简单的镜像工具,它只能生成RAW格式的镜像。...Python采集工具-winpmem.py WinPmem的Python版程序目前仍处于开发中,但是可以作为一个基于Python的镜像工具演示使用。

    98220

    EDB无法删除分区子表的错误

    《EDB日期类型的一个问题》 最近某个应用,连接的是EDB数据库,测试环境是EDB 9.2版本,在删除一张inherit方式创建的分区子表(例如主表a,子表b),先用alter table b no herit...a删除关联,再drop删除子表,提示无法删除,从错误提示看,主表a要依赖子表b,建议删除主表a,达到删除子表b的效果。...可我都删除了主子关系,为什么无法删表?...为什么这次没有报错?究竟主表有什么依赖于子表的? 一开始,我是怀疑有什么外键之类的属性,没有删除,导致主表依赖于子表,或者no inherit没有真正删除关联,但是这些猜测,都一一验证不对。...但是,在EDB 9.3和EDB 10版本上,使用partition by range创建主表,此时是禁止用inherit,创建子表的,这种操作,会提示,压根不给你inherit删除partition by

    1.7K30

    64位内核开发第8讲,文件操作.以及删除文件.

    文件操作,以及强删文件....为什么说这个.因为在上面文件操作.如果你查询Wdk文档的话.会看到不同的结构体定义....为什么这样定义. 这样定义代表这个结构体利用数组可以溢出的原理.设计的一个边长结构体. 他这个数组的大小根据第三个参数决定. ?...在拷贝字符串的时候我拷贝的是宽字符.所以显示如上图.在我们读文件之前.我稍微修改一下.这里就不在贴出代码了. ? 4.1.4内核中读文件 内核中读写文件其实是一样的.打开一个文件.读取数据即可....以共享模式打开. 3.如果是拒绝,则以另一种方式打开文件.并且设置这个文件的信息. 4.设置成功之后就可以删除了. */ OBJECT_ATTRIBUTES objAttri

    1.3K31

    我服了!SpringBoot升级后这服务我一个星期都没跑起来!(上)

    最近由于各方面的原因在准备升级 Spring Cloud 和 Spring Boot,经过一系列前置的调研和分析,决定把Spring Boot 相关版本从 2.1.6 升级到 2.7.5,Spring...Cloud 相关版本从 Greenwich.SR1 升级为 2021.0.4。...Spring Cloud兼容问题 由于测试过程中先升级的 Spring Boot,发现 Spring Cloud 使用到的低版本代码不兼容,升级到文章开头说的版本之后问题解决。...,这个 commit 我找了一遍 issue 和 PR,都没有发现相关说明,大佬直接删的,具体原因不清楚为什么直接全删干净了。...JedisConnectionConfiguration 报错,原因在于我们有的业务代码依赖中自己指定了 commons-pool2的版本。

    1.1K10

    Git之删除文件 git rm 的基本使用

    ,或者用rm命令删了: $ rm test.txt 这个时候,Git知道你删除了文件,因此,工作区和版本库就不一致了,git status命令会立刻告诉你哪些文件被删除了: $ git status On...另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本: $ git checkout -- test.txt git checkout其实是用版本库里的版本替换工作区的版本...如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。...总之,就是让这个文件回到最近一次git commit或git add时的状态。...这节里后面写的: 另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本: $ git checkout -- test.txt git checkout其实是用版本库里的版本替换工作区的版本

    1.5K10

    浅说驱动程序的加载过程

    从应用程序的角度来看,操作系统提供的函数接口是相当丰富的,甚至很少有人知道windows提供的API的确切的数目。...WDK是新近才有的名字,过去同样的东西被称作是DDK,pDriver Development Kits。后者已经过时,新学驱动程序开发的程序员,推荐使用WDK。 如何下载和安装WDK的内容就不提了。...下面的代码是主要代码文件loader.c的一个片段,展示了如何从程序中获得资源并释放的过程。 ? 在以上的代码中,我故意省略掉若干错误处理代码以使代码显得紧凑。简单对以上代码做些解释。...从文件中取得资源的步骤很简单,首先调用FindResource()找到资源,这个函数返回一个HRSRC类型的值。然后使用这个值调用SizeofResource0获得资源的文件长度。...与以上程序同时提供的还有一个unload.exe程序,这个程序不过是调用DeleteService()删除了服务而已,代码十分简单,就不在这里展示了。

    2.9K90

    Windows下底层数据包发送实战

    从Windows XP SP2开始,以后的操作系统(除了部分Server系统外),出于安全考虑,微软对Raw Socket加了若干限制[3],主要的限制如下:     a)无法使用Raw Socket发送...为实现该目的,我们的程序不能使用右图的调用方式,正如Winpcap的NPF驱动一样,我们应跨过中间几层直接从应用层调用NDIS层。   ...(新内容请参考WDK文档)其实,只需要了解大致架构,不需要了解过多NDIS层的细节就可以“编写”达到本文目的驱动!...WDK(Windows Driver Kit)的Sample代码中,包含一个名为Ndisprot的工程,该工程已经实现了一个最基本的无连接NDIS协议驱动,支持收/发以太网帧。   ...除了测试签名外,还可以用专门的签名工具为驱动签名,比如“驱网签名工具”,用这些工具签名非常方便,但未付费版都有次数限制。

    3.2K20

    程序员离职删代码被判10个月,京东到家说恢复数据库花了3万,网友:这是真有仇啊

    仔细一看,这位程序员的离职时间恰好是6月18日京东大促那天。 近日,这位程序员被判处有期徒刑十个月。 除了这些颇具戏剧性的细节,不少围观的网友还对离职时的过激行为、代码权限管理等议题展开了讨论。...网友热议:还有疑点 可以看出,与之前的删库跑路相比,这次案件有些不同。 被告人录某删除的不是数据库中的生产数据,而是在工作期间自己写的代码。...有了解IT行业的网友从细节中发现了问题,认为仅凭现有信息还有解释不明白的地方。 比如,删除的到底是什么代码。...如果是开发环境的代码,代码控制平台的一个重要功能就是版本管理,无论是Git还是老一点的SVN都有备份功能,可以回滚删除的操作。 那么为什么公司要花3万元请第三方恢复数据?...故意制作、传播计算机病毒等破坏性程序,影响计算机系统正常运行,后果严重的,依照第一款的规定处罚。 除了删代码、删库这类案件外,最近一开发者张某帮人在钉钉上远程打卡获刑一事也引发了大量关注。

    33720
    领券