㈠启动文件夹:
Ⅰ.第一启动文件夹:
第一启动文件夹分类较多
1.位置:
C:\Documents and Settings\当前用户名\「开始」菜单\程序\启动
C:\Documents and Settings\All Users\「开始」菜单\程序\启动
C:\Documents and Settings\LocalService\「开始」菜单\程序\启动
C:\Documents and Settings\NetworkService\「开始」菜单\程序\启动
2.对应注册表位置:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders]
Startup=”C:\Documents and Settings\当前用户名\「开始」菜单\程序\启动”
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders]
Startup=”%USERPROFILE%\「开始」菜单\程序\启动”
[HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders]
Startup=”%USERPROFILE%\「开始」菜单\程序\启动”
[HKEY_LOCAL_MACHINE\software\microsoft\windows\currentversion\explorer\shell folders]
common startup=C:\Documents and Settings\All Users\「开始」菜单\程序\启动
[HKEY_LOCAL_MACHINE\software\microsoft\windows\currentversion\explorer\User Shell Folders]
common startup=%ALLUSERSPROFILE%\「开始」菜单\程序\启动
[HKEY_USERS\S-1-5-18\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\EXPLORER\User Shell Folders]
Startup=%USERPROFILE%\「开始」菜单\程序\启动
[HKEY_USERS\S-1-5-19\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\EXPLORER\User Shell Folders]
Startup=%USERPROFILE%\「开始」菜单\程序\启动
[HKEY_USERS\S-1-5-19\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\EXPLORER\shell folders]
Startup=C:\Documents and Settings\LocalService\「开始」菜单\程序\启动
[HKEY_USERS\S-1-5-20\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\EXPLORER\shell folders]
Startup=C:\Documents and Settings\NetworkService\「开始」菜单\程序\启动
[HKEY_USERS\S-1-5-20\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\EXPLORER\User Shell Folders]
Startup=%USERPROFILE%\「开始」菜单\程序\启动
[HKEY_USERS\S-1-5-21-1214440339-1078145449-1708537768-1005\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\EXPLORER\Shell Folders]
Startup=”C:\Documents and Settings\当前用户名\「开始」菜单\程序\启动”
[HKEY_USERS\S-1-5-21-1214440339-1078145449-1708537768-1005\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\EXPLORER\User Shell Folders]
Startup=%USERPROFILE%\「开始」菜单\程序\启动
Ⅱ.第二启动文件夹:
1.位置:
C:\WINDOWS\system32\config\systemprofile\「开始」菜单\程序\启动
2.对应的注册表位置:
[HKEY_USERS\.DEFAULT\SOFTWARE\WINDOWS\CURRENTVERSION\EXPLORER\Shell Folders]
Startup=”C:\WINDOWS\system32\config\systemprofile\「开始」菜单\程序\启动”
[HKEY_USERS\S-1-5-18\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\EXPLORER\Shell Folders]
Startup=C:\windows\system32\config\systemprofile\「开始」菜单\程序\启动
㈡文件启动:
Ⅰ.WIN.INI启动:
1.文件位置:
c:\windows\win.ini
2.启动位置(file.exe为要启动的文件名称):
[windows]
load=file.exe
run=file.exe
注意:load=与run=的区别在于:通过load=运行文件,文件会在后台运行(最小化);而通过run=来运行,则文件是在默认状态下被运行的。
Ⅱ.SYSTEM.INI启动:
1.文件位置:
c:\windows\system.ini
2.启动位置(file.exe为要启动的文件名称):
默认为:
[boot]
Shell=Explorer.exe
可启动文件后为:
[boot]
Shell=Explorer.exe file.exe
注意:
1.和WIN.INI文件不同的是,SYSTEM.INI的启动只能启动一个指定文件,不要把Shell=Explorer.exe file.exe换为Shell=file.exe,这样会使Windows瘫痪!
2. 这种启动方式提前于注册表启动,所以,如果想限制注册表中的文件的启动,可是使用这种方法。
Ⅳ.WINSTART.BAT启动:
系统自启动的批处理文件,主要作用是处理一些需要复制、删除的任务。
Ⅴ.AUTOEXEC.BAT启动:
系统自启动的批处理文件,主要作用是处理一些需要复制、删除的任务。
WinStart.BAT文件在某种意义上有和AUTOEXEC.BAT一样的作用。如果巧妙安排完全可以达到修改系统的目的!
Ⅵ.AutoRun.inf启动方式:
系统中的自启动引导文件,ROSE REPER 熊猫烧香 金猪报春等很多病毒都使用了此类启动方式,一般出现在光盘中,使光盘中的程序自运行,也用于设置光盘的盘幅的图标,文件也可用于任意文件夹中
Autorun.inf的内容通常是:
[AUTORUN]
OPEN=file.exe
ICON=icon.ico
OPEN中是插入光盘或者双击光盘盘符就会运行的可执行文件的名称。
ICON中是该光驱驱动器的图标文件。该文件可以是其他文件。
注意:
1.autorun.inf的属性被改为隐藏后仍可以正常使用。
2.autorun.inf中的路径对相对路径和绝对路径都是可以实现的。
3.如果没有OPEN项目,则系统不执行任何文件,而去执行下一个命令。
4.如果没有ICON项目,则该盘符的图标为原Windows盘符图标,但如果有ICON项却设置错误,或者所设置的文件没有图标,则系统会显示为默认的空白图标。
㈢注册表启动:
Ⅰ.常规注册表启动:
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run]
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce]
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices]
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce]
键名=要启动文件的路径
[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows]
load=
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon]
SHELL=
Userinit=
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon]
UIHost=
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellExecuteHooks]
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows]
AppInit_DLLs=
注意:
1.如果需要运行.dll文件,则需要特殊的命令行。
如:
Rundll32.exe C:\WINDOWS\FILE.DLL,Rundll32
2.解除这里相应的自启动项只需删除该键值即可,但注意不要删除如SystemTray、ScanRegistry等这样的系统键值。
3.如果只想不启动而保留键值,只需在该键值加入rem即可。如:
“rem C:\Windows\a.exe”
4.在注册表中的自启动项中没有这项:
[HKEY_CURRENT_USER \Software\Microsoft\Windows\CurrentVersion\RunServices]
5.Run和RunServices的区别在于:Run中的程序是在每次系统启动时被启动,RunServices则是会在每次登录系统时被启动。
Ⅱ.RunOnceEx启动(此部分主要是snaix的《Windows的自启动方式》原文):
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx]
语法为:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx
Flags = 0x0000000
Title = “Status Dialog Box Title”
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\Depend
0001 = “xxx1”
000X = “xxxx”
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\0001
Entry1 = “MyApp1.exe”
EntryX = “MyApp2.exe”
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\000x
…
注意:
1.“xxx1,xxxx”是一个动态链接库(DLL)或.OCX文件名(如My.ocx或My.dll)。
2.“0001,000x”是部分名字。可以是数字和文字。
3.“entry1,entryX”是指向一个要运行的程序文件的注册表串值。
键值的说明:
Flags是一个定位在RunOnceEx键用来激活/禁止的DWORD值,具体如下:
值 功能 功能定义
0x00000000 默认 所有功能被禁止
0x00000004 检查壳状况 打开壳的读写校验准备接受OLE命令
0x00000008 无报错对话 错误对话框不显示
0x00000010 创建错误报告文件 创建 C:\Windows\RunOnceEx.err 文件如果有错误出现
0x00000020 创建执行报告文件 创建一个有命令状态的C:\Windows\RunOnceEx.log文件
0x00000040 无例外限制 当注册DLL时不限制例外
0x00000080 无状态对话 当RunOnceEx运行时状态对话框不显示
㈣文件关联:
文件关联入口:
[HKEY_CLASSES_ROOT\.exe] @=exefile
[HKEY_CLASSES_ROOT\.exe] @=comfile
[HKEY_CLASSES_ROOT\.exe] @=batfile
[HKEY_CLASSES_ROOT\.exe] @=htafile
[HKEY_CLASSES_ROOT\.exe] @=piffile
……
[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″ %*
……
此类文件关联可在命令提示符下使用assoc和ftype修改文件关联值,例如,EXE文件关联,首先通过”assoc .exe=exefile”命令,重建文件关联入口,然后使用”ftype exefile=”%1″ %*”命令修复文件关联
㈤VxD启动:
位置[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD],该位置是系统启动VxD驱动文件放置的地址.
注意:不可以直接把一个EXE文件改名为VxD文件,需要另外进行编程,生成的VxD文件。
㈥服务启动:
位置:
[HKEY_LOCAL_MACHINE\SYSTEM\CONTROLSET001\SERVICES]
[HKEY_LOCAL_MACHINE\SYSTEM\CONTROLSET002\SERVICES]
[HKEY_LOCAL_MACHINE\SYSTEM\CURRENTCONTROLSET\SERVICES]
服务可通过系统自带的SERVICES.MSC进行设置
㈦屏幕保护启动方式(此部分主要是snaix的《Windows的自启动方式》原文):
Windows的屏幕保护程序是一个.scr文件。这是一个PE格式的可执行文件。如果把屏幕保护程序.scr更名为.exe的文件,则该程序仍然可以正常启动。类似的.exe文件更名为.scr文件也是一样可以被运行!
.scr文件默认存在于C:\Windows目录中,他的名字就是在“显示”属性中的“屏幕保护程序”中的名称。在C:\Windows目录下的所有*.scr文件都会被Windows的“屏幕保护程序”显示,而文件路径本身保存在System.ini中的SCRNSAVE.EXE=的这条中。有意思的是在SCRNSAVE.EXE=这条中,其规定的路径也包含了目录名称。即如果我想安装一个.scr文件时,譬如安装路径为D:\SCR\1.scr,而D:\SCR\这个目录中还有2.scr,则在这个目录中的所有.scr(1.scr,2.scr)文件都会被显示在“屏幕保护程序”设置中。如果屏幕保护程序设为“(无)”,则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,则系统只要闲置一分钟该文件就会被启动!
另外一个简单的破坏方式就是可以随机产生屏幕保护密码并写入相应文件的相应位置,定时间为1分钟,则系统只要闲置一分钟则会被被锁!(由于涉及问题并非自启动问题,所以不加以讨论。)
注意:由于SCANSAVE.EXE=这里还会定义.scr文件的路径,所以最好不要把要启动的文件放置在.scr文件较多的一些目录,否则容易引起怀疑。(Windows目录除外)
㈧计划任务启动方式:
Windows的计划任务是Windows的一个预置实现某些操作而使用的一个功能。但是如果利用这个功能也是能够实现自启动的目的的!由于很多电脑都会自动加载“计划任务”所以隐蔽性相对不错。
在Windows默认的情况下,计划任务是一个个保存在C:\Windows\Tasks\目录下的.job文件。.job文件里包括了启动方式、文件路径等一系列的信息。编制出或者使软件自己可以写出.job文件,则是关键。之后在相关地方写入标记启动即可。
㈧控制面板启动(此部分主要是snaix的《Windows的自启动方式》原文):
这是利用控制面板程序可以被类似DLL执行,从而达到启动目的。
在控制面板中,.cpl文件是控制面板的原文件。默认的这些文件都会被放置在/%WINDOWS%/SYSTEM/目录下的,如desk.cpl是桌面属性、inetcpl.cpl是Internet选项之类。但这些.cpl文件全都是PE格式文件,也就是说如果用户把一个可执行的类似DLL的.cpl文件放入%\Windows%\System\中,则在控制面板中可看到其图标,并可执行!
由于.cpl文件的特殊性,需要使用rundll32.exe来启动该文件。rundll32.exe是Windows用来调用动态连接库函数时所使用的文件,在运行中输入:
rundll32 shell32.dll,Control_RunDLL /%path%/desk.cpl,,X
其中shell32.dll为被调用的DLL文件,意思为调用shell32.dll中的Control_RunDLL来打开desk.cpl文件;/%path%/为.cpl文件的路径,默认为C:\Windows\System;最后的X为desk.cpl文件的页数:从0开始,0为第一页(如“显示属性”的“背景”),1为第二页(如“桌面属性”的“屏幕保护程序”),依此类推。
但如果照上面的方法做,则该文件会在控制面板中被显示。有两种方法可以不让其显示:
1. 不要把自己的.cpl文件放在C:\WINDOWS\SYSTEM中。因为默认的情况下Windows会加载的所有.cpl文件。如果想让其显示则打开C:\WINDOWS\下的Control.ini文件,在[MMCPL]中写入类似:
file.cpl=D:\path\file.cpl
的命令,从而达到显示的目的。
2. 当你看到Control.ini文件的时候一定可以看到在[MMCPL]上面的[don't load]。是的,如果把你的文件以file.cpl=no的格式写入到这里面,那么文件就不被加载了。反之恢复。
Ⅸ.驱动程序:
㈨插入代码:
将欲执行文件的代码插入到系统文件的文件头或文件尾部,然后在文件的头部建立一段引导代码使原程序正常运行,要执行的文件也可以被执行.熊猫烧香和金猪就使用了这项技术中的将文件插入所有可执行文件的头部,相当于程序程序捆绑,所以所有的文件都显示金猪或熊猫的图标.或是直接建立引导代码,引导独立文件执行
㈩开/关机脚本:
在开始菜单中的运行中输入 gpedit.msc打开组策略,打开”本地计算机”策略→计算机配置→WINDOWS设置→脚本(启动/关机)→启动/关机→添加→输入文件路径及参数
文件夹位置为:启动:c:\windows\system32\grouppolicy\machine\scripts\startup
关机:C:\WINDOWS\system32\GroupPolicy\Machine\Scripts\Shutdown
还有一个是”本地计算机”策略→用户配置→WINDOWS设置→脚本(启动/关机)→启动/关机→添加→输入文件路径及参数
文件夹位置为:
启动:C:\WINDOWS\system32\GroupPolicy\User\Scripts\Logon
关机:C:\WINDOWS\system32\GroupPolicy\User\Scripts\Logoff
(十二)钩子技术启动:
由于此类启动涉及编程方面的知识,这里不在细说了
(十二)以下是我设想的几种自运行方式:
Ⅰ.desktop.ini&folder.htt运行:
FOLDER.HTT中的代码如下:
DESKTOP.INI中的代码如下:
[ExtShellfolderViews]
Default={5984ffe0-28d4-11cf-ae66-08002b2e1262}
{5984ffe0-28d4-11cf-ae66-08002b2e1262}={}
[{5984ffe0-28d4-11cf-ae66-08002b2e1262}]
PersistMoniker=file://folder.htt
[.ShellClassInfo]
ConfirmFileOp=0
当进入含有这两个文件所在的文件夹时,FOLDER.HTT所引导的程序也将被执行,从而实现程序的自启动.
Ⅱ.IE错误页:
错误页存在于C:\windows\System32\shdoclc.dll上的dnserror.htm,可以使用ultraedit进行反编译,在dnserror.htm的代码里加入引导程序启动的代码,由于是HTML文件所以建议使用VBS或JAVASCRIPT编写引导脚本.
通过WINHEX反编译后找到dnserror.htm的代码是从000390B6开始到00039D63结束的,以下是修改后的部分代码:
……//省略
………..//由于代码过多且无须修改,故此处内容省略
当IE搜索出错时,将显示错误页,同时,错误页中的VBS程序也将被执行,实现其他程序的启动.