首页
社区
课程
招聘
请教:双核CPU及多CPU系统中恢复SSDT要注意些什么呢?
发表于: 2006-12-9 22:04 10487

请教:双核CPU及多CPU系统中恢复SSDT要注意些什么呢?

2006-12-9 22:04
10487

我在单CPU WinXP系统中正常的代码到双核系统中兰屏了,是什么原因??


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

收藏
免费 7
支持
分享
最新回复 (22)
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
把你代码贴出来看看
2006-12-10 09:19
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
无人愿意指教一下吗?还是根本就是无人知晓呢?
2006-12-11 11:12
0
雪    币: 255
活跃值: (266)
能力值: ( LV12,RANK:220 )
在线值:
发帖
回帖
粉丝
4
估计很少人有这个条件
2006-12-11 12:05
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
哦,我只是希望大家讨论一下原因。
SSDT地址找出正确,现在就是在双核机器中恢复时会兰,我想应该是两个CPU的缘故,莫非要暂停掉一个CPU工作?
2006-12-11 12:21
0
雪    币: 116
活跃值: (220)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
6
你最好把代码传上来才好帮你看看。。。
2006-12-11 12:35
0
雪    币: 222
活跃值: (10)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
7
加个SPINLOCK就可以了吧,另起一个或多个无用线程并绑定到每个CPU中然后用SPINLOCK套死它(没试过,说说而已
2006-12-11 12:41
0
雪    币: 196
活跃值: (135)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
8
你的蓝屏没有DMP文件吗?
2006-12-11 18:00
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
我记得以前是反汇编了一下ASPR的自动脱壳机里带的驱动程序,你看看HOOK IDT那一部分代码.好象关键是一个设置系统信息的本机API的调用.太久了,都忘记了.
2006-12-11 18:25
0
雪    币: 218
活跃值: (10)
能力值: ( 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,我先了解一下再说。
2006-12-11 20:12
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
在SMP系统中,是不是我的进程在其中一个CPU上执行恢复SSDT时,影响到了另一个CPU中正运行的进程的底层调用,造成兰屏?
如果是要如何处理?
2006-12-11 20:25
0
雪    币: 116
活跃值: (220)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
12
自旋锁+PageableLock
2006-12-11 20:39
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
SPINLOCK自旋锁是linux中的概念吧?
PageableLock是什么?Baidu了一下什么都没有。
2006-12-11 21:17
0
雪    币: 116
活跃值: (220)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
14
NtDriver中同样的自旋锁的。。。
恢复之前申请一个自旋锁,然后用MmLockPagableXXX锁定要修改的内存,恢复之后用MmUnlockPagableImageSection来release,然后释放自旋锁
2006-12-11 21:32
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
哦,不了解。
不过感觉这个处理也是不行吧。一来SSDT所处的内存块要如何锁定?
二。就算锁定了,其他线程还是一样能读取吧,如此话那就跟锁定前没什么区别了。

我是这样想的,既然单CPU下有用,那能否暂时Disable掉另一CPU的工作呢?
2006-12-11 21:50
0
雪    币: 116
活跃值: (220)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
16
如何关闭另一个cpu?

向一个地址写1个DWORD值是一个原子操作,不会产生问题的。。。
最有可能产生问题的地方是页被置换了出去。。。
请问你蓝屏的代码是什么?有dump文件吗?
2006-12-11 23:06
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
手边没有双核系统,所以没有dump文件。
我想的是,是不是有什么环境值在两个CPU间没同步呢?
2006-12-12 14:45
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
暂停CPU中断如何做到?
2006-12-12 18:05
0
雪    币: 116
活跃值: (220)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
19
cli
sti
2006-12-12 18:13
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
谢谢xIkUg的热心,让我又明白了不少东西。

2006-12-13 12:48
0
雪    币: 243
活跃值: (209)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
要修复这个表的内容那首先就要知道原始的表的内容是什么?其实原始的内容就在 "ntoskrnl.exe","ntkrnlpa.exe","ntkrnlmp.exe","ntkrpamp.exe" 文件中. 
首先你要知道系统现在用的是这四个文件中的那个文件.然后你打开文件系统使用的文件.到文件中
找到SSDT表所在的开始位置.这里查找的方法就比较多了.可以通过特征串方法,还可以通过其他的变通方法来查找.
找到开始位置有,可能要对这个表做基址重定位.然后就可以用来恢复原始的SSDT表了.

一般我们从Ntoskrnl.exe中获取原始SSDT表,在多处理器中为应该为ntkrnlmp.exe
2007-2-9 19:23
0
雪    币: 215
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
22
楼上说得没错.对于不同的平台核心的文件也是不同的.
2007-2-10 14:09
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
沉底好久了,现在成关注帖了。。。

最初由 xicao 发布
要修复这个表的内容那首先就要知道原始的表的内容是什么?其实原始的内容就在 "ntoskrnl.exe","ntkrnlpa.exe","ntkrnlmp.exe","ntkrpamp.exe" 文件中. 
首先你要知道系统现在用的是这四个文件中的那个文件.然后你打开文件系统使用的文件.到文件中
找到SSDT表所在的开始位置.这里查找的方法就比较多了.可以通过特征串方法,还可以通过其他的变通方法来查找.
找到开始位置有,可能要对这个表做基址重定位.然后就可以用来恢复原始的SSDT表了.

........


答非所问了吧?
管他什么文件名,反正内核模块第一位的就是它了。

兰屏的原因有高手提示是中断的问题。。。
我想我能解决了。只是手边没有双核机。。。
2007-2-14 13:03
0
游客
登录 | 注册 方可回帖
返回
//