查看文章 |
Windows 中的启动项
2007-01-25 15:48
转自http://hi.baidu.com/umu618/blog/item/eecd3aadcaa9f9094b36d6e4.html 本篇比较全面地总结一下 Windows 里可以启动程序的地方,手动查毒的时候可以参考! 1、古老的 BAT 和 SYS 从 Win16 和 Win9X 时代遗留下来的,%BOOTDRV%\Autoexec.bat、%windir%\WinStart.bat、%windir%\DosStart.bat,没见过不稀奇,什么意思可以体会出来,不解释了。%BOOTDRV%\Config.sys 装载 16 位设备驱动用的,最常见的是 DOS 下要用光驱,都是在这个文件配制的。 2、古老的 INI 从 Win16 时代遗留下来的,%windir%\Win.ini(load\run)、%windir%\System.ini(shell)。 3、常规的“启动” 开始菜单-程序里那个,注意隐藏、系统属性的文件不会显示在菜单里。而且这个项是多用户的,也就是说这里显示的是“All Users”和当前用户的“启动”目录。一般系统装在 C 盘的话就是“C:\Documents and Settings\All Users\「开始」菜单\程序\启动”。检查这个启动项的时候,应该把所有用户都查看一下,包括 Default User 的。不过这些启动文件夹,是可以该位置的,它们都是由注册表决定的。HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellFolders 下的 Common Startup,HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders 和 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders 下的 Startup。 4、注册表中专门的“启动” HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run,对当前用户有效; HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Run,对默认用户有效,比如匿名用户、SYSTEM; HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run,对本机所有用户有效。 5、注册表中专门用来安装程序的“启动” 把上面的 Run 换成 RunOnce、RunOnceEx,也就是只运行一次,运行后系统就把这个值删除。这是给安装、更新程序用的,只需要运行一次。WinNT 系统可以用gpedit.msc 把这个项设置为忽略,在“计算机配制-管理模板-系统-登录”。 6、注册表中用来运行系统服务的“启动” 把3的 Run 换成 RunServices。这个在 Win98 下据说是把一般的程序当系统服务来运行,可以不出现在任务列表里,我试过把屏保程序放这里启动,结果出现的是屏保程序的设置界面,在 WinNT 下我就没用过这个项了。同理,还有 RunServicesOnce。 7、注册表中册组策略用的“启动” HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer\Run,这个项比较少人知道。 8、注册表中对 Win.ini 和 System.ini 的替代Win.ini 的 load 和 run 对应 HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows 下的 load 和 run。System.ini 的 shell 对应 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon 下的 Shell,另外这个下面还有 UIHost、userinit、VmApplet 也都可以启动程序。NT 有用到一个映射,可以研究一下 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\IniFileMapping 下的 system.ini 和 win.ini 两个子键。 9、注册表中全局 DLL “启动” HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows 下的 AppInit_DLLs。 10、Windows NT 开关机脚本 %windir%\system32\GroupPolicy\Machine\Scripts 下有两个目录,Startup 存放开机脚本,Shutdown 存放关机脚本。这个要配合注册表的HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\windows\System\Scripts,下面有 Startup、Shutdown 两个子键,再下面会有数字命名的键,对着研究就知道了。 11、Windows NT 系统服务 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 下。 12、文件关联 HKEY_CLASSES_ROOT 下,以前的冰河关联了 .txt 文件,如果没注意,杀了一个后,双击 .txt 文件,又中了。 13、CMD AutoRun(很少人知道) HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor 下的 AutoRun,在运行 cmd.exe 的时候,这里的命令会被执行。如果我们在这里写上 exit,则 cmd 一出现马上又关闭,应该用 cmd /d 来避免。建议如果是通过快捷方式运行的应该加上 /d 的参数,如果是通过“运行”运行的应该多打一下“ /d”,这样可以减少危险。 14、根目录下的 AutoRun.inf 在这个文件里可以定义驱动器的图标和右键菜单,还有双击默认执行的命令。不过可以关闭的,把HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer 下的 NoDriveTypeAutoRun 设置为 DWORD:ff 整个世界就清净了。 15、其他软件自定义的启动项 比如 OFFICE 的宏就可以在启动 Word 的时候执行,宏代码可以调用外部程序;QQ装皮肤用的是一个 .VBS 脚本程序…… 16、驱动 和 Win32 系统服务一样是在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 下,不过 Type = 1(服务一般是 20)。而且文件一般都放在 C:\WINDOWS\system32\drivers。驱动运行在 Ring0 的,服务虽然是 SYSTEM 身份运行,不过是在 Ring3,所以还是不可以直接访问硬件。 17、GINA DLL HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon 下的 GinaDLL,这个如果存在,一般是 Gina 木马,或者是一些指纹、虹膜验证的程序,比如是 IBM 笔记本有见过带指纹验证的,省去输入登录密码的麻烦。 |
最近读者: