Ring0级的探索

内核基础知识介绍:

  内核概述:Interx86系列处理器使用“环”的概念实施访问控制,共4个权限级别。一般情况下,操作系统的内核程序、驱动程序等都在Ring0级别上运行。研究内核漏洞,需要首先掌握一些内核基础知识、例如内核驱动程序的开发、编译和运行,以及内核中重要的数据结构等。

驱动编写之Hello World

代码,保存为Helloworld.c 路径 D:\0day\HelloWorld\helloworld.c

#include <ntddk.h>

#define DEVICE_NAME L"\\Device\\HelloWorld"
#define DEVICE_LINK L"\\DosDevices\\HelloWorld"
// 创建的设备对象指针
PDEVICE_OBJECT g_DeviceObject;

// 驱动卸载函数
VOID DriverUnload(IN PDRIVER_OBJECT driverObject){
    // 什么都不用做,打印一句话,helloword就这套路
    KdPrint(("DriverUnload: 88!\n"));
}
// 驱动派遣例程函数
NTSTATUS DrvDispatch(IN PDEVICE_OBJECT driverObject, IN PIRP pIrp){
    KdPrint(("Enter DrvDispatch\n"));
    // 设置IRP的完成状态
    pIrp->IoStatus.Status = STATUS_SUCCESS;
    // 设置IRP的操作字节数
    pIrp->IoStatus.Information = 0;
    // 完成IRP处理
    IoCompleteRequest(pIrp, IO_NO_INCREMENT);
    return STATUS_SUCCESS;
}
// 驱动入口函数(相当于main函数)
NTSTATUS DriverEntry(IN PDRIVER_OBJECT driverObject, IN PUNICODE_STRING registryPath){
    NTSTATUS ntStatus;
    UNICODE_STRING devname;
    UNICODE_STRING symLinkName;
    int i;
    // 打印一句调试信息
    KdPrint(("DriverEntry: Hello world driver demo!"));
    // 设置该驱动对象的卸载函数
    //driverObject->DriverUnload = DriverUnload;
    // 创建设备
    RtlInitUnicodeString(&devname, DEVICE_NAME);
    ntStatus = IoCreateDevice(driverObject,
        0,
        &devname,
        FILE_DEVICE_UNKNOWN,
        0, TRUE,
        &g_DeviceObject);
    if (!NT_SUCCESS(ntStatus)) {
        return ntStatus;
    }
    // 创建符号链接
    RtlInitUnicodeString(&symLinkName, DEVICE_LINK);
    ntStatus = IoCreateSymbolicLink(&symLinkName, &devname);
    if (!NT_SUCCESS(ntStatus)){
        IoDeleteDevice(g_DeviceObject);
        return ntStatus;
    }
    // 设置该驱动对象的派遣例程函数
    for (i = 0; i < IRP_MJ_MAXIMUM_FUNCTION; i++){
        driverObject->MajorFunction[i] = DrvDispatch;
    }
    // 返回成功结果
    return STATUS_SUCCESS;
}

安装WDK

时间: 2024-12-22 23:39:45

Ring0级的探索的相关文章

【系统篇】从int 3探索Windows应用程序调试原理

探索调试器下断点的原理 在Windows上做开发的程序猿们都知道,x86架构处理器有一条特殊的指令——int 3,也就是机器码0xCC,用于调试所用,当程序执行到int 3的时候会中断到调试器,如果程序不处于调试状态则会弹出一个错误信息,之后程序就结束.使用VC开发程序时,在Debug版本的程序中,编译器会向函数栈帧中填充大量的0xCC,用于调试使用.因此,经常我们的程序发生缓冲区溢出时,会看到大量的“烫烫烫…”,这是因为“烫”的编码正是两个0xCC. 那么?为什么int 3可以让程序中断到调试

1.基础篇

