找一个音箱里面的音箱用久了分频器会坏吗中文翻译的

zhaisj 的BLOG
用户名:zhaisj
文章数:155
评论数:1313
访问量:980424
注册日期:
阅读量:5863
阅读量:12276
阅读量:382146
阅读量:1073985
51CTO推荐博文
谈谈监控主机的“Hook链”问题
操作系统是通过消息传递驱动各种事件动作的,要想监控系统内的动态,发现黑客的入侵行为,需要对非常多的“重要操作”进行监控,比如:权限的变更、进程的创建与被杀、网络连接的变化、文件的读写、注册表的变化、驱动程序的加载、远程线程注入等等。
如何实现这些系统行为的监控呢?就是在这些动作程序被执行前,插入自己的一段程序代码,检查驱动程序的消息是从哪里来的,若跟自己无关,就交给原来的程序去执行,若关乎自己,则越俎代庖,先执行自己的动作,再看情况是否交给原来的程序,还是直接返回。这个过程就是我们常说的Hook。
如何挂钩子不是本文的重点,本文讨论的是某一个点上挂了很多钩子的情况下,会产生的一些安全问题。
问题提出:
下图是用户实现操作的调用过程:用户程序需要创建进程时,通过SSDT某位置的函数指针,找到系统驱动程序的物理位置。
650) this.width=650;" alt="" src="/attachment/846166.jpg" border="0" />
当我们要监控这个创建动作时,就在函数调用表中挂上一个钩子。若还有其他的应用程序也想要监控这个动作时,又在这里挂上钩子。注意此时的钩子是挂在前一个钩子上的,由于挂钩子的时候,看到的地址指针,不知道是原始驱动程序的地址,还是别人的钩子地址,一般就直接挂上。如此下去…最终形成一个如图的“钩子链”。
650) this.width=650;" alt="" src="/attachment/919845.jpg" border="0" />
显然这个钩子链是倒序的,也就是说后来的监控者占据了调用表的地址空间。这就意味着后挂的钩子程序会先得到执行的权利,从安全的角度来讲,这显然是有问题的。
1、后挂钩者的优先:
a)后挂钩者先得到执行权,则可以屏蔽对自己的不利消息,让先挂钩的监控者得不到这个消息;
b)后挂钩者可以在挂钩时,不管此处原来是否有钩子,直接替换为自己的驱动程序地址,并完全包含原有驱动程序的功能,不再调用原来的程序,达到类似rootkit入侵的效果;
2、先挂钩者的反击:先挂钩子者意味着先启动自己,建立好监控进程,当发现后来者摘掉自己的钩子时,可以采取下面动作:
a)立即报警,自己的监控可能要失效,通知管理员“有人在搞破坏”;
b)重启自己的挂钩子程序,把自己的钩子重新挂上,保证自己才是钩子链的起始点;
c)摘掉破坏者的钩子,保持自己的监控“垄断地位”;
当系统中有两个程序都有上述机制时,系统就“崩溃”了。比如我们同时安装两个病毒查杀软件,就有可能出现了“冲突而死机”的现象。
安全思考:
钩子是系统监控最常用的手段,我们能监控到系统内的动态变化时,会有安全感;而我们能确定没有人能偷偷监控我时,我们才不会有恐惧感。因此,能把钩子链可视化地展现出来,是安全上的需求。对于开源的Linux,可以修改内核驱动;但对于不开源Windows,就只能利用微软提供的接口函数,对内核的操作是很有限的。
要解决的问题很多,我这里列出了一些,希望能有好的解决办法:
1、挂钩子时,如何确认我的前边是否为原始的系统驱动程序?
看到的只是程序的内存地址。有一个方法是,因为我知道这个点具体驱动是什么,可以查找对应DLL的内存基地址,从而计算出正确的函数地址,与这里进行比较是否正确。如果还要确定这个被调入内存的DLL是否被篡改过,还需要对其磁盘上的文件进行校验,如MD5码校验
2、如果前面已经是别人的钩子,我想确定它是谁引入的,DLL是谁,主程序是谁?
希望有好的办法
3、当我前边不只有一个钩子时,我想画出这个钩子链每个节点的属主图?
希望有好的办法
4、当后边来的进行挂钩子时,或来摘我的钩子时,我是否可以直接拒绝它的动作?
重新启动挂钩进程是没有办法的办法,希望有更好的办法
5、可以用来挂钩子的技术方法究竟有多少种?
希望有好的办法
6、需要监控的挂钩子点究竟有多少个,多少个是对系统安全造成威胁的?
需要经验值,希望有好的办法
&&& 钩子是驱动程序开发发展来的技术,成为安全常用手段。本文只是从需求的角度起个头,欢迎爱好的同学一起探讨。本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)
18:33:23 15:27:00 18:52:24转载(12)
最近360安全浏览器和金山网盾炒得很厉害,不过实际上大家都是在独木桥走,时不时被记下来是很正常的事情。上网搜索一下就可以看到,互相冲突的不止是这两家,还有瑞星、卡巴和基于IE的浏览器,比如傲游、腾讯TT、搜狗浏览器等。这个问题的核心在于这些软件对API的钩子的处理。
API hook这个东西其实DOS时代就有了,那个时候叫中断表。这个的工作机理和虚函数表类似,就是一堆函数指针,每个人调用的时候调用的是最后一个更新函数指针的代码。基于DOS的32位Windows版本(例如Windows95)用这个来转移DOS程序的16位的文件系统操作到32位的文件系统驱动(当然,如果有16位的TSR和驱动,还得把控制权交回去)。在Windows下也有类似的东西,叫做SSDT。基本上这些东西被杀毒软件用来截获文件操作,被病毒用来防止自己被发现,等等。这个有个先来后到的机制,因为先下手的可以替换所有可以用来防止被替换的函数,比如防病毒软件在病毒试图加载的时候就可以判断:&啊,这个是已知病毒,我应该杀掉&,病毒在杀毒软件试图加在的时候也可以判断:&啊,这个是杀毒软件,我最好hook这个软件的系统调用,把自己隐藏起来&。
但是计算机上有两个杀毒软件的时候,就会有冲突了:函数表里面在病毒加载的时候是这个样子:对于两个杀毒软件都挂钩的函数,函数表是Windows-&杀毒软件甲-&杀毒软件乙,对于只有一个杀毒软件挂钩的函数,函数表或者是Windows-&杀毒软件甲,或者是Windows-&杀毒软件乙。这样在应用程序执行一个函数的时候,有时候执行的是杀毒软件甲的代码,有时候两个都执行。只有一层的执行还好,嵌套执行的时候,如果调用杀毒软件甲的不再是系统而是杀毒软件乙,这可能造成杀毒软件甲运行异常,例如如果杀毒软件乙做了一个沙盒,杀毒软件甲访问文件的时候路径可能就是经过杀毒软件乙虚拟的路径,而出现文件找不到、配置无法保存的情况,严重的时候甚至造成蓝屏死机。
即使不是杀毒软件,也可能因为抢占系统资源而造成冲突。比如IE的地址栏是没有API的。3721、百度搜霸、CNNIC的中文实名等工具条要抢占用户的地址栏怎么办呢,就是用自己的窗口过程替换掉IE的。如果安装了一个,在按回车的时候就不会跳到另一个的网站。当然,技术上还有一些别的冲突。这种冲突会造成用户抱怨产品不能用。3721的解决方案是在网络实名插件里面去检测用户有没有安装百度,有的话就会把百度的删除掉。这当然会引起百度抗议,最后起诉到法院,3721败诉。
那安全软件和各种浏览器又是在什么资源上造成冲突的呢?是WinInet。这个是IE的网络层,很多浏览器都自己hook了做沙盒、脚本过滤、隐私模式或者多IE版本模拟。和前面提到的一样,一个自己hook WinInet函数的软件不可能针对市面上所有其他hook WinInet函数的软件做兼容性测试,所以出问题的几率还会比较大。本来只hook自己进程的浏览器可以互不干扰,不过一些安全软件会把自己加载到每个进程然后hook掉可以hook的API,这甚至会连Flash的WinInet调用也劫持掉了,造成Flash工作不正常或者这造成浏览器在安全软件运行的时候经常崩溃。然后就有做了沙盒的安全浏览器防止安全软件被加载到自己的进程,引起安全软件公司抗议,不过目前还只是在法院打口水仗,没有像浏览器工具栏公司们那样互相起诉不正当竞争的行为。
总而言之,API Hook是一种非常强大的工具,可以用来接管系统和其他软件,但是强大的能力意味着更多的责任,挂钩函数作为系统API的替代物,需要在比应用软件更多的场景下测试。遗憾的是,病毒制造者也会使用这种工具,使得需要挂钩的函数经常很多;而且使用系统未公开的行为也意味着在系统更新的时候,API Hook的软件经常需要被重新编码和测试,远期的总成本比没有API Hook的软件要高得多。除非是有Visual Assist这样的市场占有率、经验、人力和时间,通常还是开发只使用正规API的软件比较容易维护。
本文来自CSDN博客,转载请标明出处:
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:21501次
排名:千里之外
原创:23篇
转载:20篇
(1)(1)(2)(1)(2)(9)(5)(3)(8)(1)(1)(3)(1)(5)好评度33点
阅读:2607回复:22
ssdt hook 卸载的时候导致蓝屏(是否与杀毒软件冲突)
发布于: 22:41
我用ssdt hook了某些函数,然后装上防病毒软件,用扫描工具发现他也ssdt hook了函数,有几个和我的一样;我卸载我的驱动程序,蓝屏UNLOADED_WITHOUT_CANCELLING_PENDING_OPERATIONS;但是这个蓝屏很难重现,我重复了很多次,结果只出现2次现在分析如下:不知道对不对我hook了某函数x,地址由x替换为我的函数地址A,地址x被保存至变量防病毒软件也hook函数x,将A地址替换了他的地址B;现在系统调用关系:B--》A----》x现在卸载A的时候,正好系统调用走只A,A地址无效导致蓝屏?不知道此分析对不对有没有什么解决方法啊谢谢
威望14006点
好评度2410点
专家分100分
发布于: 23:55
增加调用引用计数,在卸载时等待调用完成即可
免费源码交换网
-----------------------------
软件创造价值,驱动提供力量!
淡泊以明志,宁静以致远。
----------------------------------
勤用搜索,多查资料,先搜再问。
威望14006点
好评度2410点
专家分100分
发布于: 23:55
随便说一下,版上讨论过几次了,而且还有源码
免费源码交换网
-----------------------------
软件创造价值,驱动提供力量!
淡泊以明志,宁静以致远。
----------------------------------
勤用搜索,多查资料,先搜再问。
积分1007分
好评度476点
发布于: 09:31
另外楼主的分析也是非常有可能的。B -& A -& X,结果A被卸载了。
好评度57点
发布于: 10:10
卸载A的时候要保证B不是正好在执行,这样当A卸载后,X的地址还原成了A以前的,B就废掉了
威望1651点
好评度1227点
<span class="lou J_floor_copy" title="复制此楼地址"
data-hash="read_楼#
发布于: 13:37
别SSDT了,已经END OF &THE ROAD了,换点新方法吧。
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
威望1076点
好评度895点
<span class="lou J_floor_copy" title="复制此楼地址"
data-hash="read_楼#
发布于: 13:42
赶快换上NSI PROVIDER HOOK吧,适应全新VISTA网络体系哦!
驱动开发者 呵呵
好评度15点
<span class="lou J_floor_copy" title="复制此楼地址"
data-hash="read_楼#
发布于: 13:48
引用第1楼znsoft于 23:55发表的 &:增加调用引用计数,在卸载时等待调用完成即可处理得太简单的话,还是有可能蓝屏的
好评度57点
<span class="lou J_floor_copy" title="复制此楼地址"
data-hash="read_楼#
发布于: 14:23
如果要使用MS建议的方法,请参考:如果需要技术支持请联系:
好评度146点
<span class="lou J_floor_copy" title="复制此楼地址"
data-hash="read_楼#
发布于: 18:42
我也遇到过类似的问题,也加入了引用计数,基本上不会蓝屏了,但是偶尔,几率非常小,还是会出现蓝屏
好评度146点
<span class="lou J_floor_copy" title="复制此楼地址"
data-hash="read_楼#
发布于: 18:44
搂主如果想让你的蓝屏出现的更多的话,把CPU到100%,在卸载驱动,基本都会蓝的.
积分1082分
威望2003点
好评度1693点
<span class="lou J_floor_copy" title="复制此楼地址"
data-hash="read_楼#
发布于: 19:35
引用第6楼WQXNETQIQI于 13:42发表的 &:赶快换上NSI PROVIDER HOOK吧,适应全新VISTA网络体系哦!此路可通~哎~~
没有战争就没有进步
为您提供最好的军火
好评度33点
<span class="lou J_floor_copy" title="复制此楼地址"
data-hash="read_楼#
发布于: 22:55
怎么加入计数啊?能否给点代码提示
好评度490点
<span class="lou J_floor_copy" title="复制此楼地址"
data-hash="read_楼#
发布于: 10:36
楼上各位,把你们过时的技术都送给我吧,我跟不上时代,也不嫌其旧。
好评度28点
<span class="lou J_floor_copy" title="复制此楼地址"
data-hash="read_楼#
发布于: 23:26
引用第5楼wowocock于 13:37发表的 &:别SSDT了,已经END OF &THE ROAD了,换点新方法吧。对于我们这些才学习的人还是很有用的嘛,总得有个入口点嘛,呵呵
驱网无线,快乐无限
好评度23点
<span class="lou J_floor_copy" title="复制此楼地址"
data-hash="read_楼#
发布于: 16:11
Ideas for life!
积分1082分
威望2003点
好评度1693点
<span class="lou J_floor_copy" title="复制此楼地址"
data-hash="read_楼#
发布于: 20:01
驱动从不卸载~~而且直接下发走真实SSDT,很少读取xxx~~hook淫荡的xxxx函数们(无导出啊无导出) & & &
没有战争就没有进步
为您提供最好的军火
威望1076点
好评度895点
<span class="lou J_floor_copy" title="复制此楼地址"
data-hash="read_楼#
发布于: 11:36
事实告诉我们,不走寻常路,才能不蓝屏
驱动开发者 呵呵
积分1082分
威望2003点
好评度1693点
<span class="lou J_floor_copy" title="复制此楼地址"
data-hash="read_楼#
发布于: 02:24
不走寻常路,才能不蓝屏不走寻常路,才能不蓝屏很好的评论~~、
没有战争就没有进步
为您提供最好的军火
积分1006分
好评度268点
<span class="lou J_floor_copy" title="复制此楼地址"
data-hash="read_楼#
发布于: 14:20
开头InterlockedIncrement增加记数..末尾InterlockedDecrement减少引用记数,,,最后比较是否为0,在确认卸载
您需要登录后才可以回帖,&或者&
Powered by

我要回帖

更多关于 音箱用久了分频器会坏吗 的文章

 

随机推荐