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

Windows 内核驱动程序完整性校验的原理分析

在上一篇文章中提到了 Windows Vista 及之后版本的 Windows 操作系统在驱动程序加载完成后,驱动中调用的一些系统回调函数(如 ObRegisterCallbacks,可用来监控系统中对进线程句柄的操作...,如打开进程、复制线程句柄等)等 API 中会通过 MmVerifyCallbackFunction 函数对该驱动程序进行完整性检查,检测未通过则会返回 0xC0000022 拒绝访问的返回值。...后通过查阅资料得知,在 64 位 Windows 操作系统中,该地址空间区间范围正是内核地址空间中的会话空间(Session Space)。...这两个值分别控制普通的内核 APC 和特殊的内核 APC。...以下是在 Windows 7 x64 SP1 操作系统环境下该结构体的数据类型定义。

1K10

驱动实现监控进程创建及退出(支持64-bit系统)

这些问题最终让我向内核研究,希望可以通过一份代码,编译出适应不同系统的驱动程序实现我们的需求,所以就有了本文的内容,我们先来看一下效果图。...这全部是 Windows 系统给我们提供的功能。由于我们编译使用的是 WDK10,已经不支持 XP 了,若想在 XP 下实现如上功能,可以参考进程创建通知回调例程学习笔记。...Github 代码地址:https://github.com/nmgwddj/Learn-Windows-Drivers/tree/master/ProcessMonitor 如何使用 将代码下载到本地后...随后找一台虚拟机进行测试,开启虚拟机时按下 F8 键,选择 “禁用驱动程序签名强制” 启动系统。...进入系统后找一些驱动加载工具,将驱动加载起来,通过 DebugView 就可以看到程序的输出信息了(DebugView 不显示调试信息处理办法)。

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

Nidhogg:一款专为红队设计的多功能Rootkit

当前版本的Nidhogg支持任意版本的x64 Windows 10和Windows 11。 该项目代码库包含了一个内核驱动程序,并提供了一个C++ Header来与之进行交互。...、线程保护(防关闭); 7、文件保护(防删除和覆盖); 8、文件隐藏; 9、注册表键值保护(防删除和覆盖); 10、注册表键值隐藏; 11、查询当前受保护的进程、线程、文件、注册表键和值; 12、任意内核...构建驱动程序 如需编译项目代码,我们还需要使用到下列工具: VisualStudio2022 WindowsDriverKit 克隆项目代码之后,构建驱动程序代码即可。...驱动程序测试 如需在你自己的环境中测试驱动程序,可以直接在提权cmd中运行下列命令: bcdedit /set testsigning on 重启之后,创建一个服务并运行驱动程序即可: sc create...PPLcontrol https://github.com/DarthTon/Blackbone https://learn.microsoft.com/enus/sysinternals/downloads/debugview

31530

.NET8 AOT DebugView

1.概要 开发过程中避免不了调试和日志输出使用Trace对象无论在debug模式下和release模式运行的程序都可以进行实时跟踪(vs运行程序时debugview是监控不到的直接双击exe运行监控即可...),顺便来测试一下在.NET8中基于AOT发布和普通模式下发布应用使用DebugView工具查看Trace.Write输出调试信息。...Debugview Debugview 是一个应用程序,支持你监视本地系统上或可通过 TCP/IP 访问的网络上任何计算机上的调试输出。...它可以同时显示内核模式和 Win32 调试输出,因此无需调试器来捕获应用程序或设备驱动程序生成的调试输出,也无需修改应用程序或驱动程序以使用非标准调试输出 API。...Trace.Flush(); Console.WriteLine("OK"); Console.Read(); } } } 测试结果 结论 DebugView

20610

原创Paper | Windows 驱动开发入门

