精华内容
下载资源
问答
  • 什么是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

    这里写图片描述
    展开全文
  • 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内核对象这一个概念,例如Mutex就是一个内核对象,我想问一下他与普通的类创建的对象有什么区别
  • 转自 拉钩教育 重学操作系统 林䭽 操作系统内核:Linux 内核Windows 内核什么区别? 专栏 我在这个文章基础上自己整理了一下留着自己未来去学习. 正文 Windows 和 Linux 当今两款最主流的服务器操作系统产品...

    转载

    转自 拉钩教育 重学操作系统 林䭽 操作系统内核:Linux 内核和 Windows 内核有什么区别? 专栏

    我在这个文章基础上自己整理了一下留着自己未来去学习.

    正文

    Windows 和 Linux 是当今两款最主流的服务器操作系统产品,都拥有广泛的用户和信徒。Windows 通过强大的商业运作,驱动了大量优秀人才加盟到它的开发团队中;Linux 通过社区产品的魅力吸引着世界上大量的顶级程序员为他贡献源代码、解答问题。两者在服务器市场上竞争激烈,不分伯仲,但也存在互相扶持的关系。

    我觉得,两个操作系统各有千秋。每次学习两个操作系统的技术知识,都让我切实地感受到编程真的是一门艺术,而学习编程就像是在探索艺术。

    什么是内核?

    说到操作系统,就必须说内核。内核是操作系统中应用连接硬件设备的桥梁。

    内核的能力

    对于一个现代的操作系统来说,它的内核至少应该提供以下 4 种基本能力:

    1. 管理进程、线程(决定哪个进程、线程使用 CPU?);
    2. 管理内存(决定内存用来做什么?);
    3. 连接硬件设备(为进程、和设备间提供通信能力);
    4. 提供系统调用(接收进程发送来的系统调用)。

    操作系统分层

    从上面 4 种能力来看操作系统和内核之间的关系,通常可以把操作系统分成 3 层,最底层的硬件设备抽象、中间的内核和最上层的应用。
    在这里插入图片描述

    内核是如何工作的?

    为了帮助你理解什么是内核,请你先思考一个问题:进程和内核的关系,是不是像浏览器请求服务端服务?

    内核权限非常高,它可以管理进程、可以直接访问所有的内存,因此确实需要和进程之间有一定的隔离。这个隔离用类似请求/响应的模型,非常符合常理。
    在这里插入图片描述
    但不同的是在浏览器、服务端模型中,浏览器和服务端是用不同的机器在执行,因此不需要共享一个 CPU。但是在进程调用内核的过程中,这里是存在资源共享的。

    1. 比如,一个机器有 4 个CPU,不可能让内核用一个 CPU,其他进程用剩下的 CPU。这样太浪费资源了。
    2. 再比如,进程向内核请求 100M 的内存,内核把 100M 的数据传回去。 这个模型不可行,因为传输太慢了。

    所以,这里多数操作系统的设计都遵循一个原则:进程向内核发起一个请求,然后将 CPU 执行权限让出给内核。内核接手 CPU 执行权限,然后完成请求,再转让出 CPU 执行权限给调用进程。

    Linux 的设计

    Linux 操作系统第一版是1991 年林纳斯.托 瓦兹(一个芬兰的小伙子,当时 22 岁)用 C 语音写的。 写完之后他在网络上发布了 Linux 内核的源代码。又经过了 3 年的努力,在 1994 年发布了完整的核心 Version 1.0。

    说到 Linux 内核设计,这里有很多有意思的名词。大多数听起来复杂、专业,但是理解起来其实很简单。接下来我们一一讨论。

    Multitask and SMP(Symmetric multiprocessing)

    MultiTask 指多任务,Linux 是一个多任务的操作系统。多任务就是多个任务可以同时执行,这里的“同时”并不是要求并发,而是在一段时间内可以执行多个任务。当然 Linux 支持并发。

    SMP 指对称多处理。其实是说 Linux 下每个处理器的地位是相等的,内存对多个处理器来说是共享的,每个处理器都可以访问完整的内存和硬件资源。 这个特点决定了在 Linux 上不会存在一个特定的处理器处理用户程序或者内核程序,它们可以被分配到任何一个处理器上执行。

    ELF(Executable and Linkable Format)

    在这里插入图片描述
    这个名词翻译过来叫作可执行文件链接格式。这是一种从 Unix 继承而来的可执行文件的存储格式。我们可以看到 ELF 中把文件分成了一个个分段(Segment),每个段都有自己的作用。如果想要深入了解这块知识,会涉及部分编译原理的知识,

    Monolithic Kernel

    这个名词翻译过来就是宏内核,宏内核反义词就是 Microkernel ,微内核的意思。Linux 是宏内核架构,这说明 Linxu 的内核是一个完整的可执行程序,且内核用最高权限来运行。宏内核的特点就是有很多程序会打包在内核中,比如,文件系统、驱动、内存管理等。当然这并不是说,每次安装驱动都需要重新编译内核,现在 Linux 也可以动态加载内核模块。所以哪些模块在内核层,哪些模块在用户层,这是一种系统层的拆分,并不是很强的物理隔离。
    与宏内核对应,接下来说说微内核,内核只保留最基本的能力。比如进程调度、虚拟内存、中断。多数应用,甚至包括驱动程序、文件系统,是在用户空间管理的。
    在这里插入图片描述
    学到这里,你可能会问:在内核层和在用户层有什么区别吗?

    感觉分层其实差不多。 我这里说一个很大的区别,比如说驱动程序是需要频繁调用底层能力的,如果在内核中,性能肯定会好很多。对于微内核设计,驱动在内核外,驱动和硬件设备交互就需要频繁做内核态的切换。

    当然微内核也有它的好处,比如说微内核体积更小、可移植性更强。不过我认为,随着计算能力、存储技术越来越发达,体积小、安装快已经不能算是一个很大的优势了。现在更重要的是如何有效利用硬件设备的性能。

    之所以这么思考,也可能因为我是带着现代的目光回望当时人们对内核的评判,事实上,当时 Linux 团队也因此争论过很长一段时间。 但是我觉得历史往往是螺旋上升的,说不定将来性能发展到了一个新的阶段,像微内核的灵活性、可以提供强大的抽象能力这样的特点,又重新受到人们的重视。

    还有一种就是混合类型内核。 混合类型的特点就是架构像微内核,内核中会有一个最小版本的内核,其他功能会在这个能力上搭建。但是实现的时候,是用宏内核的方式实现的,就是内核被做成了一个完整的程序,大部分功能都包含在内核中。就是在宏内核之内有抽象出了一个微内核。

    上面我们大体介绍了内核几个重要的特性,有关进程、内存、虚拟化等特性,我们会在后续章节逐步讨论。

    Window 设计

    接下来我们说说 Windows 的设计,Windows 和 Linux 的设计有很大程度的相似性。Windows也有内核,它的内核是 C/C++ 写的。准确地说,Windows 有两个内核版本。一个是早期的Windows 9x 内核,早期的 Win95, Win98 都是这个内核。我们今天用的 Windows 7, Windows 10 是另一个内核,叫作 Windows NT。NT 指的是 New Technology。接下来我们讨论的都是 NT 版本的内核。

    下面我找到一张 Windows 内核架构的图片给你一个直观感受。
    在这里插入图片描述
    Windows 同样支持 Multitask 和 SMP(对称多处理)。Windows 的内核设计属于混合类型。你可以看到内核中有一个 Microkernel 模块。而整个内核实现又像宏内核一样,含有的能力非常多,是一个完整的整体。

    Windows 下也有自己的可执行文件格式,这个格式叫作 Portable Executable(PE),也就是可移植执行文件,扩展名通常是.exe、.dll、.sys等。

    PE 文件的结构和 ELF 结构有很多相通的地方,我找到了一张图片帮助你更直观地理解。
    在这里插入图片描述

    展开全文
  • 如果您使用JNA,请考虑调用MoveFileW直接-它省去了在Unicode和ANSI调用之间进行选择时必须提供配置信息的麻烦。import java.io.*;...public class Ren {static interface Kernel32 extends Library {public static ...

    如果您使用JNA,请考虑调用

    MoveFileW

    直接-它省去了在Unicode和ANSI调用之间进行选择时必须提供配置信息的麻烦。

    import java.io.*;

    import com.sun.jna.*;

    public class Ren {

    static interface Kernel32 extends Library {

    public static Kernel32 INSTANCE = (Kernel32) Native

    .loadLibrary("Kernel32", Kernel32.class);

    public static int FORMAT_MESSAGE_FROM_SYSTEM = 4096;

    public static int FORMAT_MESSAGE_IGNORE_INSERTS = 512;

    public boolean MoveFileW(WString lpExistingFileName,

    WString lpNewFileName);

    public int GetLastError();

    public int FormatMessageW(int dwFlags,

    Pointer lpSource, int dwMessageId,

    int dwLanguageId, char[] lpBuffer, int nSize,

    Pointer Arguments);

    }

    public static String getLastError() {

    int dwMessageId = Kernel32.INSTANCE.GetLastError();

    char[] lpBuffer = new char[1024];

    int lenW = Kernel32.INSTANCE.FormatMessageW(

    Kernel32.FORMAT_MESSAGE_FROM_SYSTEM

    | Kernel32.FORMAT_MESSAGE_IGNORE_INSERTS, null,

    dwMessageId, 0, lpBuffer, lpBuffer.length, null);

    return new String(lpBuffer, 0, lenW);

    }

    public static void main(String[] args) throws IOException {

    String from = ".\\from.txt";

    String to = ".\\to.txt";

    new FileOutputStream(from).close();

    if (!Kernel32.INSTANCE.MoveFileW(new WString(from),

    new WString(to))) {

    throw new IOException(getLastError());

    }

    }

    }

    编辑:我在检查代码后编辑了我的答案-我错认为在签名中使用char[]-最好使用

    WString

    .

    展开全文
  • 内核是操作系统中应用连接硬件设备的桥梁。 1.1 内核的能力 对于一个现代的操作系统来说,它的内核至少应该提供以下 4 种基本能力: 管理进程、线程(决定哪个进程、线程使用 CPU); 管理内存(决定内存用来做...
  • windows内核对象

    2011-09-25 14:30:36
    Index 内核对象进程的内核对象句柄表跨越进程边界共享内核对象 ...内核对象是windows内核分配的一个内存块,该内存块一种数据结构,存储了该对象的各种信息。 2.内核对象的操作权限 内
  • Windows内核对象

    2017-06-25 16:17:44
    该表的第一项就是进程自己的句柄,这也什么你调用GetCurrentProcess()总是返回0x7FFFFFFF原因。  简单地说,Handle就是一种用来"间接"代表一个内核对象的整数值。你可以在程序中使用handle来代表你想要操作的...
  • 三、打个比方: 当你想要去实现隐藏线程的时候你有可能在干什么?做一个工具?或者说学习?通过隐藏线程可以更深入理解windows内部原理?进程与线程之间的关系?一个正常进程里面包含恶意线程?这一个很棒的...
  • Windows内核研究总结

    千次阅读 2016-02-05 11:07:22
    了解了windows的体系结构才知道reactos到底要干什么,以及如何干,因为reactos的目标兼容windows。 下面是windows的体系结构: 这整个windows的体系结构的总览。从图上可以看出系统被分成内核模式和用户...
  • 微软Windows操作系统在复杂负荷情况下的性能落后于Linux,这已公认的事实。...一位微软Windows NT内核开发者承认,Windows内核与Linux内核之间的性能差距正日益拉大。他在Hacker News上匿 名 发 帖(...
  • windows内核Api的学习

    千次阅读 2015-07-02 16:50:18
    windows内核api就是ntoskrnl.exe导出的函数。我们可以跟调用应用层的api一样,调用内核api。不过内核api需要注意的,如果函数导出了,并且函数文档化(也就是可以直接在msdn上搜索到)。ExFreePool函数导出,并且...
  •  好久没有写博客了,最近抽时间把...  其实个人觉着这根本,好好写个程序你为什么要隐藏自己的进程、线程?为啥?无非你不想让别人知道,或者不该让别人知道。windwos下有很多未公开的东西,这隐藏。面对对象...
  • windows内核窥探

    2014-09-17 19:43:00
    本人只所以将自己的学习笔记与大家分享,一让自己更深入的理解windows,再就是有什么疏漏之处,望大家指正!!来吧,开始我们的windows之旅! 一,windows2000体系结构(1)系统模型 在大多数多用户的OS中,用户程序和...
  • 这一方面因为Windows内核并不导出这些函数 另一方面,这些函数调用时需要系统调用框架/自陷框架,而从内核直接调用显然没有这样一个框架 所以这就是为什么在内核中只能通过ZwReadFile一类函数进行系统调用的...
  • 但是想完成一些特殊的功能,如内核级隐藏进程等,Windows的这些框架就没什么用处了,程序员就需要对Windows内核有全面的了解,通过直接修改Windows内核来实现这些目的。往往黑客对这种技术乐此不疲,通过修改Windows...
  • UOS的最终命名为“统一操作系统”,这由统信软件开发的一款基于Linux内核的操作系统,分为统一桌面操作系统和统一服务器操作系统。一桌面应用场景为主,支持包括龙芯、鲲鹏等国产芯片的笔记本、台式机、一体机和...
  • windows内核对象

    2011-06-23 23:34:00
    有哪些内核对象?... 什么是内核对象?内核对象只是内核分配的一个内存块,并且只能由该内核访问。该内存块一种数据结构,它的成员负责维护该对象的各种信息。有些数据成员(如安全性描述符、使用
  • 如果您使用JNA,请考虑直接调用MoveFileW - 它不必提供配置信息以在Unicode和ANSI调用之间进行选择。import java.io.*;...public class Ren {static interface Kernel32 extends Library {public static Kernel32 ...
  • WINDOWS内核对象

    2007-02-11 23:11:00
    首先说一下什么是内核对象,之所以叫内核对象就是这个对象内核创建,由内核维护,不属于某一个进程,而是属于整个系统的。比如互斥对象,文件印象对象等等。。内核对象有两个比较重要的特性: 每个内核对象都不...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,070
精华内容 828
关键字:

windows内核是什么