反病毒教程第9课:文件应用与挂钩启动

互联网 | 编辑: 黄蔚 2009-07-26 00:00:00转载 一键看全文

第9课教程,主要讲的是特殊DLL,文件关联以及挂钩启动的知识内容。

文件关联

三.文件关联

一种类型的文件与一个可以打开它的程序建立起一种依存关系,当双击该类型的文件时,系统会自动用已关联的程序来打开它.例如,默认情况下,.txt文件是用记事本来打开的,.jpg文件是用windows图片和传真查看器来打开的.当某种类型的文件未与任何程序关联时,双击它系统会弹出打开方式对话框.

修改文件关联的方法很多,这里大致介绍几种常用的.我以.jpg文件用记事本来打开为例.

1. 点击任意一张jpg图片属性,单击更改,出现打开方式对话框,选择记事本(也可以点击浏览找到%systemroot%\notepad.exe),确定即可.现在双击一下图片看看,出现的是记事本,但是显示乱码.现在改回来吧,只能通过选择windows图片和传真查看器改回来,无法通过浏览来改,其实也是可以的,浏览时,下面选择所有文件就行了,因为windows图片查看器并不是一个可执行文件而是一个动态链接库,文件位置是%systemroot%\system32\shimgvw.dll,当然dll文件是不能直接执行的,事实上它是由rundll32.exe来启动的,刚刚运行过那个很长的命令的话应该不会有太大的疑惑.

2.点击工具,文件夹选项,文件类型,找到JPG,单击更改,出现打开方式对话框,和刚才一样操作就行了,简单.点击下面的高级,出现编辑文件类型对话框,双击open(或者选中后点右边的编辑)

看下用于执行操作的应用程序.

值为rundll32.exe C:\WINDOWS\system32\shimgvw.dll,ImageView_Fullscreen %1

和上面运行的那个命令很类似吧,区别只在于最后面是%1,而不是一个文件名.%1表示将选中的图片文件名作为参数传递给windows图片查看器,也就是说双击的时候,%1将被当前的文件名替换(在批处理中,%1代表命令行的第一个参数,).嘿嘿,你可以把%1换成某具体图片的路径试试,很爽吧,无论双击哪个图片,打开的都是同一个图片.(玩得差不多了记得改回来哦)

3.注册表(regedit),展开 HKEY_CLASSES_ROOT\jpegfile\shell\open\command,是不是在右边看到了和刚才的那一串"rundll32.exe C:\WINDOWS\system32\shimgvw.dll,ImageView_Fullscreen %1"一模一样,这就是jpg文件的打开方式,看一下这个注册表路径吧

HKEY_CLASSES_ROOT\jpegfile\shell\open\command

HKEY_CLASSES_ROOT不多说,这下面的都是一些OLE信息,包括文件扩展名,文件类型,文件图标,关联的打开方式,以及分类标识(CLSID).

jpegfile某种文件类型,这里是jpg图片文件.

shell一般是固定的

open选中该类文件右键第一项所出现的文字(该项是黑体的),默认显示为打开,这里是预览.可以是其他名字,但这样将不保证它一定会出现在右键第一项,特别是有多种程序关联时.我做个示范,把open重命名为open1.

重命名前:

重命名后:

可能你的右键菜单没这么多选项,这里真正只与jpg文件关联的只有用ImageReady编辑,用Photoshop编辑,预览,打印这四个,对应注册表如图:

如何将预览放到右键第一个选项而又不以open为名,很简单,只要让它在注册表的位置排到另两个前面就可以了,注册表中的项是按字母顺序排列的,所以只要我的名字能比EdtIR8更靠前就行,比如以A开头的...

command当前一项是open时,它表示双击或右键选择第一项时所要执行的命令,只要有command的上一项,右键菜单都会出现一个选项而command表示选择这一项时所要执行的命令.

如果要将jpg用记事本打开,只要将rundll32.exe C:\WINDOWS\system32\shimgvw.dll,ImageView_Fullscreen %1修改为notepad.exe %1即可,更好的写法应该是notepad.exe "%1",加上引号的目录是即使要打开的文件路径中包含空格,也可以打开.因为默认情况下,命令行的各参数间是以空格分隔的,如果文件路径中出现空格,空格前将不再认为是第一个参数,从而导致系统找不到指定文件等.但这里由于notepad的特殊性,不会出错的.

有兴趣的可以看看txt,exe,com,bat,vbs等文件的关联,如果病毒要修改文件关联,这几个是优先选择的.

其中exe的关联是比较特殊的,它的值为"%1" %*

这里的"%1"可以和上面一样理解,%*是指其他所有参数,这也是exe文件可以带参数运行的原因.

试试把它的值改成%1 %*,即去掉%1上的引号,很多程序仍然可以正常打开,有些却不行,原因是该exe文件路径中有空格,打开目录运行C:\Program Files\WinRAR\WinRAR.exe,结果如图:

病毒一般会直接把这个值改成病毒文件的路径,不带参数.此时当你双击exe文件时,运行的将是病毒,这种改法是最常见的.另一种改法是不直接修改exefile下面的项,而是这样修改:

新建一个项,名字任意,比如我取名为anti4,继续新建shell,command等项,将值改为病毒文件的路径.

然后,将HKEY_CLASSES_ROOT\.exe右边名称为默认的项的值改为anti4.

当你双击一个文件时,系统所做的工作是这样的:先判断文件的后缀,比如我双击的是一个exe文件,则系统会在HKEY_CLASSES_ROOT下面找名为.exe的项,读取它的值,比如它的值为anti4,那么系统再找名为anti4的项,再读取它下面shell\command的值,然后根据这里的命令打开.

刚刚是不是在我的右键菜单中看到了有个复制文件路径的命令,它是关联所有文件的,目的是为了自己使用方便,方法是这样的:

在 HKEY_CLASSES_ROOT\*\shell下新建一个项,名称任意,直接取名为"复制文件路径"好了,在它下面新建一名为command的项, 将它右边的值改成符合要求的命令,这个命令其实是一个程序文件,该程序的功能是读取命令行的第一个参数,并将该参数复制到系统剪贴板并退出,有能力的自己写一下这个程序,或者下载附件中的解压到某个路径下,command的值就改为这个程序的路径,后面加个半角空格,再加%1即可,比如d:\soft \system\copy.exe %1

这样只是关联了所有类型的文件,如果要关联文件夹,方法和上面一样的:

[HKEY_CLASSES_ROOT\Directory\shell\复制文件夹路径\command]默认=d:\soft\system\copy.exe %1

然后就是一些细节问题了,比如去掉第一个字下面的下划线,加个快捷键等.

[HKEY_CLASSES_RO/T\Directory\shell\复制文件夹路径]默认=复制文件夹路径(&C)

关联文件也可以到HKEY_CLASSES_ROOT\Folder\shell下去修改.

如果你要把记事本关联到所有文件,方法也是一样的,如果要关联某几种文件类型,就到特定的文件类型下修改即可.其他的东西大家可以自己探索下,比如修改某类文件的图标,不显示某类文件的扩展名等.

提示:试试键盘 “← →” 可以实现快速翻页 

一键看全文

本文导航

相关阅读

每日精选

点击查看更多

首页 手机 数码相机 笔记本 游戏 DIY硬件 硬件外设 办公中心 数字家电 平板电脑