首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
windows 内核开发
2024-10-17
Windows内核开发-3-内核编程基础
Windows内核开发-3-内核编程基础 这里会深入讲解kernel内核的API.结构体.和一些定义.考察代码在内核驱动中运行的机制.最后把所有知识合在一起写一个有用的驱动. 本章学习要点: 1:通用内核编程指南 2:debug和release版本的区别 3:内核API 4:函数和错误代码 5:字符串 6:动态内存分配 7:内核驱动对象 8:设备对象 1 内核编程注意事项 内核编程依赖于WDK(Windows Driver Kit)Windows驱动工具包,这个东西存放了大量头文件和第三方库.内
windows内核开发环境的简易搭建
一.windows内核开发需要的软件 1.WDK 2.WinDbg 3.virtualKD 4.DebugView 5.Visual C++ 6.0 6.VMware Workstation 二.windows内核开发软件的安装 1.WDK的安装和配置 wdk的下载地址:http://download.microsoft.com/download/4/A/2/4A25C7D5-EFBE-4182-B6A9-AE6850409A78/GRMWDK_EN_7600_1.ISO 首先下载驱动开发包GR
Windows内核开发-2-开始内核开发-2-内核开发入门
Windows内核开发-2-开始内核开发-2- 第一个驱动程序: 直接采用vs2019中的Empty WDM Driver 模块创建: 初始的项目文件夹中有一个Driver Files里面会有一个.inf的文件,没用直接删除就好,然后在源文件里面创建一个.cpp的源文件. DriverEntry和Unload Routines DriverEntry: 每个驱动都有一个入口点,叫做DriverEntry,就好比平常写的C/C++代码里面的main函数.DriverEntry是由一个叫做IRQL_
Windows内核开发-4-内核编程基础
Windows内核开发-4-内核编程基础 这里会构建一个简单但是完整的驱动程序和一个客户端,部署内核执行一些平时user下无法执行的操作. 将通过以下内容进行讲解: 1 介绍 2 驱动初始化 3 Create和Close操作调度实例 4 DeviceIoControl操作调度实例 5 安装和测试驱动程序 整个完整源代码最后面 1 介绍 该驱动将解决Windows API设置线程优先级的不灵活性. 在User模式下,线程的优先级由其进程优先级类和基于每个线程的偏移量组合来确定,偏移量具有有限的级别
Windows内核开发-5-(2)-内核模式调试
Windows内核开发-5-(2)-内核模式调试 普通用户模式的调试,采取的是给进程添加一个线程来挂起断点,作为一个调试器的线程在进程中使用.照这样来类推,对操作系统调试相当于添加一个进程来限制操作系统,所以操作系统是会被冻结的.这样的话就不能直接在本机电脑上进行调试了,不然电脑就卡住了.而且还容易出现问题.最好的办法是创建一个虚拟机,用一台主力机给一台专门用来测试的计算机调试. 测试机和主力机必须通过一种方式来连接,选择有很多,最好的选择是通过网络连接,但是网络连接要求target和host至
Windows内核开发-6-内核机制 Kernel Mechanisms
Windows内核开发-6-内核机制 Kernel Mechanisms 一部分Windows的内核机制对于驱动开发很有帮助,还有一部分对于内核理解和调试也很有帮助. Interrupt Request Level 中断请求级别 Deferred Procedure Calls(DPC) 延迟调用 Asynchronous Procedure Calls(APC) 异步调用 Structured Exception Handling 异常处理 System Crash 系统崩溃 Thread S
Windows内核开发-9-32位和64位的区别
Windows内核开发-9-32位和64位的区别 32位的应用程序可以完美再64位的电脑上运行,而32位的内核驱动无法再64位的电脑上运行,或者64位的驱动无法在32位的应用程序上运行.这是为什么呢. 原因是在x64的Windows操作系统上,模拟了x86操作系统的操作,并且引入了一个WOW64子系统,将x86和x64完美进行兼容. WOW64子系统 x86能在x64上运行全靠这个东西.全名叫做Windows On Windows,英文名感觉是在套娃,其实它的意思就是在Windows64上运行W
Windows内核开发-10-监听对象
Windows内核开发-10-监听对象 Windows内核除了可以监听进程,线程.dll还可以监听特定的对象和注册表.这里先讲一下监听对象. 监听对象 内核提供了一种可以监听对特定的对象类型的句柄进行打开或复制的机制.正式支持的对象类型有进程和线程,Windows10还支持一个桌面对象(桌面对象这个先不考虑). 这个和前面的监听进程线程以及模块加载是有区别的.这个是相对于对象的句柄的,比如说一个进程的句柄,线程的句柄,别的进程通过关闭这个进程的句柄来关闭这个进程这种.是这个意思. 这里也有很多和
Windows内核开发之串口过滤
学习了几个月的内核编程,现在对Windows驱动开发又了更加深入的认识,特别是对IRP的分层处理逻辑有了深入认识. 总结起来就几句话: 当irp下来的时候,你要根据实际情况,进行处理 1> 无处理,继续往下传 2> 处理之后 ,往下传 3> 处理之后, 往上传 4> 不做处理,直接丢弃 具体怎么理解,通过一个串口驱动过滤就可以深入理解. 一.串口过滤概念 串口过滤:平时我们看到的主机上的USB.网线口等都属于串口,那么设想一个环境,我去网吧上网,正在通过某宝付款,然后主机后面的US
Windows内核开发-Windows内部概述-2-
Windows内部概述-2- 线程: 执行代码的实体是线程.一个线程的包含在进程里面的,线程使用进程提供的资源来运行代码. 一个线程拥有以下的内容: 1:明确的运行模式,用户态或者内核态. 2:执行的环境,包括寄存器和执行状态. 3:一个或两个栈空间,用来存放变量和调用管理. 4:Thread Local Storage(TLS) 线程本地存储数组,用来存储线程专用数据和提供统一的访问语法. 5:基本的优先级和当前(动态)的优先级. 6:和处理器关联,用来指示允许线程在那个一个处理器上运行. 线
Windows内核开发-Windows内部概述-1-
Windows内部概述-1- 进程: 进程是一个程序的运行实例的控制和管理对象.一般的程序员所说进程运行,这样的说法是不对的,因为进程不能运行程序,进程只能管理该程序运行.线程才是真正的执行代码的东西. 一个进程应该具备以下的内容: 1: 对于一种可执行程序而言,进程包含了执行代码的所需要的初始代码和数据. 2: 每个进程有一个虚拟地址空间,用来给代码分配内存 3: 一个主令牌对象用来存储进程的默认安全内容,该对象被进程中的线程执行代码来使用. 4: 一个指向执行对象的专用句柄表,如事件.信号量
Windows内核开发中如何区分文件对象究竟是文件还是文件夹?
今天有同行问了一个问题,Windows文件过滤驱动里的如何去区分一个对象是文件还是文件夹?我花了1小时左右翻阅了一些微软的文档以及以前的遗留代码,发现在WDK的帮助文档中是这么定义的: FILE_OBJECT结构体中的一个成员:PVOID FsContext; 说明FsContext指向了一个结构体FSRTL_ADVANCED_FCB_HEADER,这个结构体中有一个成员: WDK帮助文档是这么描述这个结构体的: 里面提到了这个结构体包含的文件信息里已经表明了这个文件究竟是文件?文件夹?卷区?
竹林蹊径-深入浅出Windows内核开发作者的博客
http://blog.csdn.net/blog_index http://blog.csdn.net/blog_index/article/details/6012054 http://download.csdn.net/user/changpei
Windows内核基础知识-8-监听进程、线程和模块
Windows内核基础知识-8-监听进程.线程和模块 Windows内核有一种强大的机制,可以在重大事件发送时得到通知,比如这里的进程.线程和模块加载通知. 本次采用链表+自动快速互斥体来实现内核的主要架构. 进程通知 只要在内核里面注册了进程通知那么创建进程就会反馈给内核里面. //注册/销毁进程通知函数NTSTATUS PsSetCreateProcessNotifyRoutineEx( PCREATE_PROCESS_NOTIFY_ROUTINE_EX NotifyRoutine,//回
Windows内核安全与驱动开发
这篇是计算机中Windows Mobile/Symbian类的优质预售推荐<Windows内核安全与驱动开发>. 编辑推荐 本书适合计算机安全软件从业人员.计算机相关专业院校学生以及有一定C语言和操作系统基础知识的编程爱好者阅读. 内容简单介绍 本书的前身是<天书夜读--从汇编语言到Windows内核编程>和<寒江独钓--Windows内核安全编程>. 与Windowsclient安全软件开发相关的驱动程序开发是本书的主题. 书中的程序使用环境从32位到64位.从Win
《天书夜读:从汇编语言到windows内核编程》五 WDM驱动开发环境搭建
(原书)所有内核空间共享,DriverEntery是内核程序入口,在内核程序被加载时,这个函数被调用,加载入的进程为system进程,xp下它的pid是4.内核程序的编写有一定的规则: 不能调用windows运用层API函数 很多C标准函数失去意义,如printf,fopen,fwrite等,它们有专门的内核函数 很多单纯的C标准,如string.h(不涉及I/O及网络等)等还是适用 可以使用标准C语言,但是用浮点数之前要特殊处理 WDK提供大量System Routine以供调用,相当于运用层
《windows内核安全与驱动开发》ctrl2cap中的ObReferenceObjectByName疑问
国内有关于windows内核驱动这块的书籍实在是甚少,不过好在<windows内核安全与驱动开发>这本书还算不错(内容方面),但是不得不说这本书在许多地方存在着一些细节上的问题.比如我今天要谈的这个话题. 在这本书的键盘过滤这个章节,作者对ObReferenceObjectByName个函数的用法做了介绍,并指明这是一个非文档化函数(可以用,但是在MSDN的文档中以及SDK的头文件中没有公开出来).这个函数的具体结构如下: NTSTATUS ObReferenceObjectByName( I
《Windows内核安全与驱动开发》 7.1&7.2&7.3 串口的过滤
<Windows内核安全与驱动开发>阅读笔记 -- 索引目录 <Windows内核安全与驱动开发> 7.1&7.2&7.3 串口的过滤 一.设备绑定的内核API 进行过滤的最主要的方法是对一个____进行绑定. 我们可以首先认为:一个真实的设备对应一个_____.通过编程可以生成一个__的____,并绑定到一个___的设备上.一旦绑定,则本来操作系统发送给____的请求,就会发送到____上. 一个简单的API绑定函数是_____,必须是有____的设备,才能使用这
《Windows内核安全与驱动开发》阅读笔记 -- 索引目录
<Windows内核安全与驱动开发>阅读笔记 -- 索引目录 一.内核上机指导 二.内核编程环境及其特殊性 2.1 内核编程的环境 2.2 数据类型 2.3 重要的数据结构 2.4 函数调用 2.5 Windows的驱动开发模型 2.6 WDK编程中的特殊点 三.字符串与链表 3.1 字符串操作 3.2 内存与链表 3.3 自旋锁 四.文件.注册表.线程 4.1 文件操作 4.2 注册表操作 4.3 时间与定时器 4.4 线程与事件 五.应用与内核通信 5.1 内核方面的编程 5.2 应用方面
《Windows内核安全与驱动开发》 2.3 重要的数据结构
<Windows内核安全与驱动开发>阅读笔记 -- 索引目录 <Windows内核安全与驱动开发> 2.3 重要的数据结构 一.驱动对象 Windows内核采用__的编程方式.Windows内核认为许多东西都是__,比如一个驱动.一个设备.一个文件,甚至其他的一些东西. 与应用程序开发不同,Windows内核模块并不生成一个进程,只是填写一组__函数让Windows来调用,而这组__必须符合Windows内核规定. Windows中很多组件都拥有自己的__,比如:所有的硬件驱动程
热门专题
适用linux的windows 的子系统
wireshark sqlserver 过滤器
layer.msg 自动刷新
debounce获取不到触发元素
vue安装axios
springboot Get 如何传递数组
Android1子线程实现静默安装
c#winform无法将obj文件复制到,对路径的访问被拒绝
Elasticserch 实现简单搜索功能
vant搜素框的×重置
cesium 设置声波动画
linux 内怎么输入大写
springboot kafka consumer 自动提交
SQLserver故障群集重启之后一直未同步
关闭firefox自动更新
c#控件加载慢的问题
bitecoin 测试链的作用
jpa 不适用缓存查询
idea为什么每次maven都要重新配置
更改文件扩展名后没有弹窗警告