登录  | 立即注册

游客您好!登录后享受更多精彩

查看: 45|回复: 1

驱动开发与系统原理-驱动遍历

[复制链接]

90

主题

-6

回帖

112

积分

网站编辑

积分
112
发表于 6 天前 | 显示全部楼层 |阅读模式

熟悉_DRIVER_OBJECT结构

DriverSection 是驱动的地址,一个指向驱动的指针

DriverInit 存储驱动的名称,一个指向驱动名称的指针

遍历驱动,就是通过DriverSection的双向链表,循环遍历

代码

include<ntifs.h>

include<intrin.h>

VOID DriverUnload(PDRIVER_OBJECT pDriverObject) {

DbgPrint("Unload Driver Success! ");

}

NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObject, PUNICODE_STRING pRegPath) { DbgPrint("Load Driver Success!"); pDriverObject->DriverUnload = DriverUnload; PLIST_ENTRY DriverList = NULL; PLIST_ENTRY NextList = NULL; UNICODE_STRING usDriverName; RtlInitUnicodeString(&usDriverName, L"ntoskrnl.exe"); PUNICODE_STRING pUSDriverName = NULL; DriverList = (PLIST_ENTRY)pDriverObject->DriverSection; NextList = DriverList->Flink; while (NextList!= DriverList) { pUSDriverName = (PUNICODE_STRING)((ULONG)NextList + 0x2c); DbgPrint("%wZ", pUSDriverName); if (RtlCompareUnicodeString(pUSDriverName, &usDriverName,TRUE)==0);//对某个驱动进行查找 { DbgPrint("0x%X", (ULONG)NextList);//打印出我们找到的驱动的相关信息 return STATUS_SUCCESS; } NextList = NextList->Flink; } return STATUS_SUCCESS; }

0

主题

70

回帖

114

积分

注册会员

积分
114
发表于 前天 10:54 | 显示全部楼层
谢谢分享支持楼主
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|断点社区 |网站地图

GMT+8, 2025-5-13 10:15 , Processed in 0.092022 second(s), 24 queries , Yac On.

Powered by XiunoBBS

Copyright © 2001-2025, 断点社区.

快速回复 返回顶部 返回列表