今天是: 2024年4月19日  星期五 语言: | 设为主页 加入收藏 
 
  ● 最 新 信 息
   “未雨绸缪”方能“防患于未然”—...
   “弘正气、树清风、促清廉”-——...
   “开门红,开门安”:公司运行维护...
   公司实现2024年首月发电量“开门红...
   把好“年末关”,过好“平安年”—...
   立足“四新”促实践 提能增效强根...
   忆峥嵘岁月,凝聚奋进力量——公司...
   “学新,研新,悟新” 促实践——...
   公司乒乓球队员参加”湘水杯”职工...
   公司组织开展“对标一流”学习调研.
  ● 热 点 排 行
   安全知识试题集
   发电机定子绕组故障分析及处理措施.
   电能质量改善效果及经济效益分析.
   安全教育与培训制度
   南津渡水电站设备评级办法及标准.
   运行车间举行岗位技能竞赛
   前池检修闸门止水密封改造项目获站...
   运行车间举办操作票填写竞赛
   南津渡水电站远动设备常见故障及分...
   书记站长基层调研----运行篇.
  ● 部 门 主 页
· 党群综合部 · 运行维护部
· 水库工程部 · 经营发展部
· 南津渡工程部
  当前位置:首页 >> 部门动态 >> 运行维护部 >> 南电科技与管理 >> 正文  ☆ 打印本页    ☆ 收藏本页   
Windows的自启动方式
文章来源:湖南省南津渡水电站  添加人:生产技术部  浏览次数:4978  添加时间:2004/11/3 9:02:56
    

 
 
湖南省南津渡水电站      李国勇
 
前言:
有时候人们往往会为了一个程序的启动而头痛,因为一些用户往往不知道那些文件是如何启动的。所以经常会有些没用的东西挂在系统上占用资源。Windows的自启动方式其实有许多方式。除了一些常见的启动方式之外,还有一些非常隐蔽的可用来启动文件的方式。本文总结如下,虽然不是全部,但我想应该会对大家有所帮助。文章全部以系统默认的状态为准,以供研究。
 
一.自启动目录:
1. 当前用户专有的启动目录:
这是最基本、最常用的Windows启动方式,主要用于启动一些应用软件的自启动项目,如Office的快捷菜单。一般用户希望启动时所要启动的文件也可以通过这里启动,只需把所需文件或其快捷方式放入文件夹中即可。
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders]
Startup="%Directory%"
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders]
Startup="%Directory%"
其中“%Directory%”为启动文件夹位置:
C:\windows\start menu\programs\启动(win9x、winme)
C:\Documents and Settings\<用户名字>\「开始」菜单\程序\启动 (win2k、winxp)
在开始菜单的“启动”文件夹是可更改的,如果用户更改了启动文件夹,则以上注册表的键值均会改变为相应的名称。
2. 对所有用户有效的启动目录:
Windows还有另外一个自启动目录,而且很明显但却经常被人们忽略的一个。
该路径位于:
C:\WINDOWS\All Users\Start Menu\Programs\启动(win9x、winme)
C:\Documents and Settings\ All Users \「开始」菜单\程序\启动 (win2k、winxp)
对应的注册表位置:
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\explorer\User Shell Folders]
"Common Startup"="%Directory%"
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\explorer\Shell Folders]
"Common Startup"="%Directory%"
这个目录的使用方法和当前用户专有的启动目录是完全一样的。值得注意的是:该目录在开始菜单的“启动”目录中是完全不能被看见的。而伴随着每次启动,该目录下的非隐藏文件也会随之启动!另外,在Msconfig中可以看到在这个目录下要启动的文件。
 
