• 微软原版系统

  • 一键重装系统

  • 纯净系统

  • 在线技术客服

魔法猪系统重装大师 一键在线制作启动 U 盘 PE 系统 用一键重装的魔法拯救失去灵魂的系统
当前位置:首页 > 教程 > 电脑教程

Delphi下编写驱动Ring0级别程序

时间:2015年04月02日 15:41:44    来源:魔法猪系统重装大师官网    人气:17682
前往Delphi专题

由于考虑到大家可能开发用户态的程序较多,但不见得有太多驱动的理解,所以今天尝试下从理论开始讲解。


首先说下,由于RP问题,最近重感冒,脑子有点昏,可能有些地方说的不是很清楚,如果有这种情况还望大家指出。
Ring0是什么?某种程度上说,Ring0就是内核,Ring3就是应用层,这是由Intel的x86处理器架构决定的,Intel处理器分为四个层,从Ring0到Ring3,大家可能有些疑惑了,我们为什么很少听到Ring1和Ring2这种说法呢?很简单,因为Intel设计了它,但现行的操作系统(简称OS)都没有采用,而仅仅是简单调用了Ring0和Ring3机制,分别用来存放操作系统和应用程序的数据,所以,我们也只提到了Ring0和Ring3。
驱动和Ring0有什么关系呢?驱动一旦被加载,就会运行在Ring0层,也就是和操作系统有了相同的权限,所以根本不需要我们去费尽心机在中断门或者调用门上面做手脚,大摇大摆加载进去就是了。而这个版块,除了提到驱动外,还有Rootkit,Rootkit从某种意义上来说,也是驱动的一种,只不过这种驱动针对性极强,专门HOOK关键函数进行隐藏。


那么,今天就以一个最基本的驱动作为结尾吧,实在抱歉只写了这么一点,一是头昏难受,二也不知道该怎么写下去,继续下去必定会涉及分页机制,但是这么讲必须要求读者对Win32汇编较为了解,如何让一个不怎么懂Win32汇编的读者看懂,也是需要考虑的内容之一。
unit driver;

interface

uses nt_status, ntoskrnl;

function _DriverEntry(DriverObject:PDriverObject;RegistryPath:PUnicodeString):NTSTATUS; stdcall;//定义入口点,注意那个下划线,语法

implementation

procedure DriverUnload(DriverObject:PDriverObject); stdcall;
begin
DbgPrint('DriverUnload');
end;

function _DriverEntry(DriverObject:PDriverObject;RegistryPath:PUnicodeString):NTSTATUS; stdcall;
begin

DbgPrint('Hello World');//驱动版的HelloWorld,DbgPrint相当于c语言中的Printf

DriverObject^.DriverUnload:=@DriverUnload;

Result:=STATUS_SUCCESS;//返回成功消息

end;

end.

Delphi,下,编写,驱动,Ring0,级别,程序,前往,
栏目:电脑教程 阅读:1000 2023/12/27
Win7教程 更多>>
U盘教程 更多>>
Win10教程 更多>>
魔法猪学院 更多>>

Copyright © 2015-2023 魔法猪 魔法猪系统重装大师

本站发布的系统仅为个人学习测试使用,请在下载后24小时内删除,不得用于任何商业用途,否则后果自负,请支持购买微软正版软件。

在线客服 查看微信 返回顶部