作者:网络转载 来源:剑盟反病毒团队
这一课详细来讲一下几个配置文件.
配制文件的扩展名一般为.ini,内容的一般格式如下:
复制内容到剪贴板
代码:
[字段名]
关键字=值
在一个配制文件中,可以有多个字段,一个字段下也可以有多个关键字.字段名必须用中括号括起来.字段名,关键字,值等可以是中文,英文,各种符号等(一般英文居多).对于系统中的配制文件,字段名一定是固定的,关键字大都也是固定的,你不能随意更改成其他名称,只有后面的值才可以改,修改时也要符合一定的规则.
一.desktop.ini
这个文件在第5课中已经详细地讲过了,这里就不再讲了.
二.autorun.inf
还是先贴一下上一课中的那个文件的内容,上一课中讲得很简单,这一课继续讲,不要求完全掌握,只要知道上一课中的内容就行:
复制内容到剪贴板
代码:
[autorun]
open=progict1.exe
shell\open=打开(&O)
shell\open\Command=progict1.exe
shell\open\Default=1
shell\explore=资源管理器(&X)
shell\explore\Command=progict1.exe
第一行中的autorun是一个字段名,autorun.inf这个配制文件总共可以支持三个字段,另两个是 AutoRun.Alpha和DeviceInstall.autorun字段是每个autorun.inf文件心须有的并且所有windows系统都支持该处的配制(除非禁用了自动播放等),其他两个是可选的,AutoRun.Alpha适用于基于RISC的计算机光驱,而DeviceInstall则要求必须是XP及以上系统.下面一个个来具体说明:
[autorun]
1.Open
这个单词的意思为打开,也就是说当你打开设备(如磁盘,光盘,U盘)时,等号后面的命令(可执行文件)也会跟着执行,命令可以带参数,如ping 127.0.0.1,必须是.exe,.com,.bat等文件,其他文件需使用start.exe打开或使用ShellExecute命令,命令的起始目录必须是设备根目录或系统的Path环境变量中所指定的,否则将无法运行.
2.ShellExecute
功能与Open类似,但可以是任意格式的文件,系统会根据文件关联选择合适的程序打开它.比如你写一行ShellExecute=ratebbs.doc,当你双击时,系统将自动调用word程序来打开这个名为ratebbs.doc的文档(前提是这个文档必须存在).
3.Icon
用于指定盘符的图标,等号后为图标的路径,可以是.ico,.bmp,.exe,.dll.当文件格式为.exe和.dll时需要使用序号来指定图标,若不指定,则默认为0,文件路径与序号之间用半角逗号隔开,比如我可以这样写:Icon=E:\edu\antivirus\anti\anti.exe,0
4.DefaultIcon
这个是用于指定将被自动执行的程序的图标的,如果指定了另外一个图标,则原来程序的图标将不会显示,也就是说它的优先级高于程序本身显示的图标.设置方法和关键字Icon一样.
5.Label
用于指定磁盘的默认描述\卷标,默认为本地磁盘,卷标命名规则好像和文件名一样,不能包含一些特殊字符,可以有中文,空格等.
6.shell
这个说简单也简单,说复杂也复杂,因为自由度比较大,
复制内容到剪贴板
代码:
shell\open=打开(&O)
shell\open\Command=progict1.exe
shell\open\Default=1
中间都有一个open(标识),其实也可以换成其他名字的,但三行中必须同时更改才有效,第一行的效果是右击盘符时将出现一个名为打开的选项,后面的 (&O)的效果是指定快捷键.第二行的效果是当你选择打开时,运行指定的命令,第三行的效果为让这个命令出现在右键快捷菜单的最上面.Command意为命令行,它后面的设置方法和关键字open是一样的.
默认情况下,系统可以识别open,explore,find,ShellExecute等标识,也就是说当你使用这几个标识时只要写中间的那一行就可以了(第一行可以不写),使用其他标识时前两行必须有,且标识必须一致,举例如下:
复制内容到剪贴板
代码:
shell\ratebbs=反病毒(&A)
shell\ratebbs\Command=E:\edu\antivirus\anti\anti.exe
[AutoRun.alpha]
所有关键字的用法和[AutoRun]字段完全相同区别在于在基于RISC的光驱中,[AutoRun.alpha]优先级高于[AutoRun],也就是说如果同时设置了这两个字段,在基于RISC的光驱中,系统只识别[AutoRun.alpha]字段中的,[AutoRun]字段将被忽略.这个字段并不常用.
[DeviceInstall]
只有一个关建字DriverPath,用于指定驱动程序的搜索路径.Windows XP以上支持,一般用于驱动程序的自动安装,当你打开设备管理器,点更新驱动时,系统将自动搜索光盘以查找合适的驱动.如果没有这一字段,系统将全盘搜索.若有这一字段,但没有DriverPath关键字,则系统将不在此光盘中搜索驱动程序.
三.boot.ini
这是系统盘根目录下的一个文件,具有只读属性,修改前需先更改它的属性.该文件与开机时显示操作系统选择菜单有关,如果该文件丢失或配制错误将导致windows系统无法正常引导,所以修改前请一定要备份,以下为我装完XP系统后备份的boot.ini文件的内容.
复制内容到剪贴板
代码:
[boot loader]
timeout=30
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
[boot loader]
1,timeout
这个关键字指定开机时操作系统选择菜单的停留时间,单位为秒,当只有一个操作系统时,它的值将被忽略.
2,default
当超过timeout所指定的时间且你没有选择要进入的操作系统,将自动进入该值所指定的操作系统.该值必须是operating systems字段中已存在的关键字,否则将出错.
[operating systems]
这个字段下是所有操作系统的列表.上面的例子只有一个XP系统.所有只有一行.
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
说一下这个关键字的意思:
multi(0) 说明系统使用的是IDE,增强的IDE(EIDE)或增强的小型设备接口(ESDI)驱动器,或者没有内置BIOS的SCSI适配器.有的系统此处可能为 scsi(0)说明使用的是除上述以外的控制器.后面括号中的0表示第一个控制器(主控制器),如果有第二个,后面数字加1,即multi(1).
disk(0)表示使用的SCSI逻辑单元(LUN).它可以是独立的磁盘,但是大多数SCSI设置对每个SCSI ID只有一个 LUN,所以通常都是这个值.
rdisk(0)表示该操作系统位于第一个物理磁盘上.
partition(1)表该操作系统所有的磁盘分区,系统安装在C盘则为partition(1),若在D盘则为partition(2),后面的以此类推.
"Microsoft Windows XP Professional" /noexecute=optin /fastdetect
此处分两部分讲,关面双引号中的可以任意更改,它就是操作系统选择菜单所出现的名字.后面的是参数,参数一般不区分大小写.
/noexecute
该参数与数据执行保护(DEP)有关,其值为optin时表示开启,值为Optout时表示关闭.开启该项可以阻止某些恶意程序的执行,使恶意程序运行出错而退出.具体也可以到我的电脑,属性,高级,设置,数据执行保护处设置,如果你不知道DEP是什么,请单击DEP是如何工作的.
/fastdetect
系统启动时不检查串行口和并行口,可以加快系统的启动速度.
除上面两个参数之外,系统还支持很多其他参数.不要求掌握,大致了解就行.以下参数说明来自微软知识库文章(
http://support.microsoft.com/kb/170756/en-us/)及本人的理解.
/3GB
使得用户模式程序能够访问3GB的内存,正常情况下通常为2GB,只适用于各NT系统非家庭版的SP3版.
/basevideo
强制用标准640x480 16色VGA模式启动系统.当视频分辨率,刷新速率出错或相关驱动出错时可使用此选项.
/BAUDRATE=nnnn
设置波特率的调试端口.如果没有设置波特率,默认波特率是19200.若通过调制解调器远程调试正常速率,此值为9600.例如/BAUDRATE=9600.
/BOOTLOG
将系统日志写入%SystemRoot%\NTBTLOG.TXT,并非所有系统都支持.
/BURNMEMORY=nnnn
使系统在已知的内存上少使用指定的兆数,如果/burnmemory=128,则系统可使用的内存数将在原有基础上减少128M
/CRASHDEBUG
系统启动时,如果经常无故出错(一般是内核错误),这个参数就非常有用.
/DEBUG
在启动系统时调入调度器,它可以在任何时间激活,在错误可以再次出现时使用它比较合适
/DEBUGPORT=comx
指定用于调度的端口,其中的x就指端口号.
/HAL=<hal>
允许用户不使用默认的HAL.等号后的是一文件名,用于加载指定的内核.
/INTAFFINITY
设置多处理器HAL(HALMPS.DLL),使编号最大的处理器接收中断请求.如果不设置此选项,系统会使所有处理器接收中断请求.
/KERNEL=<kernel>
与上面的/HAL功能类似,但它是针对SMP中的内核而言的.例/KERNEL=ntkrnlmp.exe,指定的文件必须位于%systemroot%/system32目录中
/MAXMEM:n
指定系统可以使用的最大内存数.
/NODEBUG
禁用内核调试器,蓝屏时不显示相应信息.
/NOGUIBOOT
不加载VGA驱动程序,不显示启动过程和失败时的蓝屏信息.
/NOSERIALMICE=[COMx|COMx,y,z...]
在特定的COM中上禁止对串行鼠标的检测.
/NUMPROC=n
只允许前n个处理器工作
/ONECPU
在多处理器中只使用一个处理器
/PCILOCK
不让系统为PCI设置分配IO/IRQ资源,从而无法在windows中更改BIOS设置.
/SAFEBOOT
以安全模式启动
/SOS
在调入驱动程序名时显示它的名字,在因驱动问题而无法启动时使用,从而知道是哪个驱动导致的问题.
/WIN95
在装有三个系统DOS,Win9x和Windows NT的系统上,让NTLDR直接调用Win9x启动文件BOOTSECT.W40
/WIN95DOS
在装有三个系统DOS,Win9x和Windows NT的系统上,让NTLDR直接调用DOS启动文件BOOTSECT.DOS
/YEAR=
使用指定的年份,如果设置为/YEAR=2005,那现在的时间就是2005年,此参数只对NT4+SP4和W2K生效.
一般情况下不建议直接编辑boot.ini文件,除非你有足够的把握不出错,修改前请备份.一般使用如下两种方式修改其部分设置.
1.我的电脑,属性,高级,设置(第三个).在这里可以进行不少的设置了,或者点击编辑进行自定义设置.
2.开始,运行,输入msconfig,boot.ini,要使用哪些参数直接在下面,或高级中相应选项前打勾就行了,以防止出错.
以下是我目前的boot.ini文件的内容:
复制内容到剪贴板
代码:
[boot loader]
timeout=30
default=C:\PSALDR
[operating systems]
C:\PSALDR="microsoft windows xp professional"
C:\PSBLDR="microsoft windows xp professional 单一影子模式"
multi(0)disk(0)rdisk(0)partition(1)\windows="microsoft windows xp professional 完全影子模式" /fastdetect
c:\grldr=maxdos_5.0e 工具箱
c:\arldr=microsoft dos 7.1
不知大家装过影子系统2008没,装完后关键字default的值被改成了C:\PSBLDR,也就是说超时未选择操作系统的话,默认会进入单一影子模式,把它改成C:\PSALDR默认就会进入正常模式.
c:\grldr,c:\arldr,C:\PSBLDR等都是用于启动相应系统的文件,等号后面的可任意修改.
四.system.ini
曾经是一个非常重要的系统配制文件,早期的病毒或木马常修改这个文件达到开机就启动的目的,现在已经不多见了,但仍然有.NT系统中,几乎所有配制已集成到注册表中,因此现在这个文件的内容比较少了,但仍很有用,系统每次启动都会修改这个文件的内容,不信你可以查看其属性,修改时间.该文件位于%systemroot%/system.ini.也可以通过msconfig来修改..
该文件的配制是相关复杂的,这里只讲和病毒有关的字段及关键字.
[boot]字段的shell=Explorer.exe
注册表位置HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon,键名shell,正常值为Explorer.exe,不正常时可能为Explorer.exe,anti.exe
[386Enh],[mic],[drivers],[drivers32]等字段的driver=驱动程序文件路径.
与驱动有关的注册表路径如下:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\HardwareProfiles
五.Win.ini
和system.ini一样,是一个非常重要且相当复杂的配制文件,幸好,大多数配制已集成到注册表.这里也只讲与病毒加载有关的字段和关键字.
[windows]字段的load和run.
关键字load的注册表路径HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Windows,键名load.
关键字run的注册表路径同上,键名为run,正常情况这两个键并不存在或其值为空.
六.Wininit.ini
这个文件用于重启时修改或删除文件用的.有些正在运行中的文件是无法被修改或删除的,于是可以用这个文件的配制在下次开机时修改或删除(在这些文件没被加载前),修改或删除成功后,该文件消失,所以一般情况下是看不到这个文件的. 该文件的功能亦被集成到注册表中,注册表路径HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\FileRenameOperations
类型为REG_MULTI_SZ
不能直接编辑该处的键及值,通常是通过API函数MoveFileEx来实现的.
wininit.ini的[rename]字段
关键字是一个文件名,值也是一个文件名,重启时,系统将用值的文件替换关键字的文件,并把值的文件删除.
如果关键字所指定的文件不存为,则实际上是将值所指定的文件重命名为关键字所指定的文件.
如果关键字为nul,则实际上是将值所指定的文件删除.
如:C:\WINDOWS\explorer.exe=C:\WINDOWS\TASKMAN.EXE
文件名必须是完整路径.
七.AUTOEXEC.BAT
不属于配制文件,而是一上批处理文件,但也常被病毒利用,正常情况下该文件没有任何内容,大小为0字节.
这个文件用于存放系统启动时自动执行的命令(一个特殊的批处理文件).如果发现该文件的内容为一可执行文件名,请一定要注意了.
八.CONFIG.SYS
虽然扩展名为sys,但他实际上是一个文本文件(可以用记事本来打开),正常情况下也是空的.如果该文件被改动,应引起注意,特别是device=文件名等这样的配制,系统启动时将加载指定的驱动文件.这个文件就相当可疑.
以上是能和病毒扯上一些关系的配制文件.在NT内核系统中,大多数配制已集成进注册表,但配制文件仍然有效.