精华内容
下载资源
问答
  • Windows内核的基本概念
    2020-12-07 21:17:38

     Windows内核的基本概念

    1  处理器模式

    Windows使用 0 和3 两种特权级。0 表示CPU处于内核模式(kernel mode);3 表示用户模式(user mode)。

    1.1  内存管理

    Windows 将32位虚拟内存空间按照0~4 GB的线性地址空间看待。其中2~4GB是所有进程共享的,为系统地址空间。0~2GB 为进程地址空间。

    在系统地址空间中,典型的三种内存页面管理算法:

    1. 非换页内存池。这部分内存区域在初始化时已经被映射到物理页面,所以Windows利用空闲链表的做法,按照不同的粒度(1、2、3、>=4 个页面的大小),将空闲页面链接起来,空闲页面本身即链表的结点,申请和释放页面的操作实际上是针对空闲链表来进行的。
    1. 换业内存池。在换页内存池区域,空闲的页面并没有被映射好物理页面,Windows使用位图来管理页面的分配。分配连续的多个页面,即从位图中找到连续的零位。
    2. 系统PTE区域。把PTE当作资源来管理。当内核需要一段虚拟地址来映射物理页面时,它可以使用系统PTE区域中的地址。

    1.2  进程和线程管理

    进程定义了一个执行环境,包括私有的地址空间、一个句柄表、以及一个安全环境。

    线程则是一个控制流,有自己的调用栈,记录了它的执行历史。

    Windows 中的进程和线程的关系:

     

    1.3  中断和异常

    中断(interrupt) 是处理器与外部设备打交道的重要途经; 异常(exception) 是处理器的正常指令流在执行过程中产生的一下特殊事件,需要紧急处理才能继续原来的指令流。

    Intel x86 利用IDT(Interrupt Descriptor Table,中断描述符表),将中断或异常与一个处理服务例程关联,一旦发生中断或异常,该服务例程即被执行。

    Windows 允许设备驱动程序为特定的中断向量添加它的中断服务例程(ISR ,Interrupt Service Routine)。

    Windows 规定了一套软件中断优先级,称为中断请求级别(IROL,Interrupt Request Level),Windows 使用0~31来表示IRQL,数值越大,优先级越高。

    IRQL=0 表示普通线程,称为PASSIVE_LEVEL或被动级别;

    IRQL=1 表示异步过程调用(APC ,Asynchronous Procedure Call),称为APC_LEVEL;

    IRQL=2 表示延迟过程调用(DPC,Deferred Procedure Call),称为DISPATCH/DPC或者DISPATCH_LEVEL。

    3~26是设备IRQL,27~31是一些特殊的硬件中断。

    内核模式异常处理:异常分发器首先将异常交给内核调试器来处理,若不存在内核调试器或者内核调试器没有处理该异常,则尝试分发到一个基于帧的异常处理器(frame-based exception handler)。

    用户模式异常处理:异常分发器首先判断进程的调试端口是否有效,若有效,则发送消息至调试端口,然后等待应答,否则将异常交给内核调试器。如果异常仍未得到处理,则将控制转到用户模式下,由用户模式的异常分发器(ntdll.dll 中的KeUserExceptionDispatcher 函数)寻找一个基于帧的异常处理器。如果在用户模式下该异常仍为得到处理,则控制再次回到内核模式下。这次,内核模式的异常处理器首先尝试调试端口,若异常仍未被处理,则再尝试当前进程的异常端口。连接进程异常端口的是Windows子系统,因此,Windows子系统在异常处理的最后时刻由机会处理它所属进程的异常。如果它也不能处理,则该进程被终止。

    1.4  同步

    同步是为了解决并发访问。windows操作系统提供多种多种同步机制,根据执行环境中的IRQL值大于APC_LEVEL或者等于PASSIVE_LEVEL,可以将同步分为“不依赖线程调度的同步机制”和“基于线程调度的同步机制”两类。

    当IRQL大于APC_LEVEL时,Windows提供了一些方便的同步保护机制,供内核自身或设备驱动程序使用。IRQL大于APC_LEVEL时典型的同步机制如下:

    1. 提升IRQL。根据IRQL的定义,当处理器在某个IRQL上运行时,他只能被更高IRQL的中断打断,意味着,不用担心低IRQL的过程会抢占掉当前执行过程。这种做法在单处理器系统上可以做的更好,但是多处理器系统上,提升IRQL还不够,往往还需要其他同步机制(如自旋锁)。
    2. 互锁操作。利用Intel X86处理器提供的lock指令前缀,可以实现基于整数操作的保护,确保一个操作以原子方式进行。这种操作只能在小粒度数据上(可以达到64位内存单元)进行同步保护,而且是指令级保护。
    3. 无锁的单链表。windows利用64位互锁指令来实现无锁的单链表数据结构,支持多核,多处理器环境。
    4. 自旋锁(spin lock)。自旋锁本身是一种忙等。为了获得自旋锁,处理器持续监测锁状态。直至可用。此时即使有线程调度执行,APC排队,也没机会执行。所以自旋锁通常用于IRQL大于等于DISPATCH_LEVEL的代码。windows还提供一些自旋锁的扩展:执行体自旋锁(支持共享和独占的语义),排队自旋锁(queued spin lock)和栈内排队自旋锁(in-stack queued spin lock)。

    IRQL值等于PASSIVE_LEVEL线程之间的同步。

    windows定义了统一的机制支持各种线程同步原语:分发器对象(dispatcher object),其数据结构头部为DISPATCH_HEADER。

    windows Server 2003 实现了以下分发器对象:

    1. 事件(event):分为事件通知对象和事件同步对象,区别在于,当事件对象变成有信号状态时,是解除所有正在等待该对象的线程,还是只唤醒第一个以WaitAny方式等待该对象的线程。
    2. 突变体(mutant):突变体是Windows内核中互斥体的实现,如果突变体对象为无信号状态,则一定被某个线程“占有”,否则可满足任何一个线程的等待要求。突变体记录了“所有者”线程信息,通常可用于实现“锁”。
    3. 信号量(semaphore):信号量有一个计数器,用于控制最多可以有多少个线程共享一个资源。当计数器达到预定最大值时,信号量将变成无信号状态。
    4. 队列对象(queue):这是Windows内核中用于支持线程池的机制,其数据结构为KQUEUE,通常可以用于控制一项任务的并发程度。它的典型用途是I/O完成端口。
    5. 进程对象:Windows的内核进程对象本身也是一个分发器对象,当进程对象被初始创建时,为无信号状态,进程结束为有信号状态。
    6. 线程对象:同理如上。
    7. 定时器对象:定时器对象既是一个像DPC一样的例程,也是个可等待的分发器对象,当设定的时间到期时,定时器变成有信号状态。
    8. 门对象(gate object):在windows中,门对象和门等待时线程调度器的特殊支持,它绕过了以上分发器对象同步过程中的很多步骤。唤醒一个门等待的线程几乎是以最快捷的方式进行,线程调度器会直接将线程插入到某个处理器的就绪队列中。

    除此之外,还有更丰富的同步机制:包括,快速互斥体(fast mutex),守护互斥体(guarded mutex),执行体资源(executive resource)和推锁(push lock)。

    更多相关内容
  • Windows内核源码WRK

    2019-03-18 22:57:18
    WRK 是微软于 2006 年针对教育和学术界开放的 Windows 内核的部分源码, WRK(Windows Research Kernel)也就是 Windows 研究内核, 在 WRK 中不仅仅只提供了 Windows 内核模块的部分代码,其还提供了编译工具, 也...
  • 什么是Windows内核编程

    千次阅读 2018-11-09 02:54:38
    什么是Windows内核编程

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

    也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                   
    什么是Windows内核编程?

    上述文字由《天书夜读:从汇编语言到Windows内核编程》作者  谭文  提供

        Linux的内核编程大家都是比较熟悉的。而Windows内核编程则不大为一般读者所熟悉。常常有这样的问题:

        “你又没有Windows的代码,你如何搞内核编程?”

        “除了微软的人,难道还有人做Windows内核吗?”

        “Windows内核编程有用吗?”

        其实Windows内核编程不但有用,而且常用。很多我们每天都使用的软件,就毫无疑问的使用了Windows内核编程的技术。最典型的就是实时监控的杀毒软件。此外还有防火墙、虚拟光驱、以及90%的驱动程序。这些程序的有一个共同的特点,他们的一部分组件,是作为Windows的一部分,能对Windows上运行的所有的应用程序起作用。

        因此内核编程的应用,往往给传统软件带来更强的功能,实现技术上的飞跃。

        举个例子。我们常常听说,对文件进行加密,可以使文档更加安全。对文件加密并不需要任何内核组件。我们可以写一个应用程序,读入文件,加密数据,然后重写为一个加密文件。解密也可以同样如此。

        但是实际上这并不满足一般的用户需求。对一个公司的员工来说,那些“重要的文档”很可能就是每天工作所用的文件。想象一下,他必须要每天从服务器上下载加密的文件,然后用解密工具解密。然后用Office开始工作。工作完毕后,用加密工具加密,再上传,然后删除工作文档。且不说大部分时间文档是以解密的方式保存在硬盘上的不安全性,这个工作流程是可以接受的吗?没有人会接受的。

        比较“人性化”的方式就是让Office可以直接打开已经加密的文档。保存的时候,直接就保存成加密的文档。硬盘上,这个文档始终是加密的。而且对合法的用户透明。对非法的用户,则只能看见密文,从而无法编辑也无法阅读。而且也不仅仅Office,还有AutoCAD、Visual Studio、Photoshop等等用户可能用于编辑机密文件的所有的工具。这是可以实现的吗?如果我们不能去修改Office和其他的工作软件。

        这当然是可以实现的。既然我们编写Windows内核程序,当然可以让Windows的文件系统从硬盘读取文件的时候,对特定的进程进行特别的解密。等这些软件读取到数据的时候,它们读到的已经是正常的数据了。这个过程和实时扫描病毒的原理是一样的,使用一个文件过滤驱动程序。这就是读者可能已经听到过的文件透明加密技术。

        在和《天书夜读:从汇编语言到Windows内核编程》一书同一系列的《寒江独钓——Windows内核编程与信息安全》(预计明年出版)中,对键盘过滤、硬盘过滤、文件过滤、网络过滤等安全相关的内核编程,都有详尽的讲解和例子。

        内核编程的另一个特点是:这些代码运行在R0级。R0级别是最高特权级别。对CPU有完全控制的能力。这非常的适合一些安全软件,当然也适合做破坏的工作。因为内核程序有最高(也就是根)权限,这样的技术在安全领域(或者破坏领域)被称为rootkit技术。rootkit技术是当前安全领域最热门的技术之一。

        许多病毒使用了rootkit技术。用来隐藏病毒文件,窃取密码、发送攻击包等等。rootkit病毒感染后极难清除,在感染前提前防范是最有效的办法。

        Windows内核确实没有公开源代码。但是MS提供Windows内核程序的开发包:WDK。WDK实际上主要用于开发驱动程序。而驱动程序基本上都是内核程序。WDK提供的头文件以及部分源代码,实际上就是Windows内核的代码的一部分。有部分驱动程序(比如FAT32文件系统)的代码是完全公开的。我们也可以在这里看到Windows内核开发者的代码风格。同时,微软也提供了所有Windows版本的符号表在网上供研究者下载。并提供了功能无比强大的调试器WinDbg。有了它们,你就可以轻松的调试Windows内核了。无论是你自己写的代码的部分,还是Windows内核开发者们编写的部分。虽然看到的是汇编语言,但是函数名和全局变量名都是存在的。而且,所有的这些(WDK、WinDBG,符号表)都是免费的。

        那您还在等什么呢?欢迎进入Windows内核编程的世界!

    13164110_200810161135191.jpg本书购买地址:http://www.china-pub.com/209258


    【书 名】天书夜读:从汇编语言到Windows内核编程
    【作 者】 谭文,邵坚磊 著
    【ISBN】 978-7-121-07339-7
    【出版社】 电子工业出版社
    【出版日期】2008年12月
    【宣传语】
    从貌似天书的汇编代码中,一探Windows底层的核心实现。
    在开发中出现的问题,能从Windows自身找到答案!
                

    给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

    这里写图片描述
    展开全文
  • Windows内核漏洞 简介 Windows内核漏洞 进攻清单 #安全公告#KB#说明#操作系统 [Windows后台智能传输服务特权提升漏洞](Windows 7/8/10,2008/2012/2016/2019) [Microsoft Server Message Block 3.1.1(SMBv3...
  • windows内核驱动条件下文件的创建、读、写等功能实现源码。适用于驱动调试和运行观察的日志打印输出,比Windbg和reaceview更方便。
  • Windows内核原理与实现.rar
  • Windows内核安全与驱动开发(含CD光盘1张)》的前身是《天书夜读——从汇编语言到Windows内核编程》和《寒江独钓——Windows内核安全编程》。与Windows客户端安全软件开发相关的驱动程序开发是本书的主题。书中的...
  • windows内核编程

    2016-09-19 10:46:02
    windows内核下操作字符串
  • Windows内核安全与驱动开发完整的光盘代码,经典的驱动开发代码案例,如果触犯版权,请告知!
  • Linux 内核Windows 内核什么区别?

    千次阅读 多人点赞 2021-02-20 09:46:29
    对于服务器使用的操作系统基本上都是 Linux,而且内核源码也是开源的,任何人都可以下载,并增加自己的改动或功能,Linux 最大的魅力在于,全世界有非常多的技术大佬为它贡献代码。 这两个操作系统各有千秋,不分...

    微信搜索「小林coding」,更多图解系、网络文章等你来撩哦!

    Windows 和 Linux 可以说是我们比较常见的两款操作系统的。

    Windows 基本占领了电脑时代的市场,商业上取得了很大成就,但是它并不开源,所以要想接触源码得加入 Windows 的开发团队中。

    对于服务器使用的操作系统基本上都是 Linux,而且内核源码也是开源的,任何人都可以下载,并增加自己的改动或功能,Linux 最大的魅力在于,全世界有非常多的技术大佬为它贡献代码。

    这两个操作系统各有千秋,不分伯仲。

    操作系统核心的东西就是内核,这次我们就来看看,Linux 内核和 Windows 内核有什么区别?


    内核

    什么是内核呢?

    计算机是由各种外部硬件设备组成的,比如内存、cpu、硬盘等,如果每个应用都要和这些硬件设备对接通信协议,那这样太累了,所以这个中间人就由内核来负责,让内核作为应用连接硬件设备的桥梁,应用程序只需关心与内核交互,不用关心硬件的细节。

    内核

    内核有哪些能力呢?

    现代操作系统,内核一般会提供 4 个基本能力:

    • 管理进程、线程,决定哪个进程、线程使用 CPU,也就是进程调度的能力;
    • 管理内存,决定内存的分配和回收,也就是内存管理的能力;
    • 管理硬件设备,为进程与硬件设备之间提供通信能力,也就是硬件通信能力;
    • 提供系统调用,如果应用程序要运行更高权限运行的服务,那么就需要有系统调用,它是用户程序与操作系统之间的接口。

    内核是怎么工作的?

    内核具有很高的权限,可以控制 cpu、内存、硬盘等硬件,而应用程序具有的权限很小,因此大多数操作系统,把内存分成了两个区域:

    • 内核空间,这个内存空间只有内核程序可以访问;
    • 用户空间,这个内存空间专门给应用程序使用;

    用户空间的代码只能访问一个局部的内存空间,而内核空间的代码可以访问所有内存空间。因此,当程序使用用户空间时,我们常说该程序在用户态执行,而当程序使内核空间时,程序则在内核态执行。

    应用程序如果需要进入内核空间,就需要通过系统调用,下面来看看系统调用的过程:

    内核程序执行在内核态,用户程序执行在用户态。当应用程序使用系统调用时,会产生一个中断。发生中断后, CPU 会中断当前在执行的用户程序,转而跳转到中断处理程序,也就是开始执行内核程序。内核处理完后,主动触发中断,把 CPU 执行权限交回给用户程序,回到用户态继续工作。


    Linux 的设计

    Linux 的开山始祖是来自一位名叫 Linus Torvalds 的芬兰小伙子,他在 1991 年用 C 语言写出了第一版的 Linux 操作系统,那年他 22 岁。

    完成第一版 Linux 后,Linux Torvalds 就在网络上发布了 Linux 内核的源代码,每个人都可以免费下载和使用。

    Linux 内核设计的理念主要有这几个点:

    • MutiTask,多任务
    • SMP,对称多处理
    • ELF,可执行文件链接格式
    • Monolithic Kernel,宏内核
    MutiTask

    MutiTask 的意思是多任务,代表着 Linux 是一个多任务的操作系统。

    多任务意味着可以有多个任务同时执行,这里的「同时」可以是并发或并行:

    • 对于单核 CPU 时,可以让每个任务执行一小段时间,时间到就切换另外一个任务,从宏观角度看,一段时间内执行了多个任务,这被称为并发。
    • 对于多核 CPU 时,多个任务可以同时被不同核心的 CPU 同时执行,这被称为并行。

    SMP

    SMP 的意思是对称多处理,代表着每个 CPU 的地位是相等的,对资源的使用权限也是相同的,多个 CPU 共享同一个内存,每个 CPU 都可以访问完整的内存和硬件资源。

    这个特点决定了 Linux 操作系统不会有某个 CPU 单独服务应用程序或内核程序,而是每个程序都可以被分配到任意一个 CPU 上被执行。

    ELF

    ELF 的意思是可执行文件链接格式,它是 Linux 操作系统中可执行文件的存储格式,你可以从下图看到它的结构:

    ELF 文件格式

    ELF 把文件分成了一个个分段,每一个段都有自己的作用,具体每个段的作用这里我就不详细说明了,感兴趣的同学可以去看《程序员的自我修养——链接、装载和库》这本书。

    另外,ELF 文件有两种索引,Program header table 中记录了「运行时」所需的段,而 Section header table 记录了二进制文件中各个「段的首地址」。

    那 ELF 文件怎么生成的呢?

    我们编写的代码,首先通过「编译器」编译成汇编代码,接着通过「汇编器」变成目标代码,也就是目标文件,最后通过「链接器」把多个目标文件以及调用的各种函数库链接起来,形成一个可执行文件,也就是 ELF 文件。

    那 ELF 文件是怎么被执行的呢?

    执行 ELF 文件的时候,会通过「装载器」把 ELF 文件装载到内存里,CPU 读取内存中的指令和数据,于是程序就被执行起来了。

    Monolithic Kernel

    Monolithic Kernel 的意思是宏内核,Linux 内核架构就是宏内核,意味着 Linux 的内核是一个完整的可执行程序,且拥有最高的权限。

    宏内核的特征是系统内核的所有模块,比如进程调度、内存管理、文件系统、设备驱动等,都运行在内核态。

    不过,Linux 也实现了动态加载内核模块的功能,例如大部分设备驱动是以可加载模块的形式存在的,与内核其他模块解藕,让驱动开发和驱动加载更为方便、灵活。

    分别为宏内核、微内核、混合内核的操作系统结构

    与宏内核相反的是微内核,微内核架构的内核只保留最基本的能力,比如进程调度、虚拟机内存、中断等,把一些应用放到了用户空间,比如驱动程序、文件系统等。这样服务与服务之间是隔离的,单个服务出现故障或者完全攻击,也不会导致整个操作系统挂掉,提高了操作系统的稳定性和可靠性。

    微内核内核功能少,可移植性高,相比宏内核有一点不好的地方在于,由于驱动程序不在内核中,而且驱动程序一般会频繁调用底层能力的,于是驱动和硬件设备交互就需要频繁切换到内核态,这样会带来性能损耗。华为的鸿蒙操作系统的内核架构就是微内核。

    还有一种内核叫混合类型内核,它的架构有点像微内核,内核里面会有一个最小版本的内核,然后其他模块会在这个基础上搭建,然后实现的时候会跟宏内核类似,也就是把整个内核做成一个完整的程序,大部分服务都在内核中,这就像是宏内核的方式包裹着一个微内核。


    Windows 设计

    当今 Windows 7、Windows 10 使用的内核叫 Windows NT,NT 全称叫 New Technology。

    下图是 Windows NT 的结构图片:

    Windows NT 的结构

    Windows 和 Linux 一样,同样支持 MutiTask 和 SMP,但不同的是,Window 的内核设计是混合型内核,在上图你可以看到内核中有一个 MicroKernel 模块,这个就是最小版本的内核,而整个内核实现是一个完整的程序,含有非常多模块。

    Windows 的可执行文件的格式与 Linux 也不同,所以这两个系统的可执行文件是不可以在对方上运行的。

    Windows 的可执行文件格式叫 PE,称为可移植执行文件,扩展名通常是.exe.dll.sys等。

    PE 的结构你可以从下图中看到,它与 ELF 结构有一点相似。

    PE 文件结构


    总结

    对于内核的架构一般有这三种类型:

    • 宏内核,包含多个模块,整个内核像一个完整的程序;
    • 微内核,有一个最小版本的内核,一些模块和服务则由用户态管理;
    • 混合内核,是宏内核和微内核的结合体,内核中抽象出了微内核的概念,也就是内核中会有一个小型的内核,其他模块就在这个基础上搭建,整个内核是个完整的程序;

    Linux 的内核设计是采用了宏内核,Window 的内核设计则是采用了混合内核。

    这两个操作系统的可执行文件格式也不一样, Linux 可执行文件格式叫作 ELF,Windows 可执行文件格式叫作 PE。


    巨人的肩膀
    1. https://en.wikipedia.org/wiki/Monolithic_kernel
    2. https://en.wikipedia.org/wiki/Executable_and_Linkable_Format
    3. https://en.wikipedia.org/wiki/Windows_NT
    展开全文
  • 完整的零基础学习windows下驱动编程(内附源码)。内核编程环境配置;串口过滤、键盘过滤;磁盘虚拟;磁盘过滤;文件系统过滤与监控;文件系统透明加密;文件系统微过滤;网络传输层过滤;NDIS协议驱动;NDIS小端口...
  •  首先让我们来了解一下什么是内核对象。内核对象通过API来创建,每个内核对象是一个数据结构,它对应一块内存,由操作系统内核分配,并且只能由操作系统内核访问。在此数据结构中少数成员如安全描述符和使用计数是...
  • 自己收集的,Windows内核安全与驱动开发 PDF+光盘源码
  • Windows 内核安全 驱动开发 pdf 完整目录 标签 Windows 内核安全 驱动开发 pdf 完整目录 标签
  • Windows-Dirver-SourceCode Windows内核安全与驱动开发源代码
  • 本书是《天书夜读》、《寒江独钓》第二版书稿重新编辑后,整合改名而成,因此实际上也是《天》《寒》的第二版合体!细致的讲解,一步步带领你从驱动初学者,迈入驱动高手之路!附带书本CD源码!
  • Windows内核安全与驱动开发(随书光盘)(随书源码)
  • 如果读者从未接触过Windows内核编程,本部分将指导读者开始Windows内核编程,学会使用WDK,并熟悉内核编程的习惯与方法。  第4章 内核字符串与内存 38  4.1 字符串的处理 39  4.1.1 使用字符串结构 39  4.1.2 ...
  • 资源名称:Windows内核实现的34个关键问题资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
  • 寒江独钓-Windows内核安全编程(完整版)--源码 寒江独钓-Windows内核安全编程(完整版)--源码
  • Windows内核设计思想 完整版.pdf
  • windows内核开发.pdf

    2020-05-14 13:25:33
    windows内核驱动开发,原书的环境是Visual Studio 2005+Windows Vista,所以在编译的时候需要设置相应的SDK
  • Windows内核安全与驱动开发(带书签):本书的前身是《天书夜读——从汇编语言到Windows内核编程》和《寒江独钓——Windows内核安全编程》。与Windows客户端安全软件开发相关的驱动程序开发是本书的主题。书中的程序...
  • 寒江独钓-Windows内核安全编程(完整版)
  • windows内核原理与实现》是一本比较好的学习系操作系统的工作原理的一本书,值得参考。
  • Windows内核安全与驱动开发光盘源码
  • windows内核安全与驱动开发 谭文的书 的随书光盘内的所有资源+代码。 是从我的书的光盘里拷贝出来的。所以这个资源是完整的。可信赖的。欢迎使用.
  • 详尽分析windows内核源码, 本文结合《Windows 内核情景分析》(毛德操著)、《软件调试》(张银奎著)、《Windows 核心编程》、《寒江独 钓-Windows 内核安全编程》、《Windows PE 权威指南》、《C++反汇编与逆向...
  • windows内核情景分析

    2018-12-26 21:54:21
    windows内核情景分析,毛德操老师作品,喜欢的就下载吧!!
  • Windows内核安全与驱动开发 随书代码ZIP

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 308,710
精华内容 123,484
关键字:

windows内核是什么