怎么劫持别人电脑里的DLL文件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么劫持别人电脑里的DLL文件?相关的知识,希望对你有一定的参考价值。

电影中的2012离我们还有多远,没有人知道,但中国4亿网民电脑的2012却已经到来了。因为普遍存在于常用软件的DLL劫持漏洞曝光,直接威胁所有网民的电脑,该漏洞被黑客亲切地称为“世界末日漏洞”!
常用软件无一幸免
你上网吗?你下载文件吗?你看电影吗?你用Office吗?你听音乐吗?也许你感觉这些问题比较小白,所有电脑用户,都要玩这些,没有例外。可你知道吗,当你用软件做这些操作时,威胁正一步一步冲你逼来——盗号病毒虎视眈眈地盯着你的电脑,试图远程入侵,企图盗取你的网银、网游等账号和密码。
现在,你心中很疑惑,为什么做这些操作会引来盗号病毒?因为DLL劫持漏洞,因为你使用的常用软件中就有该漏洞!例如浏览器有火狐(图1)、Opera等,下载软件有迅雷、风行、uTorrent等,播放软件有暴风影音、QQ音乐播放器、酷狗音乐、Winamp等,图片处理软件AutoCAD、Photoshop等,办公软件Office,QQ游戏……

图1
可以毫不夸张地说,中国4亿网民,无人逃得过DLL劫持漏洞的威胁,这也是为什么该漏洞被称为世界末日漏洞的原因。糟糕的是,该漏洞的利用代码已经被公开了,利用该漏洞的病毒正在蔓延。更可怕的是,如果病毒进行了免杀,安全软件将无力应对,就连启发式扫描也很难作为!
一个允许冒名顶替的漏洞
导致DLL劫持漏洞产生的原因一点不复杂,就是部分程序在加载DLL文件时,只给出了文件名,而没有给出完整路径,系统不得不按照默认搜索顺序找出DLL文件(图2)。黑客就想,如果制造一个与程序同名的DLL文件,采取技术手段确保它先于正常DLL文件被加载,不就可以激活病毒了吗?

图2
打一个比喻:如果一封信件上指明了收信人的房门号,邮递员就会直接投递过去;反之邮递员就会挨家挨户敲门去询问,如果有不怀好意的人知道了邮递员敲门的顺序和收信人的姓名,就可以假冒收信人抢先一步接触邮递员并得到信件,再伪造信件命令程序运行病毒。
看到这里,有的读者朋友可能会问:不对呀,这个原理很早就被人发现了,此前还有利用该原理的病毒呢!这不是在忽悠我们吗?不错,很早以前就有人发现了该漏洞的原理,微软还曾经给出了警告,不过一直被忽视了。
忽视的理由很简单,此前该漏洞的利用只能在本地,所以要触发漏洞,得先搞一个DLL文件到电脑里,过程野蛮容易引起杀毒软件的警觉,导致病毒激活的成功率不高,当真是食之无味弃之可惜。
不过,现在发现了远程利用该漏洞的方法,不用想办法把DLL文件塞进用户的电脑,只要诱使用户访问特定的东东,就可以激活漏洞,这样一来该漏洞的价值体现出来——具备了大规模传播病毒的能力,这才引起安全厂商和微软的高度关注,才会推出应对方法。
用补丁封住漏洞
如此恐怖的漏洞,如何才能堵上?等软件公司推出更新补丁?这么多常用软件,太麻烦了,最好的方法是安装微软紧急推出的安全补丁。登录http://support.microsoft.com/kb/2264107,拖动鼠标到网页的中间,可以看到提供补丁下载的链接,根据自己Windows系统版本下载相应的补丁并安装。
接着,登录http://go.microsoft.com/?linkid=9742148,下载第二个补丁,安装后,远程利用DLL漏洞的途径就被掐断了,但还别松气,漏洞还可以在本地被利用。那又该如何防范呢?
防范的方法是修改注册表。点击“运行→regedit”,定位到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\,右侧有一个名为CWDIllegalInDllSearch的子键,双击该子键,修改它的值,填入ffffffff,选择“十六进制”(图3),点击“确定”即可,最后重启电脑就彻底堵上该漏洞了(堵漏洞的原理是:修改DLL的查找顺序)。

图3
治本还要靠规范软件编程
根据漏洞激活的原理,我们可以知道导致漏洞出现的根本原因是软件编程的不规范,不关系统的事,这也是当初漏洞才爆发时,为什么微软不愿意推出安全补丁——至少表面原因是这样。
那真正的原因是什么呢?现在的补丁表面看堵上漏洞了,其实还留下了隐患,如果黑客研究透了补丁的原理,就可能再出现破解之法,例如还原注册表、破解调整后的搜索顺序等,说白了微软的补丁只能治标,不能治本。
要治本微软必须修改当前DLL的运行机制,可该机制已经非常成熟了,且如果改动工作量惊人,所以微软初期不愿意推出补丁,但责任所在不得已推出了治标的补丁。从技术来看,要治本最简单的方法是规范软件编程,我们预计不久之后,大量被漏洞威胁的软件会推出相应的补丁,大家注意及时更新,避免被利用该漏洞的病毒攻击。
参考技术A 放在同一目录中,名字相同,源dll改名,自己的dll导出接口要与源dll一致,然后转发响应的调用即可。 参考技术B Gb接口:PCU与SGSN间的接口,采用帧中继协议,通过直联或者帧中继网络实现;
Gr接口:SGSN与HLR间的接口,进行用户数据库的访问及接入控制;
Gs接口:SGSN与MSC间接口;
Gd接口:SGSN与SMSC间接口,用以支持数据业务和电路业务的协同工作和短信收发等功能;
Gn接口:SGSN与GGSN/SGSN间的接口,SGSN和GGSN之间采用基于TCP/IP协议的GTP规程,称为Gn接口;
Gi接口:GGSN与外部网络也采用TCP/IP连接方式,称为Gi接口;
Gp接口:GGSN与不同PLMN之间连接时使用Gp接口;
Gc接口:GGSN与HLR间接口
Ga接口:GGSN通过Ga接口完成计费信息的传送工作
参考技术C 不会 参考技术D ...不会

