流氓软件编程
1. 什么叫流氓软件
流氓软件是指具有一定的实用价值但具备电脑病毒和黑客软件的部分特征的软件;它处在合法软件和电脑病毒之间的灰色地带,同样极大地侵害着电脑用户的权益。广大网友一直深受其害,对之深恶痛绝。
不久前,北京网络行业协会发起了一次关于流氓软件网络调查,大量网友踊跃参加。7月11日,了10款流氓软件名单公布,具体名单如下:
对于以上流氓软件,它们的最大共同特征是强制安装,相信网友们的电脑现在或者曾经都有被强行至少安装过其中一种。除了共有的特*,这几种流氓软件还各有特点,下面我们一起来看看它们到底怎样耍流氓的,提醒您平时多注意。
一、众矢之地——3721
3721的上网助手、地址栏搜索及网络实名可谓是老牌的流氓软件了,它存在的问题最多,也是网络上网友骂声最多的,理所当然地名列榜首。
经常在网上冲浪兴致正高时,电脑突然一阵慢如蜗牛,十有八九是因为要弹出3721的安装对话框。他经常不知不觉的潜入电脑,添加用户不需要的按钮、IE工具条、在地址菜单项中添加非法内容,还修改注册表设置开机自动启动。
此外,它经常集成在其它小工具软件的安装程序中,特别是那些网上下载的汉化软件、破解软件。不经意间,它就被悄悄植入了你的电脑。
更令人深恶痛绝的是它还干扰其他软件运行,并且无法彻底卸载。笔者在使用其“进行诊断”功能时,就要求卸载其他公司的软件才可使用。
不可否认,3721的上网助手的确有不错的功能,特别对于菜鸟非常实用,但是其不正确的推广方式却使得其效果适得其反,为千万网友所指!
二、广告漫天——淘宝网
虽然淘宝网不是软件,但是它无处不在的广告严重影响网友正常上网,因此还是被揪了出来,还名列第二,真是所谓群众眼睛是雪亮的啊!虽然有钱烧,在一些网站安放了代码,使得其广告无孔不入,但是也得考虑网友的感受啊!别人上网上得好好的,却突然弹出个巨大无比的广告,严重影响到网友正常的浏览,当然会使网友心情不快啦!商家为***作广告天经地义,但是也不能为所欲为,网友是顾客,多少也得给上帝面子吧?
三、不甘落后——ebay易趣
竞争对手淘宝网名列第二,有ebay撑腰的易趣当然也不甘示弱,紧随其后名列第三!虽然排名在淘宝之后,但是其流氓行为却丝毫不逊色于淘宝网。易趣的流氓行为和3721类似,它会强制安装其“易趣工具栏”、劫持浏览器(自动在ie中添加按钮、菜单或者工具条,如图2),并且无法卸载。
四、与众不同——Du下载加速器
之所以说其与众不同,在于其一些流氓行为和常规的流氓软件行为有些不同,并且相比以上几款,笔者认为实在是有过之而无不及。
它通过虚假广告诱导用户安装广告程序,其所谓的“浏览(下载)速度加快5倍”,许多网友都反应并没有多少效果。比虚假广告更严重的是,它还强行更改IE的下载界面(如图3)。笔者下载一些不大的软件时都是使用IE直接下载,被Du下载加速器改成这样严重影响笔者的使用习惯。
在传播方式上,Du下载加速器还采用了特别的方式,通过在其他共享软件上捆绑,未经用户许可就暗地里安装。笔者认为Du下载加速器和接受捆绑并且未提醒用户是否安装的其他共享软件的行为都是十分可耻的!
五、影响上网——中文上网
和3721一样,中文上网也是经常在浏览网页时弹出安装对话框的常客。叫着“中国互联网络信息中心”如此响亮的名称,却干着这种勾当实在有愧其名,不仅强制安装,而且还无法彻底卸载。
很多网友都有这样的软件,被强制安装中文上网后,输入一级域名尚可以正常使用,但是输入二级域名,例如:soft.yesky.com等,页面就经常会转到关键字通用网址自己的搜索结果页上。
为推广中文网址是好事,但是如果真是好东西,网友自然会选择,又何必强求呢?CNNIC担当了中国互联网管理者的职能,却随意参与经营和创收,这和现在大力提倡的政企分开的现代企业制度似乎背道而驰啊!拿着管理权谋取利益的做法永远是要被唾弃的!
六、名不经转——青娱乐软件
不知什么时候,经常会在开始菜单中莫名其妙多了一项从未听说的“青娱乐”。根据笔者观察,其经常采用的是捆绑在其他共享软件中,强行安装,这样的行为和Du下载加速器一样,一样可耻,而且对于笔者来说丝毫没有用处!
七、居心叵测——很棒小秘书
对于这款软件大家可能不太熟悉,它的流氓罪状是强制安装和无法彻底御载。很棒小秘书提供了搜索、使用邮箱、下载音乐、电影、交友、游戏等、实事新闻等内容;同时很棒小秘书吸引用户参与行为互动,并根据用户的上网行为和喜好发送企业的产品广告,这一点其实是笔者最担心的,它不仅是款不折不扣的流氓软件,同时有间谍软件的嫌疑,使用这款软件似乎要注意一下隐私。
八、横行霸道——网络超级搜霸
网络超级搜霸,强制安装在用户电脑上,它通常手法是捆绑在其他软件中安装,被列为十大流氓软件一点也不委屈。
九、令人费解——一搜工具条
和网络一样,一搜的问题也是强制安装。作为国际网络巨头,雅虎居然也搞这套,实在令人费解。还是奉劝雅虎先把这个一搜做得完善一些,再考虑其他事情吧!Google就是你学习的榜样!
十、屈居第十——网络猪、划词搜索
中搜在线的网络猪、划词搜索居然只排在第十,这多少有些出乎笔者的意料。依其“实力”,要进前五都不是没有道理的。大家对这样的情况应该不会陌生:在网页上选中了一些内容后,出现一排碍眼的按钮(如图4),这就是划词搜索干的!它的问题在于强制安装和无法彻底卸载,这是笔者比较经常碰到的流氓软件了,而仅仅第十的位置实在是有点委屈了!
以上我们细数了十大流氓软件的罪状,大家一定都对它们讨厌至极吧?大家一起团结起来,抵制流氓软件,对于抵制措施可以有一下几种:不要随便下载不熟悉的软件、谨慎使用共享软件、不登陆不良网站、安装软件时应仔细阅读软件附带的用户协议及使用说明、使用IE插件屏蔽等软件屏蔽、采用其他专用软件。
在用户抵制预防的同时,更重要的是必须从源头上来整治,各软件、网站厂商应该尊重用户的安全和权益,遵守起码的职业道德,遵守软件编写规范,阻止软件产品的不规范发布和传播,只有这样才能取得用户的信任与好评.
2. flashcenter是流氓软件吗
flashcenter即Flash中心并不是流氓软件,它是flash软件应用的管理中心,管理着flash软件的更新,巡检以及其他事项。
Flash中心是系统自带的软件中心的一种,主要应用管理者,当前主机上安装的所有flash动态软件的运行情况,他并不是流氓软件,可以放心使用。
名词解释:
由于HTML语言的功能十分有限,无法达到人们的预期设计,以实现令人耳目一新的动态效果,在这种情况下,各种脚本语言应运而生,使得网页设计更加多样化。然而,程序设计总是不能很好地普及,因为它要求一定的编程能力,而人们更需要一种既简单直观又有功能强大的动画设计工具,而Flash的出现正好满足了这种需求。
3. 流氓软件是什么意思
流氓软件是指具有一定的实用价值但具备电脑病毒和黑客的部分行为特征的软件。它处在合法软件和电脑病毒之间的灰色地带,他会使你无法卸载、并强行弹出广告和窃取用户的私人信息等危害,
“流氓软件”简介
来源:瑞星 2005-06-16
近日,一些“流氓软件”引起了用户和媒体的强烈关注。它们往往采用特殊手段频繁弹出广告窗口、危及用户隐私,严重干扰用户的日常工作、数据安全和个人隐私。这些软件在软件用户中引起了公愤,许多用户指责它们为“彻头彻尾的流氓软件”。
什么是流氓软件?
“流氓软件”是介于病毒和正规软件之间的软件。
计算机病毒指的是:自身具有、或使其它程序具有破坏系统功能、危害用户数据或其它恶意行为的一类程序。这类程序往往影响计算机使用,并能够自我复制。
正规软件指的是:为方便用户使用计算机工作、娱乐而开发,面向社会公开发布的软件。
“流氓软件”介于两者之间,同时具备正常功能(下载、媒体播放等)和恶意行为(弹广告、开后门),给用户带来实质危害。
流氓软件的分类
根据不同的特征和危害,困扰广大计算机用户的流氓软件主要有如下几类:
1、广告软件(Adware)
定义:广告软件是指未经用户允许,下载并安装在用户电脑上;或与其他软件捆绑,通过弹出式广告等形式牟取商业利益的程序。
危害:此类软件往往会强制安装并无法卸载;在后台收集用户信息牟利,危及用户隐私;频繁弹出广告,消耗系统资源,使其运行变慢等。
例如:用户安装了某下载软件后,会一直弹出带有广告内容的窗口,干扰正常使用。还有一些软件安装后,会在IE浏览器的工具栏位置添加与其功能不相干的广告图标,普通用户很难清除。
2、间谍软件(Spyware)
定义:间谍软件是一种能够在用户不知情的情况下,在其电脑上安装后门、收集用户信息的软件。
危害:用户的隐私数据和重要信息会被“后门程序”捕获,并被发送给黑客、商业公司等。这些“后门程序”甚至能使用户的电脑被远程操纵,组成庞大的“僵尸网络”,这是目前网络安全的重要隐患之一。
例如:某些软件会获取用户的软硬件配置,并发送出去用于商业目的。
3、浏览器劫持
定义:浏览器劫持是一种恶意程序,通过浏览器插件、BHO(浏览器辅助对象)、Winsock LSP等形式对用户的浏览器进行篡改,使用户的浏览器配置不正常,被强行引导到商业网站。
危害:用户在浏览网站时会被强行安装此类插件,普通用户根本无法将其卸载,被劫持后,用户只要上网就会被强行引导到其指定的网站,严重影响正常上网浏览。
例如:一些不良站点会频繁弹出安装窗口,迫使用户安装某浏览器插件,甚至根本不征求用户意见,利用系统漏洞在后台强制安装到用户电脑中。这种插件还采用了不规范的软件编写技术(此技术通常被病毒使用)来逃避用户卸载,往往会造成浏览器错误、系统异常重启等。
4、行为记录软件(Track Ware)
定义:行为记录软件是指未经用户许可,窃取并分析用户隐私数据,记录用户电脑使用习惯、网络浏览习惯等个人行为的软件。
危害:危及用户隐私,可能被黑客利用来进行网络诈骗。
例如:一些软件会在后台记录用户访问过的网站并加以分析,有的甚至会发送给专门的商业公司或机构,此类机构会据此窥测用户的爱好,并进行相应的广告推广或商业活动。
5、恶意共享软件(malicious shareware)
定义:恶意共享软件是指某些共享软件为了获取利益,采用诱骗手段、试用陷阱等方式强迫用户注册,或在软件体内捆绑各类恶意插件,未经允许即将其安装到用户机器里。
危害:使用“试用陷阱”强迫用户进行注册,否则可能会丢失个人资料等数据。软件集成的插件可能会造成用户浏览器被劫持、隐私被窃取等。
例如:用户安装某款媒体播放软件后,会被强迫安装与播放功能毫不相干的软件(搜索插件、下载软件)而不给出明确提示;并且用户卸载播放器软件时不会自动卸载这些附加安装的软件。
又比如某加密软件,试用期过后所有被加密的资料都会丢失,只有交费购买该软件才能找回丢失的数据。
6、其它
随着网络的发展,“流氓软件”的分类也越来越细,一些新种类的流氓软件在不断出现,分类标准必然会随之调整。
4. 遇到流氓软件应该怎么解决
预防 防范流氓软件第一步,就是要有安全的上网意识,不要轻易登陆不了解的网站,因为这样很有可能会中网页脚本病毒,从而使系统中上流氓软件。不要随便下载不熟悉的软件,如果用户不了解这些软件,当这些软件中捆绑一些流氓软件时,用户也无法察觉。安装软件时应仔细阅读软件附带的用户协议及使用说明,有些软件在安装的过程中会以不引起用户注意的方式提示用户要安装流氓软件,这时如果用户不认真看提示的话,就会安装上流氓软件,由于这是用户自己选择的,因此,用户不会受到保护。 在安装操作系统后,应该先上网给系统打补丁,补住一些已知漏洞,这样能够避免利用已知漏洞的流氓软件的驻留。如果用户使用IE浏览器上网,则应该将浏览器的安全级别调到中高级别,或者在自定义里,将ACTIVEX控件、脚本程序都禁止执行,这样能够防止一些隐藏在网页中的流氓软件的入侵。判断 第二步,判断自己是否已经中了流氓软件。这要根据流氓软件的中招症状来看。一般地,浏览器首页被无故修改、总是弹出广告窗口、CPU的资源被大量占用、系统变得很慢、浏览器经常崩溃、或出现找不到某个DLL文件的提示框,这些是流氓软件最常见的现象,如果发现计算机中出现这些现象,则很有可能是中了流氓软件,就要采取相应的措施,而如果出现CPU的资源被大量占用,系统变得很慢这样的情况,则很有可能是中了多种流氓软件的原因,更应该尽快进行相应处理。 确诊自己中了流氓软件 氓软件无论多么复杂,它们的传播流程几乎是一样的,都是会通过软件捆绑或网页下载先进入到计算机的一个临时目录里,一般是是系统的根目录或者系统默认的临时目录,然后将自己激活,这时流氓软件进入内存中正常运行。当流氓软件正常运行时,为了下一次能够自动运行,它们往往会修改注册表的自启动项,从而达到自动启动的目的。然后流氓软件会将自己拷贝到系统目录隐藏起来,然后将临时的安装文件删除,最后jian听系统端口,进行各种各样的流氓行为。 如果用户喜欢下载安装一些小的工具软件,或者去一些小的网站上浏览网页,虽然计算机没有出现上述现象,但是也有可能中流氓软件,这时也应该关注一下计算机,看是否真正中招,这时就可以按照流氓软件的这个传播链去一一排查。首先利用一些第三方的内存查看工具,看看内存中是否有一些可疑的进程或线程,这需要用户对系统中的进程或一些常用软件的进程有所了解,这样才有可能看出问题。其次,用户在查看进程的过程中应该看看这些进程的路径,如果有一些进程的路径不是正常的安装目录,而是系统的临时目录,那八成是流氓软件。 另外,用户还要看看注册表里(开始菜单的运行框里键入REGEDIT)的自启动项(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run)里是否有一些用户不认识的程序键值,这些很可能就是流氓软件建立的。行动 确诊自己中了流氓软件,清除就相对比较简单了。对于已知的流氓软件,建议用户用专门的清除工具进行清除。 在这里不建议用 户自己手工清除流氓软件,因为流氓软件越来越复杂,已经不再是那种简单的删除多个文件就能解决的了,很多流氓软件在进入系统之前,就对系统进行了修改和关联,当用户擅自删除流氓软件文件时,系统无法回复到最初的那个状态,而导致流氓软件虽然清除了,但系统也总是出现各种错误。而专业的清除工具往往已经考虑到这一点,能够帮助用户完全恢复系统。 如果在一些特殊场合用户需要手动清除流氓软件时,则按照流氓软件的传播链条,按照先删除内存的进程,再删除注册表中的键值,最后再删除流氓软件体,将系统配置修改为默认属性 这样一个过程进行处理。
5. 流氓软件的工作原理是什么
为什么“浏览器劫持”能够如此猖狂呢?放眼众多论坛的求助贴,我们不时可以看到诸如“我的IE被主页被改了,我用杀毒工具扫了一遍都没发现病毒,我把主页改回自己的地址,可是一重启它又回来了!”、“我的系统一开机就跳出一个广告,我明明用了最新版的杀毒软件的啊!”等这类关于IE异常问题的求助,80%的提问者都表示纳闷,他们已经安装了杀毒软件,可是IE仍然被“黑”了,这又是为什么?
其实这些都是典型的“浏览器劫持”现象,但是受害者不是已经安装了杀毒软件吗?为什么浏览器依然躲不过这只黑手?许多用户对这个领域都存在一种误区心理:浏览器劫持?我有最新的杀毒软件,我不怕!
于是,当他们遭遇“浏览器劫持”时,惊讶了。
要知道,杀毒软件自身也只是一种辅助工具,它不可能完全保护系统的安全,更何况,杀毒软件用户必须知道一个事实:“浏览器劫持”的攻击手段是可以通过被系统认可的“合法途径”来进行的!杀毒软件只能通过“特征码”的形式来判断程序是否合法,但这是建立在人为定义以后的,而实施“浏览器劫持”的程序可以有很多,防不胜防。
为什么说“浏览器劫持”可以说是合法的呢?因为大部分浏览器劫持的发起者,都是通过一种被称为“BHO”(Browser Helper Object,浏览器辅助对象)的技术手段植入系统的。
BHO是微软早在1999年推出的作为浏览器对第三方程序员开放交互接口的业界标准,它是一种可以让程序员使用简单代码进入浏览器领域的“交互接口”(INTERACTIVED Interface)。通过BHO接口,第三方程序员可以自己编写代码获取浏览器的一些行为(Action)和事件通知(Event),如“后退”、“前进”、“当前页面”等,甚至可以获取浏览器的各个组件信息,像菜单、工具栏、坐标等。由于BHO的交互特性,程序员还可以使用代码去控制浏览器的行为,比如常见的修改替换浏览器工具栏、在浏览器界面上添加自己的程序按钮等操作,而这些操作都被视为“合法”的,这就是一切罪恶根源的开始。
BHO的出现帮助程序员更好的打造个性化浏览器或者为自己的程序实现了方便简洁的交互功能,可以说,如果没有BHO接口的诞生,我们今天就不能用一些工具实现个性化IE的功能了。从某一方面来看,BHO的确是各种缤纷网络互动功能的幕后功臣,但是一切事物都是有两面性的,这个恒古不变的真理同样对BHO有效,于是就有了今天让安全界头痛的“浏览器劫持”的攻击手段诞生。
看看前面我提到的BHO接口特性,你想到了什么?BHO可以获知和实现浏览器的大部分事件和功能,也就是说,它可以利用少量的代码控制浏览器行为。程序员可以设计出一个BHO按钮以实现用户点击时通知浏览器跳转到某个页面完成交互功能,当然就可以进一步写出控制浏览器跳转到他想让用户去的页面,这就是最初的“浏览器劫持”的成因:BHO劫持。
在描述BHO劫持之前,我们先要对BHO接口的启动做个简单介绍:符合BHO接口标准的程序代码被写为DLL动态链接库形式在注册表里注册为COM对象,还要在BHO接口的注册表入口处进行组件注册,以后每次IE启动时都会通过这里描述的注册信息调用加载这个DLL文件,而这个DLL文件就因此成为IE的一个模块(BHO组件),与IE共享一个运行周期,直到IE被关闭。
IE启动时,会加载任何BHO组件,这些组件直接进入IE领域,而IE则成为它们的父进程和载体,从此IE的每一个事件都会通过IUnknown接口传递到BHO用以提供交互的IObjectWithSite接口里,这是BHO实现与IE交互的入口函数。
BHO接收到IE接口传递来的参数后开始判断IE正在做什么,理论上BHO可以获取IE的大部分事件,然后根据程序员编写的代码,BHO持有对特定事件做出反应的决定权,例如一个可以实现“中文网址”的BHO,就是通过GetSite方法获取到IE当前打开的站点URL(或通过IURLSearchHook接口来获知),如果BHO发现获取到的URL和内置的判断条件匹配,该BHO就会启用SetSite方法强制IE跳转到程序员设定的页面去,这个过程就是利用about:blank篡改主页的“浏览器劫持”方法之一,它的实现原理其实很简单,程序员编写一个恶意BHO组件,当它获取到IE窗口的当前站点为“about:blank”时就强制IE内部跳转到指定的广告页面,于是闹出了不久之前沸沸扬扬的“IE空白页劫持事件”。
了解了这种类似恶作剧的作案手段,要解决它就容易了,只要找到并删除这个隐藏在系统里的BHO程序即可。
除了这类“广告软件”性质的BHO,还有一种利用IURLSearchHook接口实现的另一类更隐蔽的BHO,这种BHO从某些方面来说大概不算BHO,因为它并不是响应IUnknown,而是等待IE创建IURLSearchHook来启动。IURLSearchHook被浏览器用来转换一个未知的URL协议地址,当浏览器企图去打开一个未知协议的URL地址时,浏览器首先尝试从这个地址得到当前的协议,如果不成功,浏览器将寻找系统里所有注册为“URL Search Hook”(资源搜索钩子,USH)的对象并把这个IE不能理解的地址发送过去,如果某个USH对象“认识”这个地址,它就返回一个特定的标识告诉IE它知道怎么打开这个地址,然后IE就根据约定的方法调用它,最终打开这个地址。其实USH对象并不陌生,我们一些偷懒的用户就经常为了省事而不输入“http://”,但是IE最终还是能认出并打开某个地址,就是USH的功劳,但是这一点又被恶意程序员拿来磨刀了,通过创建自己的USH对象,恶意程序员能够命令IE在找不到一些网站时自动跳转到事先设置的站点里,如果这个站点带毒或者挂马,用户就完了。
这类BHO的解决方法和前面一样,只是它比较隐蔽,除非用户经常偷懒,否则可能直到系统崩溃也不会知道自己已经感染了这种东西。也许你会说,只要用户的输入永远不会让IE无法识别,这种渗透不就白费了?但是事实不容乐观,我们无法得知BHO作者还会不会通过其他方法拦截IE,说不定每隔一段时间就让IE弹出一个广告呢?
上面说了这么多BHO和IE合作搞破坏的事例,可能会给读者造成一种“BHO必须在IE传递数据后才能行动”的误解,然而事实并非如此,浏览器自身也是一个标准的可执行程序,而BHO只是借用这个程序进程启动的DLL,它并非API那种要用的时候就让你过来忙活,忙活完了就一脚踹开的奴隶形态DLL,前面说过了,BHO是一种在浏览器加载时一同启动的例程,它相当于一种自身运行逻辑不太明确的子进程(里面都是对IE事件的响应和操作代码),这个特性就造成了BHO DLL和API DLL本质的区别,BHO并不需要所有事件都必须依赖这个大家伙,它可以有自己决定的权利,只要适当的修改,就能用BHO实现类似DLL木马的功能,当然,这并不是说我们就能在IE眼皮下公然的肆无忌弹干坏事的,由于BHO自身是作为IE子进程启动的,它就必须受到一些限制,例如程序员不能在里面自己创建网络连接,这样会导致IE报错崩溃并供出你写的DLL,害怕BHO成为另一种后门的用户可以松口气了,要在BHO里实现Winsock大概只能在IE休息的时候才可以,但是会有哪个用户开着个开空IE什么事情都不做呢?
但这并不是说BHO就一定能无害了,虽然用它不能做到远程控制,但是别忘记,BHO能看到IE的所有东西,也就能任意的访问用户文件和注册表,在这个条件成立的前提下,入侵者可以编写代码查找用户隐私,然后在适当时候通过SetSite提交出去——谁叫现在Webmail这么流行呢?这就是为什么许多厂商发布诸如“中文网址”、“网络搜索”、“IE定制”、“IE监视”这些功能的BHO的同时都保证“不搜集用户隐私”的原因,只要你想要,BHO就能得到一切。
有些人也许会想,既然BHO是微软浏览器的权利,那我不用IE了,我用Opera、Firefox不行?对于这点固然无可厚非,但是你用不用Windows?用不用共享软件?如果你用Windows,那么,你仍然可能处于被BHO接触到的世界,因为Windows本身就是和IE紧密结合的,这就把“IE进程”的范围给扩大了,细心的用户大概会发现,IE里能直接访问“我的电脑”,“我的电脑”窗口也能迅速变成IE,因为它们实质都是依赖于IE内核的,正因为这个原因,BHO可以在你打开一个文件夹时跟着偷偷启动。同时,现在的网络正处于一种“共享软件捆绑战略”大肆实施的时代,你再小心也不能避免某些共享软件固定捆绑了BHO的行为,安装后你才会发现文件夹上又多了个什么“助手”、“搜索”了。要想彻底逃开BHO的围困,大概只能放弃使用Windows了。
Hook,你钩住浏览器了
正如《侏》里的这句话一样,入侵者也在不断寻找他们的新出路,虽然上面我说了这么多BHO的负面事例,但是真正的危机并不是只有BHO的,在一些使用BHO行不通的场合里,入侵者开始投掷他们的钩子。
什么是钩子?让我们先看看它的官方定义:
钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。
钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。
可能上面的官方定义对一部分读者理解有点困难,其实,钩子就像是一切程序的“先知”,一个实现了钩子的程序自身虽然也是普通程序,但是它总能在别的程序得到数据之前就已经知道了一切,这是为什么呢?对Windows系统有一定了解的读者应该知道,Windows系统是一个通过“信息处理机制”运作的系统,在这个系统里传递的数据都是通过“消息”(Message)的形式发送的,各个消息都遵循了官方的约定,否则就不能让系统产生回应。而且这个传递步骤是颠倒的,例如我们关闭了某个程序,我们可能会认为是程序自己关闭后通知系统的,其实不然,当用户点击关闭按钮的时候,Windows就会把一个叫做WM_CLOSE的消息传递给这个程序,程序接收到消息后就执行卸载自身例程的操作。理解了这点,就能知道钩子的原理了,所谓钩子程序,就是利用了系统提供的Hook API,让自己比每一个程序都提前接收到系统消息,然后做出处理,如果一个钩子拦截了系统给某个程序的WM_CLOSE消息,那么这个程序就会因为接收不到关闭消息而无法关闭自身。除了消息以外,钩子还可以拦截API,像我们都熟悉的屏幕翻译软件就是Hook了一些文本输出函数如TextOutA而达到了目的。
技术让编程人员可以轻松获取其他程序的一些有用数据或传递相关数据,像现在常见的一些游戏外挂,它们就是利用Hook技术钩住了游戏窗体,然后就可以识别游戏里面的行为和模拟发送按键鼠标消息,最终实现电脑自己玩游戏的功能。把这个技术应用到浏览器上面,就成了另一种控制浏览器行为的方法。
钩子有两种,本地钩子(Local Hook)和全局钩子(Global Hook),本地钩子只在本进程里起作用,故不属于讨论范围;全局钩子代码必须以DLL形式编写,以便在钩子生效时被其它进程所加载调用,因此我们看到的大部分Hook程序都是DLL形式的。
其实之前提到的BHO也可以视为一种针对IE的钩子,它钩的是IE的事件,这就是IE与BHO交互的起点,但是对于再复杂一点的操作,例如判断IE下载的是GIF图片还是JPEG图片,BHO无能为力,因为它仅仅知道IE的事件为DownloadBegin和DownloadComplete,对于具体内容,IE本身是不会告诉它的,否则IE岂不是要忙死了?至少我也没见过哪个领导还需要向秘书汇报中午吃了鸡肉还是鸭肉的吧,BHO可不是IE的老婆,或者说IE没有气管炎。
所以,为了得到IE的更多数据,程序员开始钩IE了。与BHO不同,钩子不需要被动的等待IE事件,它直接和IE形成上司对下属的关系,这次轮到IE要做什么都得经过它批准了。Hook形式的控制不需要DLL文件必须与IE的注册表入口产生组件关系,它可以是一个独立的DLL,通过Rundll32.exe或自带的Loader EXE启动,而且由于它属于Hook形式, 在钩子有效的情况下会被系统自动插入其他程序的进程中,是不是有点像DLL木马呢?
IE钩子程序载入进程后便能获知所有的消息类型、API和内容,一旦发现某个符合要求的消息,如IE执行了某个事件,或者用户输入了特定内容,钩子的处理代码就开始工作了,它先拦截系统发送给IE的消息,然后分析消息内容,根据不同消息内容作出修改后再发给IE,就完成了一次Hook篡改过程。用着名的3721实名搜索做例子,一些人会以为它是采用了BHO或者IURLSearchHook完成中文域名的识别跳转的,其实它是用了能够第一个得到Windows消息的Hook技术,这样一来就可以避免被其他的竞争对手抢先解析域名了:3721的主程序就是一个Hook DLL,它监视IE地址栏的消息,一旦用户输入的是中文,它便在其他BHO类插件工作之前拦截了这个消息,并调用自身代码完成中文域名到英文URL的转换工作,然后返回(也可能与自己的BHO DLL配合)一个让IE跳转到英文URL的消息,完成域名的翻译任务。
IE钩子能帮助程序员用少量代码完成更多的IE交互工作,但是一旦这个钩子被用于犯罪,其后果也是严重的,恶意程序员可以写一个拦截IE输入的键盘钩子,达到窃取密码的作用,这样无论你是用HTTP明文协议还是SecurityHTTP加密协议都不能逃避密码被盗的下场了,因为它抓的是你在IE里的输入,后面的数据传输已经不重要了。
Winsock LSP
全称为“Windows Socket Layered Service Provider”(分层服务提供商),这是Winsock 2.0才有的功能,它需要Winsock支持服务提供商接口(Service Provider Interface,SPI)才能实现,SPI是一种不能独立工作的技术,它依赖于系统商已经存在的基本协议提供商,如TCP/IP协议等,在这些协议上派分出的子协议即为“分层协议”,如SSL等,它们必须通过一定的接口函数调用,LSP就是这些协议的接口。
通过LSP,我们可以比分析基本协议更简单的得到我们想要的数据内容,如直接得到系统上运行的浏览器当前正在进行传输的地址和内容,不管这个浏览器是IE,还是Opera或Firefox,因为LSP是直接从Winsock获取信息的,即使不用微软生产的汽车,至少你这辆汽车一直是在微软建造的公路上跑的吧。
LSP用在正途上可以方便程序员们编写监视系统网络通讯情况的Sniffer,可是现在常见的LSP都被用于浏览器劫持,使用户又多了个噩梦。
6. 流氓软件是什么意思
“流氓软件”是介于病毒和正规软件之间的软件。如果电脑中有流氓软件,可能会出现以下几种情况:用户使用电脑上网时,会有窗口不断跳出;电脑浏览器被莫名修改增加了许多工作条;当用户打开网页时,网页会变成不相干的奇怪画面,甚至是黄色广告。
有些流氓软件只是为了达到某种目的,比如广告宣传。这些流氓软件虽然不会影响用户计算机的正常使用,但在当用户启动浏览器的时候会多弹出来一个网页,以达到宣传目的。
(6)流氓软件编程扩展阅读:
流氓软件的特点
1、采用多种社会和技术手段,强行或者秘密安装,并抵制卸载;
2、强行修改用户软件设置,如浏览器的主页,软件自动启动选项,安全选项;
3、强行弹出广告,或者其他干扰用户、占用系统资源行为;
4、有侵害用户信息和财产安全的潜在因素或者隐患;
5、与电脑病毒联合侵入用户电脑;
6、停用杀毒软件或其他电脑管理程序来做进一步的破坏;
7、未经用户许可,或者利用用户疏忽,或者利用用户缺乏相关知识,秘密收集用户个人信息、秘密和隐私。
7. 如何做一个流氓软件
首先你要学会编程,会基础的编程文件操作和下载文件等基本代码的运用(如果不行,也可以去vbs吧看看,里面都是整人的小代码,简单易学,甚至可以直接复制),然后你要有机会接近他的电脑并安装你的程序,卸载对方杀毒软件
8. 黑客们在编写扰乱社会和他人的计算机程序,这些代码统称为什么
黑客们在编写的计算机程序代码统称为恶意代码。
9. 电脑被下了流氓软件影响编程吗
影响,这类程序往往影响计算机使用,并能够自我复制。