Windows系统注册表初涉
概念
注册表是Microsoft Windows操作系统中的一个重要数据库,用于储存系统和应用程序的设置信息。
打开注册表编辑器
打开windows开始菜单的运行
,然后键入regedit
,便打开了Windows自带的注册表编辑器。
初步读懂注册表编辑器内容
1. 根键(HKEY)与主键
注册表左侧有五项(xp有六项)最大的文件夹为**根键 **,根键打开后的第一级文件夹目录都是主键,子键就是子文件夹,很好理解。
Paste_Image.png-
【HKEY_CLASSES_ROOT】。该根键包含有关OLE的信息,以便在系统工作过程中实现对各种文件和文档信息的访问。具体内容包括已注册的文件扩展名、文件类型、文件图标、从win.ini文件中引入的扩展名的数据等,此外还包括诸如“我的电脑”、“回收站”及“控制面板”等标志,该根键的数据适用于所有用户。
-
【HKEY_USERS】。该根键中包含了用户根据个人爱好所设置的诸如桌面、背景、开始菜单程序项、应用程序快捷键、显示字体及显示器节能设置等信息。其中的大部分设置都可以通过控制面板进行修改,有经验的用户也可以直接在注册表中对这些设置进行修改。
-
【HKEY_CURRENT_USER】。该根键中保存了当前登录用户的配置信息及登录信息,实际上它就是根键HKEY_USERS中.Default分支下的一部分内容。如果在HKEY_USERS.default分支下没有用户登录的其他内容,那么这两个根键所包含的内容是完全相同的。
-
【HKEY_LOCAL_MACHINE】。该根键包含了本地计算机(相对于网络环境而言)系统软件和硬件的全部信息。当系统硬件配置和软件设置发生变化时,该根键下的相关项也就发生相应的变化,其中的数据适合于所有用户。
-
【HKEY_CURRENT_CONFIG】。该根键包含所有连接到本计算机上的硬件的配置数据,这些数据会根据当前计算机连接的网络类型、硬件配置以及应用软件的安装的不同而不所变化。它实际上是指向HKEY_LOCAL_MACHINE\Config分支的指针,其下的主键及内容与HKEY_LOCAL_MACHINE\Config\0001分支下的主键和内容是完全相同的。
-
(【HKEY_DYN_DATA】。该根键包含了系统运行过程中的动态数据信息,比如系统性能和即特即用的动态信息等。此外,它还包含了那些需要更新和检索的数据。该根键实际上是指向根键HKEY_LOCAL_MACHINE的一个分支,所以在xp之后的系统上已不再出现,直接是HKEY_LOCAL_MACHINE。)
因为主键过多,我们就不多说了,稍后可能会挑几个要用到的提一下,具体大家可以参考这里的关于主键的说明(别吐槽,这是我千辛万苦能找到的唯一的注册表学习教程,大家如果能找到更好的一定要告诉我/(ㄒoㄒ)/~~)
2. 键值对
注册表大概的格式就是由 键 和 值项 ** 组成。键**就是那些分支的文件夹,而 值项 由名称、数据类型以及分配的值组成。一个键可以有一个或多个值,每个值的名称各不相同,如果一个值的名称为空,则该值为该键的默认值。
注册表的数据类型主要有以下四种:显示类型(在编辑器中)数据类型说明
3. reg文件书写
创建文本文档,即可开始写入
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\shell\cmd_here]
@="cmd here"
[HKEY_CLASSES_ROOT\Directory\shell\cmd_here\command]
@="cmd.exe /k cd %1"
第一行就是指定注册表编辑器格式,类似HTML的文档声明,2、4行是要创建的键,2、5是其对应的值。然后保存,记得后缀名改为.reg
然后双击即可注入此注册表。
应用
1. 设置应用打开文件夹
刚刚的语法格式我们示范了如何以cmd右键打开文件夹,但是如何在文件夹中不选中文件夹,直接右键菜单中打开此文件夹呢?
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\Background\shell\cmd_here]
@="cmd here"
[HKEY_CLASSES_ROOT\Directory\Background\shell\cmd_here\command]
@="cmd.exe /k cd %1"
这样写即可做到,有什么区别呢?我们可以看到这里创建键时是在主键Background中创建的,这意味着在文件夹背景中点击右键菜单会出现的应用扩展菜单。shell里创建键cmd_here,值表示在右键菜单中的名字,然后这里的子键command就表示会执行的命令,其中“/k”表示执行完后不关闭窗口“%1中%1”是“CD”命令的第一个(%1)参数(这里是路径)。不过为什么同样的格式会这样有不同的功能,这是系统自己的设置,毕竟注册表的前身就是Windows系统中的 ini 配置文件。我们只需遵循语法,注意所属目录是哪里的配置即可。
2. 镜像劫持
所谓的镜像劫持,就是在注册表的[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\ CurrentVersion\Image File Execution Options](IFEO,映像劫持,留给程序员调bug的)处新建一个以目标程序命名的项,例如22.exe。然后再创建一个子键"Debugger"="C:\WINDOWS\system32\drivers\33.exe"。以后只要用户双击 22.exe就会运行OSO的病毒文件33.exe,类似文件关联的效果。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\ CurrentVersion\Image File Execution Options]
"Debugger"="C:\WINDOWS\system32\drivers\33.exe"
但是现在的Windows系统因为权限问题,一般这样是不会成功将值写入注册表的,需要事先设置权限,然而,为了安全起见,谨慎修改写入注册表这些关键键的权限。