Windows系统注册表初涉

2016-11-27  本文已影响237人  零度冰华

概念


注册表是Microsoft Windows操作系统中的一个重要数据库,用于储存系统和应用程序的设置信息。

打开注册表编辑器


打开windows开始菜单的运行,然后键入regedit,便打开了Windows自带的注册表编辑器。

初步读懂注册表编辑器内容


1. 根键(HKEY)与主键

注册表左侧有五项(xp有六项)最大的文件夹为**根键 **,根键打开后的第一级文件夹目录都是主键,子键就是子文件夹,很好理解。

Paste_Image.png

因为主键过多,我们就不多说了,稍后可能会挑几个要用到的提一下,具体大家可以参考这里的关于主键的说明(别吐槽,这是我千辛万苦能找到的唯一的注册表学习教程,大家如果能找到更好的一定要告诉我/(ㄒ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系统因为权限问题,一般这样是不会成功将值写入注册表的,需要事先设置权限,然而,为了安全起见,谨慎修改写入注册表这些关键键的权限。

上一篇下一篇

猜你喜欢

热点阅读