WDF 还可以细分为内核模式 KMDF(Kernel-Mode Driver Framework) 和用户模式 UMDF(User-Mode Driver Framework),顾名思义 UMDF 将受到更多的限制从而换来更高的操作系统稳定性...在日常安全工作中,我更喜欢使用这种方式,因为大多数情况我只需要工作在内核层的驱动代码,而不关心其是否是完整的 windows 驱动设备,这种方式能帮助我快速进行安全验证工作。...on 重启主机后,使用管理员权限打开 powershell,通过 sc.exe 命令为驱动程序创建服务(命令详解请参考:https://learn.microsoft.com/en-us/windows-server.../administration/windows-commands/sc-create): # 创建服务名为 test,类型为 kernel,启动方式为 demand 的服务,并指定驱动程序路径 # (注意参数等号后必须有一个空格...,并使用 DebugView 查看调试输出(需要勾选 Capture Kernel 和 Enable Verbose Kernel Output 才能看到输出): # 启动运行驱动程序 sc.exe start

70640

奔图打印机显示未连接_打印机无法打印的10种解决方法

如果打印机没有处于联机状态,自然是无法打印了。 二、重新开启打印机。 如果打印机处于联机状态仍无法打印文档,此时你可以重新开启打印机,不仅清除了打印机内存,还能解决不少的打印故障。...步骤如下: 1.单击Windows“开始”菜单,指向“设置”,单击“打印机”,打开“打印机”窗口。 2.右键单击打印机图标,系统弹出快捷菜单,单击其中的“设为默认值”。 四、取消暂停打印。...七、确保打印到合适的本地打印机端口。 步骤如下: 1.在“打印机”窗口,右键单击打印机图标,再单击“属性”。 2.单击“详细资料”选项卡,在“打印到以下端口”框中,确保已将打印机设置到适当的端口。...九、重新安装打印机驱动程序。 有时,打印机驱动程序可能被损坏,从而引发无法打印文档的错误。我们可以重新安装合适的驱动程序,然后再打印。...3.测试打印机电缆换上另一根 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/136423.html原文链接:https://javaforall.cn

8.7K40

windows内核编程_linux内核编程

很多我们每天都使用的软件,就毫无疑问的使用了Windows内核编程的技术。最典型的就是实时监控的杀毒软件。此外还有防火墙、虚拟光驱、以及90%的驱动程序。...对非法的用户,则只能看见密文,从而无法编辑也无法阅读。而且也不仅仅Office,还有AutoCAD、Visual Studio、Photoshop等等用户可能用于编辑机密文件的所有的工具。...Windows内核确实没有公开源代码。但是MS提供Windows内核程序的开发包:WDK。WDK实际上主要用于开发驱动程序。而驱动程序基本上都是内核程序。...WDK提供的头文件以及部分源代码,实际上就是Windows内核的代码的一部分。有部分驱动程序(比如FAT32文件系统)的代码是完全公开的。我们也可以在这里看到Windows内核开发者的代码风格。...在开发中出现的问题,能从Windows自身找到答案! 给我老师的人工智能教程call!

8.6K20

总结一些我在开发WPF时常用的工具

比起dnSpy和JustDecompile,我更喜欢ILSpy,因为有很多BAML只有ILSpy能反编译出来,例如System.Windows.Controls.Ribbon.dll(见下面截图)。...DebugView DebugView是一个很古老但依然实用的工具,它可以查看应用程序或驱动程序输出的调试信息,而且不仅能查看本地机器,还可以查看远程机器的调试信息。...UISpy到Inspect到Visual UI Automation Verify,微软提供了很多自动化测试的协助工具,现在对我来说最常用的应该是UI Automation Verify了吧,它就位于Windows...(前提是需要先获取Windows SDK)。...就算没有,Visual UI Automation Verify也可以查看到几乎所有Windows UI的信息。虽然它有点古老,但胜在又快又实用。 ? 8.

2.8K30

如何设置SAP以通过Windows驱动程序进行打印

环境 如何设置SAP以通过Windows驱动程序进行打印;SAP R / 3;SAPWIN 解 预加载的SAP设备类型允许将SAP打印作业假脱机到Windows打印驱动程序。...要设置SAP Spool Administrator将作业转发到Windows操作系统上的Lexmark打印机驱动程序,请执行以下操作: 在SAP系统上打开Spool Administrator。...如果选择F ,则SAP系统将在客户端工作站的Windows打印机文件夹中寻找与打印机驱动程序名称匹配的设置。 选择__default会使系统自动默认为Windows默认打印机。...F表示前端打印,表示SAP应该通过Windows应用程序打印到Windows打印机文件夹中的打印机驱动程序。 L表示本地。本地打印用于从SAP直接打印到打印机。

1.2K20

驱动开发:挂接SSDT内核钩子

,诸如地址索引的基址、服务函数个数等,SSDT 通过修改此表的函数地址可以对常用 Windows 函数进行内核级的Hook,从而实现对一些核心的系统动作进行过滤、监控的目的,接下来将演示如何通过编写简单的驱动程序...,由 ntoskrnl.exe 程序向内核发送IO请求,然后内核驱动程序返回执行的结果。...) 805c22a5 33f6 xor esi,esi 注意:在验证的时候需要请关闭杀毒软件,因为杀毒软件会Hook这些地址来达到防御的目的,Hook后这些地址会发生变化无法完成整个查询过程...编写驱动程序: 接着我们分别使用C语言和汇编实现读取系统的SSDT表,此处使用的系统是Win7,由于 Win7 系统默认情况下本地内核调试功能被屏蔽了,所以必须在控制台下运行 bcdedit -debug...工具,然后加载这个驱动程序,观察是否能够读取到我们想要的数据。

58720

8步轻松晋级AMD MPSoC Linux内核调试专家

