打开peid,选择主窗口的“任务查看器”,如图所以,上面和windows自带的进程管理器一样,显示的是每个进程的文件名,选取其中一个进程,就会在下面看到这个进程中所加载的dll文件。
可以看到explorer.exe中已经注入了FlashGet的一个插件,这个插件的作用是在IE中如果点击了一个下载链接,FlashGet会自动弹出来询问是否下载。这个过程就是通过注入了dll文件来监控的。
自然,如果注入了恶意的dll文件,那么自然会对程序乃至系统带来危害。
上面列出了注册表中常见的自动启动的程序清单位置,一般查毒的时候只需要对其中的项目进行检查。
一般而言,如果shell和AppInit_DLLs这两个项目与正常值不同的话,那么其中表示的文件一般就极有可能是病毒了。
对于Run目录下的文件,按照下面的原则来查毒:
如果项目的路径在Program Files下面,又能确认这是安装的一个软件,那么便可以排除是病毒:
图:可以从是否有是隐藏文件来区分病毒和正常文件
目前除非十分特殊的目的,比如防止用户修改,应用程序很少具有隐藏和系统属性,所以,如果怀疑的项目具有隐藏属性,一般就可以确定是病毒了。
b.通过“版本”信息来确定
在编写应用程序时,编写者往往会把程序的版本信息、版权信息附加在程序中,可以在应用程序的上按右键,察看属性来看到版本信息。
版本信息中往往指名了程序的用图,对于病毒而已,往往没有版本信息
图:regedit.exe的版本信息
图:伪装的病毒没有版本信息
c.是用PEiD查看应用程序签名
这里介绍的便是PEid的主要功能,exe、dll文件等程序文件均有一个统一的名字:PE文件,他们往往是由各类程序设计语言,比如C++/VB产生的,或者直接又人工汇编编写。
对于前者,各类程序设计语言生成的PE文件在其代码开始处的某些固定字节总是固定的,基于这样一个原理,可以来判断某个应用程序时什么编程语言编写的:
图:用Peid发现BitComet采用VC7编写
目前的技术:加壳,简单些说就是将原先的程序包裹起来(比如压缩起来),然后把负责解包的程序覆盖在这个应用程序的头部,这样以后运行这个程序时,实际上是先由解包程序恢复出原来的程序,然后再运行。
用于压缩程序的软件aspack、upx就是一种加壳程序,同样,也能用Peid检测:
采用aspack压缩的程序,peid会显示:
ASPack 2.1 -> Alexey Solodovnikov
通常来说,目前常见的应用程序采用加壳程序的并不多见,但有一定例外,如金山词霸、CoralQQ。一些游戏为了减少空间,其主程序也可能会压缩加壳。
而常见得加壳软件有:安全软件、各类注册机、各类算号器、加壳软件本身以及病毒。这是因为这类程序往往需要通过网络传播,所以对体积有一定要求,同时目前加壳的目的除了压缩以外更重要的是能够保证程序不被反汇编,即起到加密保护作用。
对于病毒,它不但希望减少自身体积,也希望加密代码,防止分析出工作机制。所以,病毒程序被加壳的概率很大。可以通过peid提示文字,或者在扩展工具中检测是否加壳来判断。
也有极端的情况,就是病毒直接由编写者通过汇编编写,那么往往peid会无法获得信息,这样的情况也要地方。
不过采用peid分析的办法要求有一定的基本功底,所以对于大多数人来说仅仅作为参考。
如果确定一个文件是病毒,首先要做的是是用进程管理器将其关闭。
图:将病毒文件进程关闭
这样可以确保病毒停止运作,如果有很多病毒,务必将他们都停止了。
下一步便是把注册表中的对应项目删除,然后删除文件即可。
对于无法终止进程的情况:
如果无法停止病毒进程,意味着病毒文件无法删除,同时即时在注册表中删除了对应项目,病毒也往往会重新添加一遍。
对于这样的情况,可以首先将病毒文件重命名,比如将hook.exe改外hook.ex_。这样的操作是可行的。病毒往往不会去监控自己的文件名是否更改,这样一来,在下次重启时,由于已经不存在hook.exe了,病毒就不会再加载,这样就可以放心的把注册表项目和文件删除了。
2.在系统服务中查毒
这是目前各类病毒和流氓软件的趋势,即病毒作为系统服务存在。这类病毒不会出现在上述的注册表和启动项目中,但这类病毒也会随开机自动启动,也拥有各大的权限。所以一般查毒必须检查系统服务。
系统服务是在windows系统中扮演核心功能的一类程序,比如开设web服务器的话,就会有IIS服务。
目前也有很多软件也有自己的服务程序,比如安装了Windows Live Messenger,会有“共 享 USN 杂 志 阅 读器 ”这个服务。目前的杀毒软件的核心监控程序也均是通过系统服务实现的。
自然,病毒注册为系统服务也不再少数,著名的木马“灰鸽子”便是一个系统服务。
图:系统服务列表
自动类型的系统服务会在系统启动后立刻执行,手动类型的服务只有通过其他程序加载或者人工开启才能执行,而禁用类型的服务只有改变了他的启动类型才可能执行。
如果病毒注册成为系统服务,启动类型自然便是“自动”,同时如果目前处在中毒环境下,自然其运行状态为:已启动。
因而,可以首先列出自动启动类型的服务,然后通过查看其功能描述(病毒往往不写功能描述,或者会伪装)。然后查看这个服务的文件路径,再采用第一部分提到的判断病毒的办法来确定是否可能是病毒。
对于怀疑的病毒项目,可以双击他,在属性对话框中先将其停止,然后设为“已禁用”来关闭这个服务。
图:如果怀疑是病毒,可以将其关闭并禁用
作为系统服务,其运行能力完全可以通过系统来控制,所以一般将其设为禁用后便可,如果偷懒完全不用删除文件本身。但是如果想删除病毒本身,请务必按下面方法进行:
2.1 如何删除系统服务
如果想将一个怀疑是病毒的系统服务删除,并不是将服务关闭,删文件那么容易。首相要将其禁用。然后删除文件。不这样做的后果是,如果服务仍旧未自动启动类型,在下次启动windows时,由于无法找到这个要启动的服务程序,windows便认为系统便无法工作,于是会蓝屏。
删除了文件后,还需要将注册的服务项目删除,也就是在注册表中删除。这个过程可以用第3方工具来进行,也可以亲在在regedit中编辑。
系统服务对应的目录是:
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001(或者002\003,所有的都可能)\Services HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
这样服务列表中便不存在该服务了。
图:必须将项目的整个目录删除
3.采用msconfig简化查毒过程。
winXP用户可以在运行中输入msconfig工具来查看当前的系统服务、自动加载的程序,简化一定的步骤。不过对于注册表项目,shell和AppInit_DLLs并不能在其中看到!
可以利用msconfig来鉴别系统服务:
图:可以通过制造商来判断病毒
往往病毒编写者会忘记填写制造商名,所以对于没有制造商信息的服务要格外注意,不过即使制造商为microsoft,也不能排除伪造的可能。
花了近一个小时。终于把这贴搞完。小小见解希望对新手有用
联系客服