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

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

2006-12-9 22:04
9881
我在单CPU WinXP系统中正常的代码到双核系统中兰屏了,是什么原因??

[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

收藏
点赞7
打赏
分享
最新回复 (22)
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
fengyun 2006-12-10 09:19
2
0
把你代码贴出来看看
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ahaisoft 2006-12-11 11:12
3
0
无人愿意指教一下吗?还是根本就是无人知晓呢?
雪    币: 255
活跃值: (266)
能力值: ( LV12,RANK:220 )
在线值:
发帖
回帖
粉丝
WiNrOOt 5 2006-12-11 12:05
4
0
估计很少人有这个条件
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ahaisoft 2006-12-11 12:21
5
0
哦,我只是希望大家讨论一下原因。
SSDT地址找出正确,现在就是在双核机器中恢复时会兰,我想应该是两个CPU的缘故,莫非要暂停掉一个CPU工作?
雪    币: 116
活跃值: (220)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
xIkUg 9 2006-12-11 12:35
6
0
你最好把代码传上来才好帮你看看。。。
雪    币: 222
活跃值: (10)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
drwch 3 2006-12-11 12:41
7
0
加个SPINLOCK就可以了吧,另起一个或多个无用线程并绑定到每个CPU中然后用SPINLOCK套死它(没试过,说说而已
雪    币: 196
活跃值: (135)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
thinkSJ 4 2006-12-11 18:00
8
0
你的蓝屏没有DMP文件吗?
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
许仙 2006-12-11 18:25
9
0
我记得以前是反汇编了一下ASPR的自动脱壳机里带的驱动程序,你看看HOOK IDT那一部分代码.好象关键是一个设置系统信息的本机API的调用.太久了,都忘记了.
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ahaisoft 2006-12-11 20:12
10
0
呵,谢谢大家的回复。希望大家继续讨论。

有些朋友对代码比较感兴趣,其实我就是从网上找的找码,只是改成了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,我先了解一下再说。
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ahaisoft 2006-12-11 20:25
11
0
在SMP系统中,是不是我的进程在其中一个CPU上执行恢复SSDT时,影响到了另一个CPU中正运行的进程的底层调用,造成兰屏?
如果是要如何处理?
雪    币: 116
活跃值: (220)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
xIkUg 9 2006-12-11 20:39
12
0
自旋锁+PageableLock
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ahaisoft 2006-12-11 21:17
13
0
SPINLOCK自旋锁是linux中的概念吧?
PageableLock是什么?Baidu了一下什么都没有。
雪    币: 116
活跃值: (220)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
xIkUg 9 2006-12-11 21:32
14
0
NtDriver中同样的自旋锁的。。。
恢复之前申请一个自旋锁,然后用MmLockPagableXXX锁定要修改的内存,恢复之后用MmUnlockPagableImageSection来release,然后释放自旋锁
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ahaisoft 2006-12-11 21:50
15
0
哦,不了解。
不过感觉这个处理也是不行吧。一来SSDT所处的内存块要如何锁定?
二。就算锁定了,其他线程还是一样能读取吧,如此话那就跟锁定前没什么区别了。

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

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

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

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

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

........


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

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