二.系统配置文件启动:
1.WIN.INI启动:
启动位置(file.exe为要启动的文件名称):
[windows]
load=file.exe
run=file.exe
注意:load=与run=的区别在于:通过load=运行文件,文件会在后台运行(最小化);而通过run=来运行,则文件是在默认状态下被运行的。
2.SYSTEM.INI启动:
启动位置(file.exe为要启动的文件名称):
默认为:
[boot]
Shell=Explorer.exe
可启动文件后为:
[boot]
Shell=Explorer.exe file.exe
注意:
⑴. 和WIN.INI文件不同的是,SYSTEM.INI的启动只能启动一个指定文件,不要把Shell=Explorer.exe file.exe换为Shell=file.exe,这样会使Windows瘫痪!
⑵. 这种启动方式提前于注册表启动,所以,如果想限制注册表中的文件的启动,可是使用这种方法。
3.WININIT.INI启动:
在注册表中的位置:HKEY_LOCAL_MACHINE\SOFTWARE\Microsof\tWindowsNT\CurrentVersion\WinlogonUserinit
这里也能够使系统启动时自动初始化程序。通常该注册键下面有一个userinit.exe,但这个键允许指定用逗号分隔的多个程序,例如“userinit.exeOSA.exe”(不含引号)。
由于在Windows下,许多的可执行文件和驱动文件是被执行到内存中受到系统保护的。所以在Windows的正常状态下更改这些文件就成了问题,因此出现了Wininit.ini这个文件来帮助系统做这件事情。它会在系统装载Windows之前让系统执行一些命令,包括复制,删除,重命名等,以完成更新文件的目的。Wininit.ini文件存在于Windows目录下,但在一般时候我们在C:\Windows目录下找不到这个文件,只能找到它的exe程序Wininit.exe。原因就是Wininit.ini在每次被系统执行完它其中的命令时就会被系统自动删除,直到再次出现新的Wininit.ini文件……之后再被删除。
注意:⑴.由于Wininit.ini文件处理的文件是在Windows启动以前处理的,所以不支持长文件名。
⑵.以上的文件复制、删除、重命名等均是不提示用户的情况下执行的。
4.WINSTART.BAT启动:
这是一个系统自启动的批处理文件,主要作用是处理一些需要复制、删除的任务。譬如有些软件会在安装或卸载完之后要求重新启动,就可以利用这个复制和删除一些文件来达到完成任务的目的。
5.AUTOEXEC.BAT启动:
这个就没的说了,应该是用户再熟悉不过的系统文件之一了。每次重新启动系统时在DOS下启动。恶意的程序往往会利用这个文件做一些辅助的措施。
 
