找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 43021|回复: 80

[源码]更正《WIN64驱动编程基础教程》里关于枚举驱动的错误

 火... [复制链接]

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36129
发表于 2015-5-20 18:28:40 | 显示全部楼层 |阅读模式
在教程[5-3]里讲到隐藏驱动的部分,有一个在驱动里通过双向链表枚举出系统所有驱动的代码。

但在枚举结果中,总有一个信息不正确。这就是经典的“链表少一个问题”(『寂寞№梧桐』语)。

于是更正后的代码如下:
游客,如果您要查看本帖隐藏内容请回复

0

主题

3

回帖

0

精华

铜牌会员

积分
145
发表于 2015-5-21 00:52:10 | 显示全部楼层
输出驱动全链表的方法:

  1. //这里字节对齐要采用默认,不要按1对齐,这样才符合32位和64位结构体
  2. typedef struct _LDR_DATA_TABLE_ENTRY
  3. {
  4.         LIST_ENTRY InLoadOrderLinks;
  5.         LIST_ENTRY InMemoryOrderLinks;
  6.         LIST_ENTRY InInitializationOrderLinks;
  7.         PVOID DllBase;
  8.         PVOID EntryPoint;
  9.         ULONG SizeOfImage;
  10.         UNICODE_STRING FullDllName;
  11.         UNICODE_STRING BaseDllName;
  12.         ULONG Flags;
  13.         USHORT LoadCount;
  14.         USHORT TlsIndex;
  15.         union
  16.         {
  17.                 LIST_ENTRY HashLinks;
  18.                 struct
  19.                 {
  20.                         PVOID SectionPointer;
  21.                         ULONG CheckSum;
  22.                 };
  23.         };
  24.         union
  25.         {
  26.                 struct
  27.                 {
  28.                         ULONG TimeDateStamp;
  29.                 };
  30.                 struct
  31.                 {
  32.                         PVOID LoadedImports;
  33.                 };
  34.         };
  35.         struct _ACTIVATION_CONTEXT * EntryPointActivationContext;
  36.         PVOID PatchInformation;
  37. } LDR_DATA_TABLE_ENTRY, *PLDR_DATA_TABLE_ENTRY;

  38. extern "C" NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObj, PUNICODE_STRING pRegistryString)
  39. {
  40.         PLDR_DATA_TABLE_ENTRY Begin = (PLDR_DATA_TABLE_ENTRY)pDriverObj->DriverSection;
  41.         PLIST_ENTRY Head = (PLIST_ENTRY)Begin->InLoadOrderLinks.Flink;
  42.         PLIST_ENTRY Next = Head->Flink;
  43.         do
  44.         {
  45.                 PLDR_DATA_TABLE_ENTRY Entry = CONTAINING_RECORD(Next, LDR_DATA_TABLE_ENTRY, InLoadOrderLinks);
  46.                 Next = Next->Flink;
  47.                 KdPrint(("%wZ\n",&Entry->FullDllName));
  48.         } while (Next != Head->Flink);

  49.         return STATUS_SUCCESS;
  50. }
复制代码


按照微软的写法,自己实现了一次,在xp 32位 64位 和win7 32下测试通过

评分

参与人数 1水晶币 +100 收起 理由
Tesla.Angela + 100 很给力!

查看全部评分

0

主题

3

回帖

0

精华

铜牌会员

积分
145
发表于 2015-5-20 18:37:21 | 显示全部楼层
look

1

主题

24

回帖

0

精华

贵宾会员

积分
677
发表于 2015-5-20 18:39:40 | 显示全部楼层
多谢分享

0

主题

21

回帖

0

精华

铜牌会员

积分
104
发表于 2015-5-20 19:38:36 | 显示全部楼层
lokk

0

主题

117

回帖

0

精华

银牌会员

积分
595
发表于 2015-5-20 19:49:23 | 显示全部楼层
学习下,,,,

8

主题

69

回帖

2

精华

钻石会员

积分
3279
发表于 2015-5-20 20:44:28 | 显示全部楼层
看看怎么回事

0

主题

35

回帖

0

精华

铜牌会员