1.WinAPI(应用程序编程接口)函数提供程序运行所需要的窗口管理.图形设备接口.内存服务等各项功能,这些函数以函数库的形式组织在一起.   2.DLL(动态链接)是用来调用Windows应用程序中的函数.   3.常用的Win32API函数 (1)hmemcpy函数:将内存中的一块数据拷贝到另一个地方. void hmemcpy(    void _huge *hpvDest,            //目的数据地址    const void _huge *hpvSource     //

《IBM BPM实战指南》读书笔记

理论 BPM不是一个IT术语,更不是因技术的发展而起源的,相反,BPM自始至终都是管理学的术语和概念.它关注的一直都是效率.成本.利润.质量等核心问题.BPM是一门学科和一种方法论,只是现代的企业管理已经越来越离不开IT技术手段,而BPM软件产品是一种构造工具,一种令人异常兴奋的工具,可以提供更快.更好.更便宜的解决方案.它将IT会话转变成业务语言,以解决IT长期存在的问题——业务与IT之间的沟通障碍,帮助企业改进效率,使得流程可视化.敏捷化,并帮助企业进行业务变革. BPM相关标准 BPEL(

确保准确资源量高效益开采矿山Dassault Systemes GEOVIA Minex 6.5

DICAD Strakon Premium 2016 SP1 Multilanguage楼梯建模三维软件 2016中用于楼梯建模的三维楼梯模块,使用各种各样的扭曲的方法创建的L型或U型楼梯将会是一个完 全的新功能.楼梯编辑窗口中随后的调整和更正,会在参数化的3D楼梯模型中自动被模拟.“楼梯规划” 模块将会生成包括尺寸的另外命名的施工图.3D建筑构件的输入功能也得到的改进,有利于建筑构件的自 由结合.新的扫掠功能,新的楼梯模块.QQ:16264558   电话TEL:13963782271    

加解密入门基础知识

很多人都想学习解密,这东西刚入门时会让人沉迷进去,可以饭不吃.觉不睡.出现这种现像,也许是解密满足了人们的猎奇心里吧.但掌握这方面技术,对自身的 提高确实有好处.可以通过跟踪软件,提高自己的调试技能,并且能了解他人程序思路,使自己写出更好的程序.研究解密技术有助于掌握一些系统底层知识,系统 底层知识绝对是构造起大型软件的坚实基础.许多程序发展,都经历了这一锻炼过程的. 而大多数人可能认为解密是一门高深的学问.造成这种原因是以前这方面 的技术资料缺乏,从而将“解密”这一技能“神”化了.初学者一般不

驱动框架理解

概述 API在某个头文件中定义,被封装在某个DLL中,而这个DLL会进一步被封装在ntdll.dll中(它里面的API叫native api),比如,ReadFile在ntdll.dll中就对应着ntReadFile;然后这个API会通过sysenter的方式进入内核层. 那么,比如对于CreateFile的执行参数,必须告知内核,而这些参数就被封装在IRP中.IRP是一个结构体,它封装了应用层传下的命令和数据. 驱动拿到IRP并进行处理,并把处理结果返回给应用层. 现在随意附加到一个进程当中,

进程隐藏的各种方法 以及分析比较以及实现链接

典型进程隐藏技术1  基于系统服务的进程隐藏技术在 W I N 9X 系列操作系统中, 系统进程列表中不能看到任何系统服务进程, 因此只需要将指定进程注册为系统服务就能够使该进程从系统进程列表中隐形 在win9x下用RegisterServiceProcess函数隐藏进程,NT架构下用不了 即win2000  xp等什么的用不了此方法. 2  基于API HOOK的进程隐藏技术API HOOK指的是通过特殊的编程手段截获WINDOWS系统调用的API函数,并将其丢弃或者进行替换. 通过APIHO

如何用Delphi开发网游外挂

1.动作式,所谓动作式,就是指用API发命令给窗口或API控制鼠标.键盘等,使游戏里的人物进行流动或者攻击,最早以前的"石器"外挂就是这种方式.2.本地修改式,这种外挂跟传统上的一些游戏修改器没有两样,做这种外挂在编程只需要对内存地址有一点认识并且掌握API就可以实现,"精灵"的外挂这是这种方式写成的,它的难点在于找到那些地址码,找地址一般地要借助于别人的工具,有的游戏还有双码校验,正正找起来会比较困难.3.木马式,这种外挂的目的是帮外挂制作者偷到用户的密码,做这种

逆向中静态分析工具——IDA初学者笔记

逆向中静态分析工具--IDA初学者笔记 //******************************************************************************//IDA初学者笔记 //******************************************************************************//作者:Cai//日期:2011-10-18//**********************************