能力值:
( LV2,RANK:10 )
|
-
-
2 楼
大家都忙……
周末愉快!
|
能力值:
( LV12,RANK:420 )
|
-
-
3 楼
蓝的好,蓝完还不分析DUMP
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
谢谢MJ!!!
嗯,也正在学分析DUMP,显示还是和klif.sys有关。
这驱动在单核CPU和双核CPU上要注意些什么呢?
|
能力值:
( LV12,RANK:760 )
|
-
-
5 楼
蓝屏的可能有很多种,很多种可怕的恶心的蓝屏~~
单双核确实不同,对于hook而言是不太一样的,至于其他的~~~
卡巴和你冲突,必定是你搞出问题~
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
谢谢老V点评。
昨天在办公室电脑上蓝屏,后来下班就没接着分析了,那台电脑是双核的。
回家后在这台单核老机上想再重现蓝屏,可又正常的,就是不蓝。
同样的代码,同样的KIS2009。
|
能力值:
( LV12,RANK:760 )
|
-
-
7 楼
没有KIS 2009呢?
IRQL错误还是POOL崩溃呢~~哎~
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
嗯,我再对照着DDK里的例子再看看。
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
我在EnumProcess函数中,列举出进程名,并加入到链表,此时正常;
在MyDeviceIoControl例程中,通过CONTAINING_RECORD取得链表中进程名,
在用DbgPrint打印出来。
问题是——
如果关了卡巴,一切正常;
如果运行卡巴,链表中某个元素地址中的数据会莫名消失了!!!
好比说:
“svchost.exe”这个UNICODE字符串,
在EnumProcess中插入链表时,其地址在0x80001234,
此时在Windbg中“db 80001234”,还能看到其字样,DbgPrint也正常;
但在MyDeviceIoControl中再通过读取链表来DbgPrint,0x80001234的数据却没有了??!!
但也不是所有链表元素的数据都消失,一部分而已。
这些数据哪里去了呢?
|
能力值:
( LV12,RANK:760 )
|
-
-
10 楼
加锁了没,哥们~
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
没加锁~~~
一直以为只有写多线程代码中才要用自旋锁。
今晚又看了一下书,稍微有点明白了。
修改了一下代码,在插入链表时使用了自旋锁。
使用了ExInterlockedInsertTailList和ExInterlockedRemoveHeadList函数,
最开始运行时还是老样子,出现数据丢失的情况,纳闷了一会儿,
后来才知道,ExInterlockedXXX类函数不能操作分页内存的数据,
而我在分配内存时使用了PagedPool,于是修改成NonPagedPool,OK了。
以后还是得仔细些,尽量自己分析查找解决问题,
否则一碰到问题就到论坛发问,虽然热心的朋友们都会帮忙解答,
但会逐步形成惰性,终归有碍于自身的提高。谨记!
再次感谢老V的指点!!!
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
哪里有问题吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
学习了
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
aliwy
没加锁~~~
一直以为只有写多线程代码中才要用自旋锁。
今晚又看了一下书,稍微有点明白了。
修改了一下代码,在插入链表时使用了自旋锁。
使用了ExInterlockedInsertTailList和 ...
|
|
|