zoukankan      html  css  js  c++  java
  • 基础知识

    1.windows主要系统组件

      1.对象管理器

      用来管理各种对象,包括文件,设备,注册表键值,进程,线程,事件,符号链接,互斥体,信号量。

      可以进行对象的创建和销毁,跟踪分配给每一个进程的资源,某对象的访问权限。

      通常对应的api是Ob开头的

       2. 内存管理器

      对内存进行分配与释放。支持内存映射文件,共享内存,写时复制。

      对应的ap以Mm开头

      3.进程线程管理器

       操作进程和线程的功能。

      以Ps开头的api

      4.I/O管理器

      负责用户层程序与设备驱动程序之间的交互。他们之间的交互主要通过IRP(I/O请求包)实现。

      以Io开头的api

      

      5.配置管理器

      主要用来管理注册表。

      驱动可以通过注册回调函数来获取注册表变化情况

      以Cm开头的api

      

      6.安全监视器

      windows通过acl判断哪些对象有哪些安全权限,确保操作没有违反安全策略

      以Se开头的api

    2.重要概念术语

      1.符号链接

      在内核中,虽然设备对象有名字,但是只能在内核中使用,用户层程序需要通过符号链接来对其访问

      

      2.IRQL

      请求中断级别。即处于某个级别的函数不能调用比其调用者级别更高的函数。反之可以。

      级别排序:PASSIVE_LEVEL < APC_LEVEL < DISPATCH_LEVEL < DIRQL

     

      3.IRP

      是I/O管理器与驱动进行通信的基础数据结构,当用户层程序发起I/O请求,I/O管理器创建并根据请求设置IRP的值,发送给目标驱动

      

    3. 重要数据结构及其常用字段

      

    typedef struct _DRIVER_OBJECT {
        PDEVICE_OBJECT DeviceObject;  //指向设备对象
        PDRIVER_EXTENSION DriverExtension; //指向设备拓展对象
        UNICODE_STRING DriverName;    //指向驱动名字
        PFAST_IO_DISPATCH FastIoDispatch;  //快速I/O函数入口
        PDRIVER_INITIALIZE DriverInit;    //指向驱动入口函数
        PDRIVER_UNLOAD DriverUnload;    //指向驱动卸载函数
        PDRIVER_DISPATCH MajorFunction[IRP_MJ_MAXIMUM_FUNCTION + 1]; //设置分发函数

       //... 还有其他一些不重要的字段
    } DRIVER_OBJECT;

    。。。。。

  • 相关阅读:
    Netty源码分析-ChannelPipeline事件传播
    Netty源码分析-NioEventLoop事件轮询
    Netty源码分析-ServerBootstrap启动过程
    Canal基本原理
    [Android]proguard重新编译和如何不混淆第三方jar包
    [Android]listview recycleview的复用问题
    [Android] android .keystore文件转x509pem工具
    [Android] android studio 2.0即时运行功能探秘
    大神都是有个起点的
    Python列表的用法和基本操作
  • 原文地址:https://www.cnblogs.com/freesec/p/7492294.html
Copyright © 2011-2022 走看看