三.注册表启动:
注册表中的启动应该是被使用最频繁的启动方式,但这样的方式也有一些隐蔽性较高的方法,大致有四种。
1.常规启动:
其中\%path%\为任意路径,file.exe为要运行的程序。
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices]
"Anything"="\%path%\file.exe"
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce]
"Anything"="\%path%\file.exe"
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run]
"Anything"="\%path%\file.exe"
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce]
"Anything"="\%path%\file.exe"
 
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
"Whatever"="c:\runfolder\program.exe"
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce]
"Whatever"="c:\runfolder\program.exe"
注意:⑴.如果需要运行.dll文件,则需要特殊的命令行。如:
Rundll32.exe C:\WINDOWS\FILE.DLLRundll32
⑵.解除这里相应的自启动项只需删除该键值即可,但注意不要删除如SystemTray、ScanRegistry等这样的系统键值。
⑶.如果只想不启动而保留键值,只需在该键值加入rem即可。如:“rem C:\Windows\a.exe”
⑷.在注册表中的自启动项中没有这项:
[HKEY_CURRENT_USER \Software\Microsoft\Windows\CurrentVersion\RunServices]
⑸.Run和RunServices的区别在于:Run中的程序是在每次系统启动时被启动,RunServices则是会在每次登录系统时被启动。
2.特殊启动1:
在注册表中除了上述的普通的启动方式以外,还可以利用一些特殊的方式达到启动的目的:
[HKEY_CLASSES_ROOT\exefile\shell\open\command] @="%1" %*
[HKEY_CLASSES_ROOT\comfile\shell\open\command] @="%1" %*
[HKEY_CLASSES_ROOT\batfile\shell\open\command] @="%1" %*
[HKEY_CLASSES_ROOT\htafile\shell\open\command] @="%1" %*
[HKEY_CLASSES_ROOT\piffile\shell\open\command] @="%1" %*
[HKEY_LOCAL_MACHINE\Software\CLASSES\batfile\shell\open\command] @="%1" %*
[HKEY_LOCAL_MACHINE\Software\CLASSES\comfile\shell\open\command] @="%1" %*
[HKEY_LOCAL_MACHINE\Software\CLASSES\exefile\shell\open\command] @="%1" %*
[HKEY_LOCAL_MACHINE\Software\CLASSES\htafile\shell\open\command] @= "%1" %*
[HKEY_LOCAL_MACHINE\Software\CLASSES\piffile\shell\open\command] @="%1" %*
其实从注册表的路径上也许就隐约可以看出,这些都是一些经常被执行的可执行文件的键值。往往有些木马是可以更改这些键值从而达到加载的目的:
如果我把“”%1”%*”改为“file.exe”%1”%*”则文件file.exe就会在每次执行某一个类型的文件(要看改的是哪一个文件类型)的时候被执行!
当然,可以被更改的不一定只是可执行文件,譬如冰河就利用了TXT文件的键值:
[HKEY_CLASSES_ROOT\txtfile\shell\open\command]实现木马的一种启动方式。
3.特殊启动2:
在注册表中:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\ 的位置上有这样的地址。该地址是系统启动VxD驱动文件放置的地址,就像PrettyPark这个蠕虫一样,可以建立一个主键之后把VxD文件添加到注册表中在这里。
4.特殊启动3:Load注册键
介绍该注册键的资料不多,实际上它也能够自动启动程序。位置:
HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\ CurrentVersion\Windows\load。
四.其他启动方式:
1.C:\Explorer.exe启动方式:
这是一种特殊的启动方式,很少有人知道。
在Win9X下,由于SYSTEM.INI只指定了Windows的外壳文件EXPLORER.EXE的名称,而并没有指定绝对路径,所以Win9X会搜索EXPLORER.EXE文件。
搜索顺序如下:
⑴. 搜索当前目录。
⑵. 如果没有搜索到EXPLORER.EXE则系统会获取
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\Path]的信息获得相对路径。
⑶. 如果还是没有文件系统则会获取[HKEY_CURRENT_USER\Environment\Path]的信息获得相对路径。
其中:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\Path]和[HKEY_CURRENT_USER\Environment\Path]所保存的相对路径的键值为:“%SystemRoot%\System32;%SystemRoot%”和空。
此时,如果把一个名为EXPLORER.EXE的文件放到系统根目录下,这样在每次启动的时候系统就会自动先启动根目录下的EXPLORER.EXE而不启动Windows目录下的EXPLORER.EXE了。
在WinNT系列下,WindowsNT/Windows2000更加注意了EXPLORER.EXE的文件名放置的位置,把系统启动时要使用的外壳文件(EXPLORER.EXE)的名称放到了:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\Shell] 这个位置。作为默认这个位置是不存在的,默认为是Explorer.exe。
注意:
一定要确定根目录下的EXPLORER.EXE要能启动Windows目录下的EXPLORER.EXE,否则会导致Windows无法启动!
在Windows 2000 SP2中微软已经更改了这一方式。
2.屏幕保护启动方式:
Windows的屏幕保护程序是一个.scr文件。这是一个PE格式的可执行文件。如果把屏幕保护程序.scr更名为.exe的文件,则该程序仍然可以正常启动。类似的.exe文件更名为.scr文件也是一样可以被运行!
.scr文件默认存在于C:\Windows目录中,他的名字就是在“显示”属性中的“屏幕保护程序”中的名称。在C:\Windows目录下的所有*.scr文件都会被Windows的“屏幕保护程序”显示,而文件路径本身保存在System.ini中的SCRNSAVE.EXE=的这条中。有意思的是在SCRNSAVE.EXE=这条中,其规定的路径也包含了目录名称。
屏幕保护程序的启动时间保存在注册表中的这个位置上:
HKEY_USERS\.DEFAULT\Control Panel\desktop\ScreenSaveTimeOut
时间单位为秒,不过虽然是秒,可启动时间却为分,即从60秒开始记录,如果记录时间小于60秒,则自动定为1分钟。
屏幕保护是否设置密码的键值为:
HKEY_USERS\.DEFAULT\Control Panel\desktop\ScreenSaveUsePassword
有密码则值为1没有密码则值为0。
由此可见,如果有人把自己所作的.exe程序更名为.scr的程序,并使程序能够在SYSTEM.INI中添加“SCANSAVE.EXE=/%Path%”f/ile.scr”(/%Path%/file.scr为所需要设置的文件的路径和文件名,如C:\Program files\trojan.scr),修改注册表中的HKEY_USERS\.DEFAULT\Control Panel\desktop\ScreenSaveTimeOut,定时间为60,则系统只要闲置一分钟该文件就会被启动!
注意:由于SCANSAVE.EXE=这里还会定义.scr文件的路径,所以最好不要把要启动的文件放置在.scr文件较多的一些目录,否则容易引起怀疑。(Windows目录除外)
3.依附启动:
这类启动方式已经有几分类似病毒了。这种方法是利用病毒的传染机制把要启动的EXE文件附着在另外的一个和多个EXE文件上,从而达到启动这个EXE文件就可以启动要启动的文件的目的。
4.计划任务启动方式:
Windows的计划任务是Windows的一个预置实现某些操作而使用的一个功能。但是如果利用这个功能也是能够实现自启动的目的的!由于很多电脑都会自动加载“计划任务”所以隐蔽性相对不错。
在Windows默认的情况下,计划任务是一个个保存在C:\Windows\Tasks\目录下的.job文件。.job文件里包括了启动方式、文件路径等一系列的信息。编制出或者使软件自己可以写出.job文件,则是关键。之后在相关地方写入标记启动即可。
5.AutoRun.inf启动方式:
Autorun.inf这个标识也许大家都见过。是的,这个最常出现在光盘中,用于光盘自启动。每次把光盘放入光驱中的时候,系统会通过这个文件来决定是否自动启动光盘。但是有没有想过,这个文件也可以用来自启动一些文件!
Autorun.inf的内容通常是:
[AUTORUN]
OPEN=file.exe
ICON=icon.ico
 