积分
158
发表于 2015-5-20 22:07:59 | 显示全部楼层
这得看看!!!

0

主题

7

回帖

0

精华

初来乍到

积分
21
发表于 2015-5-20 23:30:41 | 显示全部楼层
看看,学习了

0

主题

30

回帖

0

精华

铜牌会员

积分
124
发表于 2015-5-21 18:03:11 | 显示全部楼层
TA大大更正教程了。。。学习一下

30

主题

693

回帖

0

精华

钻石会员

积分
2815
发表于 2015-5-21 23:55:54 | 显示全部楼层
两位大侠都很给力

0

主题

10

回帖

0

精华

铜牌会员

积分
38
发表于 2015-5-22 02:10:40 | 显示全部楼层
看看,学习下

0

主题

7

回帖

0

精华

铜牌会员

积分
47
发表于 2015-5-25 03:15:59 | 显示全部楼层
如果您要查看本帖隐藏内容请回复

6

主题

103

回帖

0

精华

金牌会员

积分
680
发表于 2015-5-31 17:45:37 | 显示全部楼层
看看

0

主题

22

回帖

0

精华

金牌会员

积分
782
发表于 2015-6-3 13:44:03 | 显示全部楼层
还真没发现呢。。。。。。

1

主题

146

回帖

0

精华

贵宾会员

积分
2836
发表于 2015-8-7 15:16:49 | 显示全部楼层
这个得看看学习下了

4

主题

145

回帖

0

精华

金牌会员

积分
1189
发表于 2015-8-8 18:58:51 | 显示全部楼层
这个不错 支持

0

主题

11

回帖

0

精华

贵宾会员

积分
370
发表于 2015-8-12 21:37:12 | 显示全部楼层
过来学习一下

0

主题

12

回帖

0

精华

贵宾会员

积分
2014
发表于 2015-8-21 21:04:57 | 显示全部楼层
好吧。。。我使用的时候并没有注意到。。。

5

主题

103

回帖

0

精华

铜牌会员

积分
252
发表于 2015-8-23 19:59:58 | 显示全部楼层
谢谢大神

6

主题

123

回帖

0

精华

初来乍到

积分
5392
发表于 2015-12-30 13:34:23 | 显示全部楼层
多谢分享

0

主题

10

回帖

0

精华

铜牌会员

积分
34
发表于 2016-1-4 19:46:17 | 显示全部楼层
谢谢TA的分享

0

主题

15

回帖

0

精华

铜牌会员

积分
99
发表于 2016-1-15 23:48:14 | 显示全部楼层
看过老大教程,竟然没发现~

0

主题

22

回帖

0

精华

铜牌会员

积分
80
发表于 2016-1-19 18:57:47 | 显示全部楼层
我来学习的,正在看教程

0

主题

5

回帖

0

精华

铜牌会员

积分
37
发表于 2016-1-27 18:31:51 | 显示全部楼层
教程 [5-5]ForceProcMemRW也有问题,我已在kernelmode.info PM 楼主(m5home?)亦发帖询问 http://www.kernelmode.info/forum/viewtopic.php?f=14&t=3329

0

主题

31

回帖

0

精华

铜牌会员

积分
180
发表于 2016-1-30 21:09:58 | 显示全部楼层
学习下

3

主题

55

回帖

0

精华

铂金会员

积分
2015
发表于 2016-4-28 16:43:54 | 显示全部楼层
看看学习

0

主题

3

回帖

0

精华

初来乍到

积分
47
发表于 2016-5-24 12:25:08 | 显示全部楼层
学习学习

0

主题

59

回帖

0

精华

铜牌会员

积分
303
发表于 2016-6-27 15:11:08 | 显示全部楼层
学习下看看

0

主题

12

回帖

0

精华

铜牌会员

积分
244
发表于 2016-6-28 23:04:00 | 显示全部楼层
哪里的错误看看

0

主题

13

回帖

0

精华

贵宾会员

积分
188
发表于 2016-7-9 20:58:58 | 显示全部楼层
我看看

0

主题

5

回帖

0

精华

初来乍到

积分
29
发表于 2016-9-4 13:24:44 | 显示全部楼层
快快快快快快快快快快
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

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