因此,先对Linux内核源代码进行排版,能减少后续添加调试用的打印语句的难度,减少出错的可能性。 调试的代码,通常是Linux内核源代码的驱动程序,因此可以只对驱动程序进行排版。...步骤3:查找Linux内核代码 建议参考AMD Xilinx Linux Drivers,找到Xilinx的各种设备的驱动程序的源代码文件。...如果设置“loglevel=5”, KERN_NOTICE(5)、KERN_INFO(6)、KERN_DEBUG(7)的信息不会被打印到串口, KERN_WARNING(4)、KERN_ERR(3)的信息会被打印到串口...总结 在常见的嵌入式系统开发中,工程师主要完成集成工作,不会修改Linux驱动程序的代码。...借用上面的办法,可以快速的在Linux驱动程序添加打印,跟踪Linux驱动程序的执行流程,然后排除配置参数错误、硬件引起的错误。

29720

驱动开发:挂接SSDT内核钩子

,诸如地址索引的基址、服务函数个数等,SSDT 通过修改此表的函数地址可以对常用 Windows 函数进行内核级的Hook,从而实现对一些核心的系统动作进行过滤、监控的目的,接下来将演示如何通过编写简单的驱动程序...,由 ntoskrnl.exe 程序向内核发送IO请求,然后内核驱动程序返回执行的结果。...编写驱动程序: 接着我们分别使用C语言和汇编实现读取系统的SSDT表,此处使用的系统是Win7,由于 Win7 系统默认情况下本地内核调试功能被屏蔽了,所以必须在控制台下运行 bcdedit -debug...SSDT_NtOpenProcess_Addr);pDriver->DriverUnload = UnloadDriver;return STATUS_SUCCESS;}编译程序以后,将其拖入虚拟机,打开DebugVIew...工具,然后加载这个驱动程序,观察是否能够读取到我们想要的数据。

74520

进程强杀初探

前言 我们知道在windows操作系统里面有ring0跟ring3的概念(ring1、ring2在windows中并未使用),因为ring0的特权级别是比ring3高的,那么我们肯定不能在ring3调用...windows提供的api杀死ring0特权级别的进程,那么这时候我们就需要使用的ring0的函数来强行结束一些处于ring0级别的进程。...我们能知道这个内核的函数,那么杀软肯定也知道,所以在ring0层面下,杀软将这个内核函数hook掉,如果发现有调用这个函数kill掉自己的企图,还是会拒绝。...那么我们要想全盘搜索,肯定要先找到内核模块,每个内核模块都有一个对应的结构体,来描述这个模块在内核中的:位置、大小、名称等等。DriverEntry 的第一个参数就是这个结构体。...显示创建设备成功 然后再利用ring3去连接设备并传输数据,这里打印出了从ring0返回的数据,证明传输是没有问题的,这里就已经成功结束了HipsMain.exe这个进程 再看一下DebugView

1.1K20

英伟达开源Linux版GPU内核驱动

英伟达表示,在后续的版本中将提供更强大、功能更全面的GeForce和工作站支持,最终,开源内核模块将会取代闭源驱动程序。...英伟达强调,开源内核模式驱动程序要与相同的固件和用户模式堆栈(如CUDA、OpenGL和Vulkan)配合使用。 驱动堆栈的所有组件必须在一个大版本中匹配。...我们对英伟达决定开源GPU内核驱动程序表示赞赏。Red Hat与英伟达合作多年,我们很高兴看到他们终于迈出了这一步」 被「Linux之父」骂的?...Linus作为开源软件和社区的最著名的倡导者(也许没有之一),对喜欢关起门来自己赚到盆满钵满的科技巨头,经常会爆出一些需要可能码的友善度词汇。...比如对微软,在一次采访中,记者问他对微软Windows操作系统的看法时,他回答道: 「Windows作为一个操作系统,确实打造了许多还算OK的应用,其中有些还是非常不错的。

2K50

驱动开发:配置Visual Studio驱动开发环境

Driver Kit 8.1工具包,请将该工具包解压缩到桌面,并双击wdksetup.exe进行安装,过程中只需要一直下一步,并等待WDK工具包安装完成; WDK就是内核编程开发工具包,某些读者可能听说过...图片 为了能测试驱动程序运行状态,读者需安装VMWare虚拟机,双击附件中的VMware-workstation-full-16.2.4-20089737.exe安装程序一直点击下一步即可,需要注意的是在如下选项中请在增强型键盘驱动程序上打对勾...驱动程序 (/Driver) 入口点 DriverEntry 生成清单 否 (/MANIFEST:NO) 生成调试信息...,并以管理员身份打开Windows 64Signer.exe,使用该工具对驱动程序进行签名,如下图所示; 图片 签名完成后将我们的驱动文件WinDDK.sys,拖入到KmdManager.exe驱动加载工具中...函数输出结果,则你可以使用课件中提供的dbgview64.exe程序,不过此程序需要注意几点,该程序需要使用管理员身份运行,且运行后需要将Capture菜单中的属性全部打对勾,如下图所示; 图片 此时DebugView

1.5K50
领券