首页
社区
课程
招聘
[求助]两个蓝死我的代码,请大家帮忙看看
发表于: 2009-3-13 17:01 8724

[求助]两个蓝死我的代码,请大家帮忙看看

2009-3-13 17:01
8724
初学驱动,写了这两个驱动和应用层通信的代码,
在虚拟机上纯净的Win2000、WinXP、Win2003都运行正常,
但在本机运行却蓝屏了!

本机安装了卡巴,双核CPU,
虚拟机是纯净的系统,设置的是单核CPU。

请大家看看到底哪里出问题了,稍稍点拨一下,我继续努力……

IRP1是驱动和应用层互传一句话的.sys和.exe代码,
IRP3是驱动列举进程,加入到链表中,然后传递到应用层的.sys和.exe代码。

补充一下:下载了代码的朋友,你们看了代码有什么错误,麻烦告诉我一下吧!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (14)
雪    币: 26
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
大家都忙……
周末愉快!
2009-3-13 22:40
0
雪    币: 635
活跃值: (101)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
3
蓝的好,蓝完还不分析DUMP
2009-3-13 22:50
0
雪    币: 26
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢MJ!!!
嗯,也正在学分析DUMP,显示还是和klif.sys有关。
这驱动在单核CPU和双核CPU上要注意些什么呢?
2009-3-13 22:59
0
雪    币: 8865
活跃值: (2379)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
5
蓝屏的可能有很多种,很多种可怕的恶心的蓝屏~~

单双核确实不同,对于hook而言是不太一样的,至于其他的~~~

卡巴和你冲突,必定是你搞出问题~
2009-3-14 09:22
0
雪    币: 26
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
谢谢老V点评。
昨天在办公室电脑上蓝屏,后来下班就没接着分析了,那台电脑是双核的。
回家后在这台单核老机上想再重现蓝屏,可又正常的,就是不蓝。
同样的代码,同样的KIS2009。
2009-3-14 09:37
0
雪    币: 8865
活跃值: (2379)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
7
没有KIS 2009呢?
IRQL错误还是POOL崩溃呢~~哎~
2009-3-14 11:42
0
雪    币: 26
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
嗯,我再对照着DDK里的例子再看看。
2009-3-14 13:27
0
雪    币: 26
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
我在EnumProcess函数中,列举出进程名,并加入到链表,此时正常;
在MyDeviceIoControl例程中,通过CONTAINING_RECORD取得链表中进程名,
在用DbgPrint打印出来。
问题是——
如果关了卡巴,一切正常;
如果运行卡巴,链表中某个元素地址中的数据会莫名消失了!!!
好比说:
“svchost.exe”这个UNICODE字符串,
在EnumProcess中插入链表时,其地址在0x80001234,
此时在Windbg中“db 80001234”,还能看到其字样,DbgPrint也正常;
但在MyDeviceIoControl中再通过读取链表来DbgPrint,0x80001234的数据却没有了??!!
但也不是所有链表元素的数据都消失,一部分而已。
这些数据哪里去了呢?
2009-3-18 17:10
0
雪    币: 8865
活跃值: (2379)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
10
加锁了没,哥们~
2009-3-18 20:38
0
雪    币: 26
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11

没加锁~~~
一直以为只有写多线程代码中才要用自旋锁。
今晚又看了一下书,稍微有点明白了。
修改了一下代码,在插入链表时使用了自旋锁。
使用了ExInterlockedInsertTailList和ExInterlockedRemoveHeadList函数,
最开始运行时还是老样子,出现数据丢失的情况,纳闷了一会儿,
后来才知道,ExInterlockedXXX类函数不能操作分页内存的数据,
而我在分配内存时使用了PagedPool,于是修改成NonPagedPool,OK了。

以后还是得仔细些,尽量自己分析查找解决问题,
否则一碰到问题就到论坛发问,虽然热心的朋友们都会帮忙解答,
但会逐步形成惰性,终归有碍于自身的提高。谨记!

再次感谢老V的指点!!!
2009-3-19 01:00
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
2009-3-19 21:00
0
雪    币: 26
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
哪里有问题吗?
2009-3-19 23:21
0
雪    币: 12
活跃值: (671)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
学习了
2022-7-12 16:26
0
雪    币: 12
活跃值: (671)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
aliwy 没加锁~~~ 一直以为只有写多线程代码中才要用自旋锁。 今晚又看了一下书,稍微有点明白了。 修改了一下代码,在插入链表时使用了自旋锁。 使用了ExInterlockedInsertTailList和 ...
2022-7-12 16:33
0
游客
登录 | 注册 方可回帖
返回
//