本文简要介绍了Windows的注册表以及自启动管理。
注册表
注册表是控制计算机硬件和软件的一整套数据。如果对注册表熟练了解,完全可以通过注册表来控制计算机。对于普通用户来说,很难完全了解和彻底掌握注册表,我们只需对重要的注册表键进行控制即可:如自启动,系统设置,IE键,winlogon,文件关联,网络设置,高危键(映像劫持,安全模式,禁用注册表及硬盘等)。这些比较重要的键值经常被病毒进行利用。
Windows注册表是帮助Windows控制硬件、软件、用户环境和 Windows界面的一套数据文件,注册表包含在Windows目录下两个文件system.dat和user.dat里,还有它们的备份 system.da0和user.da0。通过Windows目录下的regedit.exe程序可以存取注册表数据库。在以前,在windows的更早版本(在Win95以前),这些功能是靠win.ini,system.ini和其他和应用程序有关联的.ini文件来实现的.
WINDOWS的注册表有五大根键,相当于一个硬盘被分成了五个分区。
根键名 | 简要说明 |
---|---|
HKEY_CLASSES_ROOT | 该主根键是从HKEY_LOCAL_MACHINE\software\classes映射复制的。它包含启动应用程序所需的全部信息,包括扩展名,应用程序与文档之间的关系,驱动程序名,DDE 和OLE 信息,类ID 编号和应用程序与文档的图标等。 |
HKEY_CURRENT_USER | 该主根键包含本地工作站中存放的当前登录的用户信息:包括用户登录用户名和暂存的密码以及环境变量,桌面设置等配置信息。用户登录操作系统时,其信息从HKEY_USERS中相应的项拷贝到HKEY_CURRENT_USER中。 |
HKEY_LOCAL_MACHINE | 该主根键存放本地计算机硬件数据与软件数据,此根键下的子关键字包括在SYSTEM.DAT中,用来提供HKEY_LOCAL_MACHINE所需的信息。该根键中的许多子键与System.ini文件中设置项类似。 |
HKEY_USERS | 该主根键保存了存放在本地计算机口令列表中的所有用户标识和密码列表。每个用户的预配置信息都存储在HKEY_USERS根键中。HKEY_USERS是远程计算机中访问的根键之一。 |
HKEY_CURRENT_CONFIG | 该主根键存放着定义当前用户桌面配置(如显示器等)的数据,最后使用的文档列表(MRU)和其他有关当前用户的操作系统中文版的安装的信息。 |
注册表数据的主要五种类型是
名称 | 类型说明 |
---|---|
REG_SZ | 字符串类型,文本字符串 |
REG_BINARY | 二进制类型,不定长度的二进制值,以16进制形式显示 |
REG_DWORD | 双字,32 位的二进制值,显示为 8 位的十六进制值 |
REG_MULTI_SZ | 多字符串,有多个文本值的字符串,字符串间用 nul 分隔、结尾两个 nul |
REG_EXPAND_SZ | 可扩展字符串,包含环境变量的字符串 |
主要的时间格式:
FILETIME
:64位值,代表间隔多少个单位为100纳秒的时间(从UTC1601年1月1日开始)Unix Time
:32位值,代表间隔多少秒(从UTC1970年1月1日开始)。DOS Date/Time
:两个16位值,详细记录了当地时间和年月日。
注册表的存储:
注册表在Windows NT
操作系统中被分为多个文件存储,这些文件被称为Registry Hives
,每一个文件被称为一个配置单元。定位到C:\Windows\System32\config
可以看到这些文件。
主要的配置单元有:
SYSTEM
:对应的注册表分支为HKEY_LOCAL_MACHINE\SYSTEM
,对应的存储文件是\Windows\System32\config\SYSTEM
,其作用是存储计算机硬件和系统的信息。NTUSER.DAT
:对应的注册表分支是HKEY_CURRENT_USER
,存储在用户目录下,与其他注册表文件是分开的,主要用于存储用户的配置信息。SAM
:分支是HKEY_LOCAL_MACHINE\SAM
,存储在C:\Windows\System32\config\SAM
文件中,保存了用户的密码信息。SECURITY
:对应的分支HKEY_LOCAL_MACHINE\SECURITY
,存储在C:\Windows\System32\config\SECURITY
文件中,保存了安全性设置信息。SOFTWARE
:分支是HKEY_LOCAL_MACHINE\SOFTWARE
,文件存储在C:\Windows\System32\config\SOFTWARE
中,保存安装软件的信息。
为了防止注册表出错和损坏,
Registry hives
还包括注册的事务日志文件和注册表的备份文件。事务日志文件名与注册表文件一致,且在同一个路径中,只是后缀不同。事务日志文件以.LOG
为后缀,多个日志后缀会显示LOG1
、LOG2
这样。(如果要查看这些日志文件,需要打开文件夹选项,取消勾选“隐藏受保护的操作系统文件”)
自启动
用户自启动路径
1
%HOMEPATH%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
系统自启动路径
1
%programdata%\Microsoft\Windows\Start Menu\Programs\Startup #也可%AllUsersProfile%
系统配置文件
WIN.INI
启动(实际测试无效1
2
3[windows]
load=xxx.exe[这种方法文件会在后台运行]
run=xxx.exe[这种方法文件会在默认状态下被运行]系统配置文件
SYSTEM.INI
启动(实际测试无效1
2[boot]
Shell=Explorer.exe xxx.exe注册表启动
自启动文件对应的注册表路径
1
2
3
4
5
6%HOMEPATH%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
对应的注册表位置:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ShellFolders]
Startup=\”%Directory%\”
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User ShellFolders] Startup=\”%Directory%\”
其中“%Directory%”为启动文件夹位置。RunServicesOnce注册键
1
2
3
4
5RunServicesOnce注册键用来启动服务程序,启动时间在用户登录之前,而且先于其他通过注册键启动的程序。
RunServicesOnce注册键的位置是:(实测不一定都有)
HKEY_CURRENT_USER\Software\Microsoft\Windows\ CurrentVersion\RunServicesOnce,
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesOnce。RunServices注册键
1
2
3
4
5RunServices注册键指定的程序紧接RunServicesOnce指定的程序之后运行,但两者都在用户登录之前。
RunServices的位置是:(实测不一定都有)
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\ CurrentVersion\RunServicesRunOnce注册键
1
2
3
4
5
6
7安装程序通常用RunOnce键自动运行程序。
它的位置在:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce。
ps:HKEY_LOCAL_MACHINE下面的RunOnce键会在用户登录之后立即运行程序,运行时机在其他Run键指定的程序之前。HKEY_CURRENT_USER下面的RunOnce键在操作系统处理其他Run键以及“启动”文件夹的内容之后运行。Run键
1
2
3
4
5
6
7Run是自动运行程序最常用的注册键。
它的位置在:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run。
ps:HKEY_CURRENT_USER下面的Run键紧接HKEY_LOCAL_MACHINE下面的Run键运行,但两者都在处理“启动”文件夹之前。其他键(未测试,仅供参考
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\
HKEY_LOCAL_MACHINE\System\ControlSet001\Session Manager\BootExecute
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\BootExecute
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Group Policy Objects\本地
User\Software\Microsoft\Windows\CurrentVersion\Policies\ Explorer\Run
HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects\
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce\
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices\
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce\Setup\
HKEY_USERS\.Default\Software\Microsoft\Windows\CurrentVersion\Run\
HKEY_USERS\.Default\Software\Microsoft\Windows\CurrentVersion\RunOnce\
HKEY_LOCAL_MACHINE\Software\Microsoft\Active Setup\Installed Components\
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\
HKEY_CURRENT_USER\Control Panel\Desktop
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows\run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\ShellServiceObjectDelayLoad\
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows\load
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\run\
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\run\
HKLM\SOFTWARE\Classes\Protocols\Filter
HKLM\SOFTWARE\Classes\Protocols\Handler
HKLM\SOFTWARE\Microsoft\Active Setup\Installed Components
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\SharedTaskScheduler
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\ShellServiceObjectDelayLoad
HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\ShellExecuteHooks
HKLM\Software\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved
HKLM\Software\Classes\Folder\Shellex\ColumnHandlers
HKCU\Software\Microsoft\Internet Explorer\UrlSearchHooks
HKLM\Software\Microsoft\Internet Explorer\Toolbar
HKLM\Software\Microsoft\Internet Explorer\Extensions
HKLM\System\CurrentControlSet\Control\Session Manager\BootExecute
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
HKLM\System\CurrentControlSet\Control\Session Manager\KnownDlls
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\UIHost
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify
HKCU\Control Panel\Desktop\Scrnsave.exe
HKLM\System\CurrentControlSet\Services\WinSock\Parameters\Protocol_Catalog9
HKLM\SYSTEM\CurrentControlSet\Control\Print\Monitors
HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Authentication Packages
HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Notification Packages
HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Security PackagesAutorun.inf的使用(微软已废除,仅做了解
1
2
3
4
5
6
7
8
9
10
11
12
13Autorun.inf的内容通常是:
[AUTORUN]
OPEN=文件名.exe
ICON=icon(图标文件).ico
1.如一个木马,为xxx.exe.那么Autorun.inf则可以如下:
OPEN=Windows\xxx.exe
ICON=xxx.exe
这时,每次双击C盘的时候就可以运行木马xxx.exe.
2.如把 Autorun.inf放入C盘根目录里,则里面内容为:
OPEN=D:\xxx.exe
ICON=xxx.exe
这时, 双击C盘则可以运行
D盘的xxx.exe通过注册服务来自启动
1
2
3
4
5sc create 名字 binpath=需要执行的文件 type=own start=auto displayname=名字
sc start 名字
sc stop 名字
sc delete 名字如果你的exe不符合服务的规范,启动有可能会失败。可以采用instsrv+srvany这两个工具配合使用,可以将任何的exe应用程序作为window服务运行。