能力值:
( LV2,RANK:10 )
|
-
-
2 楼
把你代码贴出来看看
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
无人愿意指教一下吗?还是根本就是无人知晓呢?
|
能力值:
( LV12,RANK:220 )
|
-
-
4 楼
估计很少人有这个条件
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
哦,我只是希望大家讨论一下原因。
SSDT地址找出正确,现在就是在双核机器中恢复时会兰,我想应该是两个CPU的缘故,莫非要暂停掉一个CPU工作?
|
能力值:
( LV12,RANK:370 )
|
-
-
6 楼
你最好把代码传上来才好帮你看看。。。
|
能力值:
( LV8,RANK:130 )
|
-
-
7 楼
加个SPINLOCK就可以了吧,另起一个或多个无用线程并绑定到每个CPU中然后用SPINLOCK套死它(没试过,说说而已
|
能力值:
( LV10,RANK:170 )
|
-
-
8 楼
你的蓝屏没有DMP文件吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
我记得以前是反汇编了一下ASPR的自动脱壳机里带的驱动程序,你看看HOOK IDT那一部分代码.好象关键是一个设置系统信息的本机API的调用.太久了,都忘记了.
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
呵,谢谢大家的回复。希望大家继续讨论。
有些朋友对代码比较感兴趣,其实我就是从网上找的找码,只是改成了asm而已。
Win2K/XP SDT Restore 0.2 (Proof-Of-Concept)
http://www.security.org.sg/code/sdtrestore.html
http://www.rootkit.com/newsread.php?newsid=176
要看代码请访问上面两个地址。
;----------------------------------------------
特别谢谢drwch,我没听过SPINLOCK,我先了解一下再说。
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
在SMP系统中,是不是我的进程在其中一个CPU上执行恢复SSDT时,影响到了另一个CPU中正运行的进程的底层调用,造成兰屏?
如果是要如何处理?
|
能力值:
( LV12,RANK:370 )
|
-
-
12 楼
自旋锁+PageableLock
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
SPINLOCK自旋锁是linux中的概念吧?
PageableLock是什么?Baidu了一下什么都没有。
|
能力值:
( LV12,RANK:370 )
|
-
-
14 楼
NtDriver中同样的自旋锁的。。。
恢复之前申请一个自旋锁,然后用MmLockPagableXXX锁定要修改的内存,恢复之后用MmUnlockPagableImageSection来release,然后释放自旋锁
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
哦,不了解。
不过感觉这个处理也是不行吧。一来SSDT所处的内存块要如何锁定?
二。就算锁定了,其他线程还是一样能读取吧,如此话那就跟锁定前没什么区别了。
我是这样想的,既然单CPU下有用,那能否暂时Disable掉另一CPU的工作呢?
|
能力值:
( LV12,RANK:370 )
|
-
-
16 楼
如何关闭另一个cpu?
向一个地址写1个DWORD值是一个原子操作,不会产生问题的。。。
最有可能产生问题的地方是页被置换了出去。。。
请问你蓝屏的代码是什么?有dump文件吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
手边没有双核系统,所以没有dump文件。
我想的是,是不是有什么环境值在两个CPU间没同步呢?
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
暂停CPU中断如何做到?
|
能力值:
( LV12,RANK:370 )
|
-
-
19 楼
cli
sti
|
能力值:
( LV2,RANK:10 )
|
-
-
20 楼
谢谢xIkUg的热心,让我又明白了不少东西。
|
能力值:
( LV2,RANK:10 )
|
-
-
21 楼
要修复这个表的内容那首先就要知道原始的表的内容是什么?其实原始的内容就在 "ntoskrnl.exe","ntkrnlpa.exe","ntkrnlmp.exe","ntkrpamp.exe" 文件中.
首先你要知道系统现在用的是这四个文件中的那个文件.然后你打开文件系统使用的文件.到文件中
找到SSDT表所在的开始位置.这里查找的方法就比较多了.可以通过特征串方法,还可以通过其他的变通方法来查找.
找到开始位置有,可能要对这个表做基址重定位.然后就可以用来恢复原始的SSDT表了.
一般我们从Ntoskrnl.exe中获取原始SSDT表,在多处理器中为应该为ntkrnlmp.exe
|
能力值:
( LV6,RANK:90 )
|
-
-
22 楼
楼上说得没错.对于不同的平台核心的文件也是不同的.
|
能力值:
( LV2,RANK:10 )
|
-
-
23 楼
沉底好久了,现在成关注帖了。。。 最初由 xicao 发布 要修复这个表的内容那首先就要知道原始的表的内容是什么?其实原始的内容就在 "ntoskrnl.exe","ntkrnlpa.exe","ntkrnlmp.exe","ntkrpamp.exe" 文件中. 首先你要知道系统现在用的是这四个文件中的那个文件.然后你打开文件系统使用的文件.到文件中 找到SSDT表所在的开始位置.这里查找的方法就比较多了.可以通过特征串方法,还可以通过其他的变通方法来查找. 找到开始位置有,可能要对这个表做基址重定位.然后就可以用来恢复原始的SSDT表了.
........
答非所问了吧?
管他什么文件名,反正内核模块第一位的就是它了。
兰屏的原因有高手提示是中断的问题。。。
我想我能解决了。只是手边没有双核机。。。
|
|
|