OPEN中是插入光盘或者双击光盘盘符就会运行的可执行文件的名称。
ICON中是该光驱驱动器的图标文件。该文件可以是其他文件。如:
[AUTORUN]
OPEN=file.exe
ICON=icon.exe2
其中icon.exe是一个有图标文件的可执行文件,“2”则是该文件中的第3个图标。(“0”是第一个图标,无数字则默认为第一个图标)。
最关键的是该Autorun.inf文件是可以被用在硬盘的驱动器上的。也就是说,如果把光盘上的所有文件及目录原封不动的复制到某一硬盘的根目录下,则双击盘符会出现自动运行文件!
五.自动启动相关:
1.代启动:
这种启动方式其实只是一个方法的问题。即可以用启动一个正常文件来启动另一个文件,SubSeven就用过启动Windos.exe从而启动SubSeven的Sever文件的方法。
2.Start启动:
在“运行“中或“MS-DOS”方式中输入start回车,则会显示
Runs a Windows program or an MS-DOS program.
 
START [options] program [arg...]
START [options] document.ext
 
/m[inimized] Run the new program minimized (in the background).
/max[imized] Run the new program maximized (in the foreground).
/r[estored] Run the new program restored (in the foreground). [default]
/w[ait] Does not return until the other program exits.
如果要启动的程序配合这个命令,则可以更加隐蔽,如:start/m file.exe。
3.控制面板启动:
这是利用控制面板程序可以被类似DLL执行,从而达到启动目的。在控制面板中,.cpl文件是控制面板的原文件。默认的这些文件都会被放置在/%WINDOWS%/SYSTEM/目录下的,如desk.cpl是桌面属性、inetcpl.cpl是Internet选项之类。但这些.cpl文件全都是PE格式文件,也就是说如果用户把一个可执行的类似DLL的.cpl文件放入%\Windows%\System\中,则在控制面板中可看到其图标,并可执行!
由于.cpl文件的特殊性,需要使用rundll32.exe来启动该文件。rundll32.exe是Windows用来调用动态连接库函数时所使用的文件,在运行中输入:
rundll32 shell32.dllControl_RunDLL /%path%/desk.cplX
其中shell32.dll为被调用的DLL文件,意思为调用shell32.dll中的Control_RunDLL来打开desk.cpl文件;/%path%/为.cpl文件的路径,默认为C:\Windows\System;最后的X为desk.cpl文件的页数:从0开始,0为第一页(如“显示属性”的“背景”),1为第二页(如“桌面属性”的“屏幕保护程序”),依此类推。
但如果照上面的方法做,则该文件会在控制面板中被显示。有两种方法可以不让其显示:
⑴. 不要把自己的.cpl文件放在C:\WINDOWS\SYSTEM中。因为默认的情况下Windows会加载的所有.cpl文件。如果想让其显示则打开C:\WINDOWS\下的Control.ini文件,在[MMCPL]中写入类似:
file.cpl=D:\path\file.cpl 的命令,从而达到显示的目的。
⑵. 当你看到Control.ini文件的时候一定可以看到在[MMCPL]上面的[dont load]。是的,如果把你的文件以file.cpl=no的格式写入到这里面,那么文件就不被加载了。反之恢复。
4.通过服务实现自启动(仅在WINDOWS NT/2000/XP)
    要把应用程序添加为服务,需要两个小软件:Instsrv.exe和Srvany.exe。我们兴个例:把OE作为一个服务添加进WINDOWS XP操作系统中,并把这个服务命名为:Mail。
    把这两个程序保存在C盘根目录下,打开命令窗口,输入:c:\instsrv.exe Mail c:\srvany.exe,然后回车。打开注册表编辑器,在:HKLM\SYSTEM\CURRENTCONTROLSET\SERVICES下找到Mail,新建一个键:Parameters,点击Parameters,再建一个子键:Application,数据类型为:REG_SZ,数值为OE这个程序所在位置。打开服务窗口,找到Mail服务并将它的运行方式设置为“自动”,这样,机器每次重启时,OE这个程序都能自动运行了。
最后:
Windows的自启动方式有很多样式。这是Windows系统的一部分。一个隐蔽而又很少有人知道的自启动方式是远程监控软件成为一个优秀的软件的必要的条件。对于普通用户来说,了解这些信息也是非常必要的。文中提到的一些自启动方法有的很普通,有的则很少有人知道,有些方式甚至有可能是第一次被写出来。其中的许多方式笔者加入了自己的想法,使一些方式虽然普通但却很隐蔽。其中所提的自启动方式全部在Windows98或提到的相应的系统中默认测试通过。对Windows ME 、Windows2000和Windows XP只有部分适用。

湖南省南津渡水力发电有限公司 版权所有 Copyright © 2009 nanjindu.com Inc All Rights Reserved.
主办:南津渡公司 技术支持:南津渡公司信息中心 地址:湖南省永州市零陵区沙沟湾1号
邮编:425100 联系电话:0746-6318317
    湘ICP备13000990号网站建设:南津渡公司