查看文章 |
又大了一岁,时间过得还真是有点快。07年居然又只写了两篇Blog,看来我这辈子是“勤快”不起来了。原因有二,一是我写Blog就和发技术文章似的喜欢长篇大论。相比有些人每次就写一两句话,记记流水帐、发发牢骚,偶尔说说技术也是用XXX带过,那更新速度自然天差地别。二是没时间写,确切的说是没时间研究技术。很多时候我都是文章写了一半就中断,时间停的越久就越觉得没啥可写的,最后只好删掉。因为我的性格就是不说没把握的话,不做心里没底的事。只有花时间把问题搞透,我才敢写下来,还得趁热打铁。所以,一些心得体会面对面说说可以,写出来总觉得不合适。而且工作的事就够我忙活了,于是Blog停了,knlps的新版本也遥遥无期了。读书的时候闲的发荒,现在工作了,又怀念读书时的悠闲了。唉。 说完废话,再扯点和安全有关的。现在内核技术泛滥成灾,是个安全软件就带驱动,带个驱动就在内核挂钩子。SSDT/IDT Hook,FAT32、NTFS、TCPIP等驱动的IRP Dispatcher Hook,IAT/EAT Hook,Object Method Hook……当然还有无处不在、无奇不有、无所不能的Inline Hook。每当我在论坛看到有人回答问题说“挂XXX函数”,心里就特别的无奈,其实有些事情不用挂钩也能解决。KiXxx被挂了,IopXxx被挂了,ExAllocXxx也被挂了……我有个预感,一个不好的预感——继流氓软件把网页浏览器当作战场相互PK之后,桌面安全软件也将由于技术原理冲突而出现严重的兼容性问题,这次遭殃的是系统内核。 进了Ring0谁都觉得自己无敌了,于是肆无忌惮起来。360安全卫士为了不和卡巴冲突,不惜影响系统效率而把钩子挂到KiSystemService上。后来,MJ0011在Blog上抱怨NP太烂,居然从edx取系统服务的参数,结果因为KiSystemService被挂,edx不再是想要的edx,NP就把系统搞挂了。这种例子还有不少,其实要我说,再这么满世界的挂钩子,不冲突才怪。出现冲突未必有谁对谁错,同样是为了安全,当我和360企图用同样的技术做相反的事情时,冲突就是必然的。(比如挂KeUserModeCallback之类的) 只是技术上冲突也许可以慢慢磨合,但如果是逻辑上冲突呢?比如,大成天下的铁卷是个文档保护软件,除了用文件系统过滤驱动加解密文件,还要通过挂钩一些API来限制用户通过截屏和剪贴板等方法窃取文档内容。但是,使用同样是大成天下的超级巡警保险箱保护记事本程序后,铁卷就无法侵入记事本的进程空间安装钩子,于是受保护的内容就能不受限制的复制粘贴到记事本中。真可谓“以子之矛,攻子之盾”啊。当然,不仅是铁卷,所有的内网监控和文档保护软件,或多或少都存在和xx密码保险箱冲突的问题。一个要挂钩,一个不让挂钩,怎么办?(凉拌?!) 很久很久以前,天是蓝的,水是清的,Virus是跑在Ring3的,AV是只做扫描的。可是,这种美好的日子一去不复返了。即使到了64位Vista,核心模块和数据结构不许改了,冲突还是会继续。只要硬盘和内存不是只读的,就挡不住软件打着安全的旗帜“耍流氓”。 随笔就是随便下笔,最后推荐一个有趣的连载小故事:《疯狂的程序员》http://blog.csdn.net/hitetoshi/ |