开机出现加载硬件抽象层(HAL)所需的DLL 文件怎么修复???

关于hal.dll文件丢失的问题,以下内容为百度知道Ctangel整理,均为个人日常工作中所遇到并且验证的原因和方法。如需转载请注明出处。
很多时候我们能遇到开机系统无法启动,提示hal.dll丢失的错误。一般这种问题有那么三种可能性下面一一阐述。
一、hal.dll文件确实丢失
开机提示这文件丢失,找pe进去,打开c:\windows\system32\这个目录发现缺失没有这个文件,这种情况有可能是误删文件或者杀毒造成的,也有可能非正常关机造成。这个坚决方法比较简单,找别人机器上的同名文件复制过来就好了。当然如果是严重的病毒造成的,那就够呛能管用,那时候只能重新做系统了。
二、hal.dll文件并没有丢失,而且大小和别人机器上的一样
开机提示着文件丢失,找pe盘进pe发现这个文件并没有丢失,这种情况有两种可能,一般的兼容机而且只有一个主分区的机器,很可能是硬件造成的,主要怀疑对象是内存。找其他内存插上测试。如果是内存的问题,插上没有问题的内存之后就可以正常进入系统了。记住,这时候不要考虑复制这个文件,你复制了这个文件还会报其他文件丢失的。如果换内存还不能启动,复制该文件后提示其他文件错误,也可以考虑病毒造成的,开机按F8,选择最后一次正确的配置,然后进系统杀毒,进不去系统的话那就重新安装吧。
还有一种情况,有些品牌机,会有两个主分区,比如DELL的机器,来的时候有一个47M的隐藏主分区。以前比较老的一些ghost XP版本安装完后就会提示hal.dll文件丢失.还有人再清理了C盘文件之后出现这种情况。这种情况是和boot.ini有关。我们打开一般正常机器的boot.ini看一下,主要有以下内容:

[boot loader]
timeout=3
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect

看到没,disk(0)rdsk(0)partition(1) 就是说启动的是磁盘0分区1的系统
所以有2个主分区的品牌机才会造成启动的时候失败提示hal.dll丢失的情况,那么我们只需要进PE改一下位于C盘根目录下的隐藏文件boot.ini的内容就好了,就是把分区1改成分区2,改完就是下面这样子的,大家可以直接复制下面的内容到你的boot.ini
[boot loader]
timeout=3
default=multi(0)disk(0)rdisk(0)partition(2)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect

改完之后重新启动您的计算机吧,您会发现问题已经解决了。记得以后不要再删这个文件了。
参考技术A

开机出现加载硬件抽象层(HAL)所需的DLL 文件的修复方法如下:

方法一:

    启动故障回复控制台;  

    输入: expand x:\\i386\\hal.dl_ c:\\windows\\system32\\hal.dll  

    输入exit,回车;

方法二:

    打开系统盘里面I386文件夹,找到一个HAL.DLL的文件,

    复制下来,再通过PE启动电脑,

    把hal.dll文件放在C:\\WINDOWS\\system32下,

    替换原来的文件,重启电脑就应该能恢复。

方法三:

    用光盘的PE进去后改一下位于C盘根目录下的隐藏文件boot.ini的内容,

    打开后,修改凡是带partition(1)的地方,改成partition(2),

    改完就是下面这样子的,boot.ini [boot loader]timeout=3default=multi(0)disk(0)rdisk(0)partition(2)\\WINDOWS[operating systems]multi(0)disk(0)rdisk(0)partition(2)\\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect

    改完之后重新启动计算机。,可以看到C盘下这个文件。

参考技术B 因为你这个C盘根目录下的隐藏文件boot.ini的内容需要修改,一般就是把分区1改成分区2,因为你的C盘应该是在第二分区,但是这个文件中设置的,从第一分区启动。建议你仔细看看,用光盘的PE进去后,可以看到C盘下这个文件,打开后,修改凡是带partition(1)的地方,你改成partition(2),你试试。 这个问题我遇到过,因为装了系统无法进入,就这样修改的。

以上是关于怎么劫持别人电脑里的DLL文件?的主要内容,如果未能解决你的问题,请参考以下文章

DLL文件劫持应该怎么办 急啊

病毒劫持dll文件是啥意思?

我玩御龙在天点开游戏QQ电脑管家就显示DLL劫持怎么弄才好

易语言dll劫持注入写法

怎么调用别人的dll文件

dll文件放在哪